我们在前几篇指南里面分别讲解了几个常用的量化选股模型,主要内容是数据处理和回归方法。其实,对于构建一个模型而言,最困难的不是检验和回归本身,而是因子的构建。
更进一步说,因子降维的处理甚至也不过是另一种层次上的线性回归(只有通过有效性检验的因子才能参与到降维中去,而且降维的原理正是最小二乘方法。)
这一篇指南是本系列的收官之作吧。我们想要从综合步骤的角度再一次审视如何搭建多因子线性模型这个问题。因为我们想要更加强调python实操里面的细节技术,所以我们不会提及特定的模型,代码附在每个步骤的超链接里,我们把它们拆成了多个文章。如果想了解,可以从这一篇推送的对应链接进入。
请一定要看到最后!!!
在Anaconda3 Jupyter Notebook中进行操作:
import warnings
warnings.filterwarnings("ignore")
import numpy as np
import pandas as pd
#data.xlsx文件是假定的股票数据统称,没有特定意义,在各个模块里面可能假设特定意义,里面有8个工作表
#df是一般操作的dataframe数据
数据读取和整合
基本步骤
股票数据的获取一般来自金融终端,是excel文件或是csv文件,这两种文件在Python中的处理方法是一致的。对于excel文件而言,一般获取后会储存为一个文件簿中的多个工作表,比如2017年数据,2018年数据···等等。所以,一般在读取数据之后还要进行整合。
我们一般需要把多个格式一致的工作表统一到一个DataFrame里面,才能进行时间维度或是行业维度上的分析。这里的拼接一般是纵向拼接。
方式一:工作表不多并且sheetname没有统一格式,使用循环读取所有工作表。
#读取数据temp=pd.read_excel('stock.xlsx',sheet_name=i,header=1)
for i in range(8)]
#拼接数据
df=pd.concat([temp[0],temp[1],temp[2],temp[3],temp[4],
temp[5],temp[6],temp[7]],
axis=0,ignore_index = True)
#axis=0纵向拼接,多个表拼接成为一个表
方式二:工作表名字有统一格式,为了方便,生成工作表的名称列表,使用列表生成式整合。这里假设工作表储存格式为:Y12Q1···Y20Q1,Y20Q2,Y20Q3,Y20Q4。(12年到20年分季度财报披露数据)
sname = ['Y'+str(i)+'Q'+str(j) for i in list(range(12,20))
for j in list(range(1,5))]
sname = sname[:-3]
#没有20年的后三个数据所以取sname[:-3]
temp &