从pickle中加载模型,并显示最重要的特征:
import pickle
import pandas as pd
pkl_filename = "pickle_model.pkl"
with open(pkl_filename, 'rb') as f:
clf = pickle.load(f)
df = pd.read_csv('factors.csv', index_col=0)
df.set_index('date', inplace=True)
label_col = 'LABEL0'
feature_cols = list(df.columns)
for c in ['code', 'LABEL0', 'open', 'high', 'low', 'close', 'volume']:
feature_cols.remove(c)
print(feature_cols)
# 重要性就是决策树给出的feature_importances_
factor_weight = pd.DataFrame({'features': list(feature_cols),
'importance': clf.feature_importances_}).sort_values(
# 这里根据重要程度降序排列,一遍遍找到重要性最高的特征
by='importance', ascending=False)
print(factor_weight)
factor_weight.to_csv('importance.csv')
取排名得分最高的前5,做下测试:
feature_cols = ['ROC60', 'CORD60', 'STD60', 'IMXD60', 'CORR60']
feature_cols =['CNTP10', 'RANK20', 'CNTP5', 'CNTD5', 'RANK5']
从训练集来看,非常明显,其实158个因子里,这5个因子就够了,足够对数据进行划分,当然更多的因子没有带来特别负面的作用,就是训练的时间长了一些。不过随机森林支持多进程计算,所以,总体还好。
接下来,我们先不管这个模型的泛化能力,先把流程整理到回测引擎里看看效果。
年化26%,最大回撤23%。
按top1的逻辑:年化48%,最大回撤38%。
如下是我们的工程代码:
from quant_project.dataloader.dataloader import Dataloader from quant_project.dataloader.dataset import Alpha158_Dataset from quant_project.engine.algo.algos import * from quant_project.engine.engine_runner import Engine features = ['ROC60', 'CORD60', 'STD60', 'IMXD60', 'CORR60'] names = ['ROC60', 'CORD60', 'STD60', 'IMXD60', 'CORR60'] fields = ["Ref($close, 60)/$close", 'Corr($close/Ref($close,1), Log($volume/Ref($volume, 1)+1), 60)', 'Std($close, 60)/$close', '(IdxMax($high, 60)-IdxMin($low, 60))/60', 'Corr($close, Log($volume+1), 60)'] from quant_project.dataloader.dataloader import Dataloader fields += ['$close/Ref($close,1) -1'] names += ['rate'] df = Dataloader().load_datas('__all__', names, fields) e = Engine(df) print('初始总市值', e.acc.get_total_mv()) e.run(name='随机森林-多因子-月频-top1', algo_list=[ RunMonthly(), # 改这行代码即可 PredScore_Model(features=features), SelectTopK(K=1), WeightEqually() ]) print('最终总市值', e.acc.get_total_mv()) e.show_results(benckmarks=['000300.SH']) df = df[features]
多因子使用机器学习,在代码层面上比较简单,但就是机器模型比较容易过拟合。后续我们可以把可转债的数据与之前的多因子规则——进行对比。
代码与模型已经发布到星球-专栏中,请大家前往下载。
发布者:股市刺客,转载请注明出处:https://www.95sca.cn/archives/104155
站内所有文章皆来自网络转载或读者投稿,请勿用于商业用途。如有侵权、不妥之处,请联系站长并出示版权证明以便删除。敬请谅解!