一、 股票aplha多因子策略介绍

量化投资是指通过数量化方式及计算机程序化发出买卖指令,以获取稳定收益为目的的交易方式。在海外的发展已有30多年的历史,其投资业绩稳定,市场规模和份额不断扩大、得到了越来越多投资者认可。从全球市场的参与主体来看,按照管理资产的规模,全球排名前四以及前六位中的五家资管机构,都是依靠计算机技术来开展投资决策,由量化及程序化交易所管理的资金规模在不断扩大。

1.1 股票alpha多因子

python做量化投资 基于python的量化投资_python做量化投资

多因子投资:先去找一些系列单个的因子,将单因子进行合成,完成一个大的因子alpha。利用大的alpha去构建一个组合,组合构建的方法多种多样,根据组合的策略进行投资。通过因子分析去分析挣钱的原因是什么,亏钱的原因是什么,看每个因子对于挣钱和亏钱的贡献度是多少。

1.2 多因子实现框架

python做量化投资 基于python的量化投资_数据_02


首先要有一个股票的Signal Pool(信号),比如市值,每个股票的5天的涨幅,过去一年的涨幅,或者每个股票财务的ROE,PE,PB。或者每个股票的舆情数据,是自己认为有用的信号都可以就得到了很多Signal。

可以根据数学方法和经验,将相关的Signal归位一类的Factor,就组成了Factor Pool。

对N个Factor进行配权重,就得到了Alpha。对或得到的Alpha函数对股票池子中的函数进行打分,排序。

用筛选出来的股票(比如前10个股票),比如等权组合,有1000万资金,对每个股票每个买入100万。或者打分加权组合:依据前面的Alpha计算的值进行配权重,依据权重进行买入。

利用归因模型对组合进行归因。

1.3多因子的市场视角

python做量化投资 基于python的量化投资_数据_03


正常人看股票就是一个波动图,工程师看股票,类似股票是傅里叶变换得到的不同频率的组合分布图。

工程师看股票的涨跌是认为股票的属性,股票的影响因素角度去看待收益。某个股票的因素影响挣钱和亏钱。

可以将市场是由维度组成,维度又是根据signal 组成。

python做量化投资 基于python的量化投资_python做量化投资_04

二、Pandas的常用方法

输入

tpd = trading price daily

import pandas as pd
demo_tpd = pd.read_hdf('.demo_tpd.hs)

第一个属性是交易日,第二个是股票代码,SZ是深圳交易所,daily_turn股票收益,市值,自由流通市值,换手率,行业代码。

python做量化投资 基于python的量化投资_python做量化投资_05

输出

demo_tpd.to_csv('路径')

取出部分数据集

列的选择

demo_tpd[['data_date','secucode','daily_return']]

python做量化投资 基于python的量化投资_金融股票_06


行的选择

第二个[]表示条件的选择,得到True和Fale的判断

python做量化投资 基于python的量化投资_金融股票_07

demo_tpd[[demo_tpd['data_date'] > '2015-01-22']]

python做量化投资 基于python的量化投资_数据_08


多个条件选择:& |

python做量化投资 基于python的量化投资_金融股票_09


列之间的运算

python做量化投资 基于python的量化投资_量化投资_10

截面数据数据和时间序列数据

截面数据就是从一个时间点(比如某一天)看待所有数据,时间序列是不同时间点的截面数据

python做量化投资 基于python的量化投资_量化投资_11


python做量化投资 基于python的量化投资_数据_12


获取截面数据

python做量化投资 基于python的量化投资_python_13

计算截面数据下所有股票的标准差

python做量化投资 基于python的量化投资_金融股票_14


计算每天的所有股票的收益率的标准差:groupby按照data_date对所有股票的daily_return计算标准差

python做量化投资 基于python的量化投资_python做量化投资_15


在notebook中之间显示matplotlib的魔法命令:%matplotlib inline,在用绘制出来截面波动率。

python做量化投资 基于python的量化投资_金融股票_16


可以看出来每天的截面波动率不一样,每天的收益是不能之间比较的,今天市场波动高,市场风险比较大,今天挣得5个点,很大一部分是市场的风险溢价。所以需要对截面下,每个股票daily return做一个归一化调整,用当前的截面收益率/其标准差,这个的收益率是可以比的。

python做量化投资 基于python的量化投资_python做量化投资_17


用groupby做对单行进行组合计算

python做量化投资 基于python的量化投资_python_18


用groupby对多行进行计算,注意需要先sort和.value

python做量化投资 基于python的量化投资_金融股票_19


绘制单个股票的日收益的时间序列绘图,先选中单个股票,在选中日收益,进行绘图

python做量化投资 基于python的量化投资_python做量化投资_20


绘制直方图,选择柱子数为100

python做量化投资 基于python的量化投资_金融股票_21