持续行动1期57/100,“AI技术应用于量化投资研究”。
但上述的模型在实盘中仍然不好操作,原因是它经常交易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支:
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文件即可。
from common.scripts.dump_bin import DumpDataAll, DumpDataUpdate
from core.config 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,需要几分钟。
然后训练过程与之前的文章相同,目前看效果不理想。是因子的问题,还是模型参数的问题,这就是我们要解决的核心关键。
结果如预期不好。
下一步的就是机器学习应用于量化的重中之重,如何找到有效的特征,如何调优查模型等。
文章为作者独立观点,不代表 股票程序化软件自动交易接口观点