之前写的一些策略主要是基于时间序列下的个股交易方式(网格交易策略、动量策略等),这些策略不属于目前的主流策略,在现今只是起收益增厚的辅助作用。今天讲一个量化机构都在用的多因子选股模型,正巧见过一个券商研报用CNN来做,自己尝试做一下,熟悉一下架构。
模型涉及到多期回测,有点点复杂,可以看看下图,我尽量解释清楚各个模块。
话不多说上代码
导入必要库:
import akshare as ak
import pandas as pd
import numpy as np
from pylab import plt, mpl
from datetime import datetime, timedelta
from sklearn.model_selection import train_test_split
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Conv1D, MaxPooling1D, Flatten, Dense
from sklearn import preprocessing
查询投资范围的股票代码以及基本信息
# 查询股票代码
stock_list = ak.index_stock_cons_weight_csindex(symbol="000300")
noa = 300
# 查询行业 + 重构表格
data = []
for i in range(noa):
所属行业 = ak.stock_individual_info_em(symbol=stock_list['成分券代码'][i])['value'][2]
data.append([stock_list['成分券代码'][i], stock_list['权重'][i], 所属行业])
data = pd.DataFrame(data, columns= ['代码','权重','行业'])
第一个模块,上图所示黄色部分,定义函数计算单期因子以及对应涨跌幅。