今天加上tensorflow(keras)的深度神经网络模型。
若是预测5天后的涨跌:训练集能到74.6%,测试集54.3%,比1天的好。
若是10天的收益率,训练集75.5%,测试集是57.6%。
预测20天的收益率,训练集是84.6%,测试集是59.7%。
我修改了因子周期,基本也是这个规律。就是:“明天的涨跌很难预测,但一个月后的,准确率还是比较高”的。更远的,可能就很容易出现过拟合。(训练集拟合得特别好,但测试集还不如掷硬币)
再做一组实验,仅使用最原始的OHLCV数据:
预测20天后的收益率,训练集70.8%,测试集62.4%。
量化的好处之一就是做实验,所以,我“人肉”做了不少实验。
把因子简化到只有一个“收盘价”,相当于用历史收盘价序列,测试未来20天涨跌,测试集准确率还是63%。
我一狠心,使用随机序列测试,你猜怎么着,准备率仍然高达49%。。。
然后在收盘价的基础上,添加volume,准确率基本没变化,若是添加其他 价量因子,比如roc_20,则准确率会下降。。。
使用tensorflow(keras)实现DNN,来看看效果:
class TfModel(ModelBase): def create_model(self, dim, hl=1, hu=128, optimizer=Adam(lr=0.001)): model = Sequential() model.add(Dense(hu, input_dim=dim, activation='relu')) for _ in range(hl): model.add(Dense(hu, activation='relu')) model.add(Dense(1, activation='sigmoid')) model.compile(loss='binary_crossentropy', optimizer=optimizer, metrics=['accuracy']) return model def train(self, df_train, df_test, label='label'): cols = list(df_train.columns).copy() cols.remove(label) df_train.dropna(inplace=True) train_data = df_train[cols] mu, std = train_data.mean(), train_data.std() train_ = (train_data - mu) / std print(train_) model = self.create_model(dim=len(cols), hl=1, hu=128) model.fit(train_,df_train[label], epochs=50, verbose=True, class_weight=cw(df_train,label)) print('评估测试集') test_data = df_test[cols] mu, std = test_data.mean(), test_data.std() test_ = (test_data - mu) / std print(model.evaluate(test_, df_test[label]))
测试集准确率是57.3%。
添加正则和Dropout防止过拟合:
def create_model(self,dim, hl=1, hu=128, dropout=False, rate=0.3, regularize=False, reg=l1(0.0005), optimizer=Adam(lr=0.001)): if not regularize: reg = None model = Sequential() model.add(Dense(hu, input_dim=dim, activity_regularizer=reg, activation='relu')) if dropout: model.add(Dropout(rate, seed=100)) for _ in range(hl): model.add(Dense(hu, activation='relu', activity_regularizer=reg)) if dropout: model.add(Dropout(rate, seed=100)) model.add(Dense(1, activation='sigmoid')) model.compile(loss='binary_crossentropy', optimizer=optimizer, metrics=['accuracy']) return model
发布者:股市刺客,转载请注明出处:https://www.95sca.cn/archives/103789
站内所有文章皆来自网络转载或读者投稿,请勿用于商业用途。如有侵权、不妥之处,请联系站长并出示版权证明以便删除。敬请谅解!