目录
最近开始做一些量化交易的分析,了解到了Tushare这个开源的python数据包,使用其中的数据做了一个简单的分析和应用。跟大家分享一下,欢迎讨论。
关于Tushare
TuShare是一个著名的免费、开源的python财经数据接口包,迄今已经运行三年多,数据从广度和深度都得到了提升和改进。数据内容逐渐扩大到包含股票、基金、期货、债券、外汇、行业大数据,同时包括了数字货币行情等区块链数据的全数据品类的金融大数据平台,为各类金融投资和研究人员提供适用的数据和工具。 Tushare官网主页
三因子和四因子模型
Fama和French两人1992年对美国股票市场决定不同股票回报率差异的因素的研究发现,股票的市场的beta值不能解释不同股票回报率的差异,而上市公司的市值、账面市值比、市盈率可以解释股票回报率的差异。Fama和French 认为,上述超额收益是对CAPM 中β未能反映的风险因素的补偿。因此提出经典的三因子模型,如下所示:
上式中𝑅𝑖𝑡表示股票组合 i 在时间 t 的收益率;𝑅𝐹𝑡表示 t 时刻的无风险利率;𝑅𝑀表示市场组合的收益率,𝑆𝑀𝐵𝑡表示 t 时期流通市值低的公司组合和流通市值高的公司组合回报率之差;𝐻𝑀𝐿𝑡表示 t 时期的账面市值比高的价值型公司和账面市值比低的成长性公司的组合回报率之差;ε𝑖𝑡表示残差。
在Fama and French (1992) 三因素模型的基础之上,为了弥补了三因子模型对市场“趋势效应”解释不足的问题,合理解释“动量现象”:市场上过去一段时间内收益率较高的股票在未来所取得的收益率仍会高于过去收益率较低的股票。CARHART(1995)加入一年期收益动量异常因素(Jegadeesh and Titman(1993)),构造了四因素模型,如下所示:
上式中MOM𝑡表示 t 时期的一年期收益动量因子。
分析步骤
变量数据
上市公司股票收益率、账面市值比等的数据来自 Tushare 金融大数据开放社区,通过公开的 python 接口进行调用。在研究的时间区间上,本文选取 2019 年初到 2020 年 7 月份的时间区间,总共 384 个交易日的日度数据进行处理。
原始三因子模型中的市值和账面市值比因子主要借鉴 西野七濑男友的博客,如链接1。
此外动量因子本文计算月度数据,为了后期回归方便,将月度数据转化为交易日数据。
动量因子计算
获取所有股票月度收益率数据,随后计算分析月度前1月~前11月的累计收益率R_sum,将累计收益率按照从大到小排序,通过前30%收益率-后30%收益率均值作为动量因子。
上式中R_sum𝑡_H表示前30%累计收益率均值,R_sum𝑡_L表示最后30%累计收益率均值。
代码如下
import tushare as ts
import pandas as pd
import numpy as np
import datetime
import statsmodels.api as sm
TOKEN = '######'
ts.set_token(TOKEN)
pro = ts.pro_api()
#%%定义计算函数
def cal_momental(df, column_name):
# 划分高、中、低收益率
pct_down, pct_up = df[column_name].quantile([0.3, 0.7])
listBins = [df[column_name].min()-1</