持续行动1期 57/100,“AI技术应用于量化投资研究”。
上一周,我们把backtrader快速介绍了一下,基础功能和一些有用的扩展。可以这么说,传统量化使用backtrader就够了,而前沿的机器学习量化qlib更合适。但qlib的回测功能偏弱。
之前在lightGBM+158个技术因子实证A股十年数据:年化24%,回撤10%,我们介绍了多因子模型,然后lightGBM有效因子筛选与qlib自定义handler把158个因子“精简”为15个,依然取得不错的超额收益。
但上述的模型在实盘中仍然不好操作,原因是它经常交易50支以上的股票,而且由于计算量大,单机训练已经很吃力了。
今天我们要把沪深300的股票池换成全球指数,A股,港股,美股等以及A股里重要的行业指数,像消费、科技、医药、证券等等。
01 数据准备
如所有机器学习项目一样,数据准备都是一项耗费精力的事情。
好在我们把数据聚焦在OHLCV上,而且专注在指数上,那么数据量就少很多,使用csv就可以轻松管理——很多时候,工程复杂性是随数据量级攀升的。
tushare上的指数有8000多支,还未必全。像基金一样,指数是股票的各种排列组合,数量比股票多得多。
我们选几支核心指数就够了,取A股指数日线:
def get_index_daily(code):# 拉取数据df = pro.index_daily(**{"ts_code": code,"trade_date": "","start_date": "","end_date": "","limit": "","offset": ""}, fields=["ts_code","trade_date","close","open","high","low",# "pre_close",# "change",# "pct_chg","vol","amount"])df.rename(columns={'vol': 'volume', 'ts_code': 'code', 'trade_date': 'date'}, inplace=True)df['_id'] = df['code'] + '_' + df['date']return df
取国际主要指数日线:
def get_global_index_daily(code):# 拉取数据df = pro.index_global(**{"ts_code": code,"trade_date": "","start_date": "","end_date": "","limit": "","offset": ""}, fields=["ts_code","trade_date","open","close","high","low",# "pre_close",# "change",# "pct_chg","swing","vol"])df.rename(columns={'vol': 'volume', 'ts_code': 'code', 'trade_date': 'date'}, inplace=True)df['_id'] = df['code'] + '_' + df['date']return df
恒生指数:
国际指数6支(都是我们可以在A股市场买到的):
global_index = {'HSI': '恒生指数','HKTECH': '恒生科技指数','SPX': '标普500指数','IXIC': '纳斯达克指数','GDAXI': '德国DAX指数','N225':'日经225指数' }
A股宽基、策略及行业指数:
index = {'000300.SH': '沪深300','000905.SH': '中证500','399006.SZ': '创业板指数','399324.SZ': '深证红利','000922.SH': '中证红利','399396.SZ': '食品饮料','399967.SZ': '中证军工','399997.SZ': '中证白酒','399998.SZ': '中证煤炭','000827.SH': '中证环保','399989.SZ': '中证医疗','399986.SZ': '中证银行','399971.SZ': '中证传媒','000993.SH': '全指信息', }
全部保存成csv文件即可。
02 csv dump成qlib格式
from common.scripts.dump_bin import DumpDataAll, DumpDataUpdate fig import DATA_DIR_QLIB_INDEX, DATA_DIR_CSV_INDEX# 要写在main里,因为使用了多进程 if __name__ == '__main__':dump = DumpDataAll(csv_path=DATA_DIR_CSV_INDEX, qlib_dir=DATA_DIR_QLIB_INDEX, exclude_fields=['code'])dump.dump()
03 使用158因子集进行训练与回测
一共花了24s的时间加载并处理数据,若是沪深300,需要几分钟。
然后训练过程与之前的文章相同,目前看效果不理想。是因子的问题,还是模型参数的问题,这就是我们要解决的核心关键。
04 lightGBM回归
结果如预期不好。
下一步的就是机器学习应用于量化的重中之重,如何找到有效的特征,如何调优查模型等。
公众号:ailabx(七年实现财富自由)
本文发布于:2024-02-01 17:09:54,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170677861738172.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |