在因子来了那个部分,西西用来选股的因子基本是与企业的基本面相关的,这类因子可以归为价值因子;除此之外,常用因子还有动量因子、情绪因子、波动因子、规模因子、质量因子等。这些因子有些可以用来选股,有些可以帮助我们寻找买卖时机。下面西西就以一个情绪因子为例来研究一下与因子有关的评价指标。
建立投资组合并设定日期
这里,我们重复使用前面使用的方法,通过不同的量化选股因子,在不同的股票池中选取若干只股票。考虑到西西能够用于投资的资金并不多,这里我们只选9只股票。总体来说,这9只股票都是基本面比较不错且成交比较活跃的股票,包括000617、601398、600029、600941、601939、601288、600519、300059,
下面我们就在新的Notebook 文件中导入必要的库,并且把上述几只股票存入一个列表,命名为“portfolio”。输入代码如下:
from jqfactor import get_factor_values, analyze_factorimport datetime# 正确格式的股票列表portfolio = [ '000617.XSHE', '601398.XSHG', '600029.XSHG', '600941.XSHG', '601939.XSHG', '601288.XSHG', '600519.XSHG', '300059.XSHE']
为了日后方便,我们不需要每次都输入起止日期,可以使用Python中的datetime 来获取当日的日期,并使用timedelta找到若干天以前的日期(这里选择的是500天,朋友们也可以根据自己的爱好来改变这个数字),并分别将若干天以前的日期作为起始日期,将当前日期作为截止日期。输入代码如下:
import datetime# 获取今天的日期today = datetime.date.today()# 格式化为 'YYYY-MM-DD' 的字符串end_date = today.strftime('%Y-%m-%d')# 计算500天前的日期start_date = (today - datetime.timedelta(days=500)).strftime('%Y-%m-%d')# 检查是否成功print("开始日期:", start_date)print("结束日期:", end_date)
获取一个情绪因子
在确定了投资组合和时间范围之后,我们就可以来找一个因子进行实验。这里我们选择的因子是成交量的5日指数移动平均(VEMA5)。这个因子非常易于理解,就是股票成交量在过去5个交易日中的移动平均值。输入代码如下:
# 4. 获取 VEMA5 因子factor_vema5 = get_factor_values( securities = portfolio, factors = ['VEMA5'], start_date = start_date, end_date = end_date)['VEMA5']
运行代码,即可完成因子数据的加载。接下来我们使用因子分析工具analyze_factor灯VEMA5 因子进行分析。输入代码如下:
# 5. 因子分析far = analyze_factor( factor = factor_vema5, start_date = start_date, end_date = end_date, weight_method= 'mktcap', # 按市值加权 universe = portfolio, # 限定股票池 quantiles = 5, # 5 个分位 periods = (1, 5, 10) # 1、5、10 天的收益周期)# 6. 查看结果:各分位在不同周期的平均收益 + 标准差far.mean_return_std_by_quantile
从表中可以看到,程序返回了因子不同分位对应的不同周期的加权平均收益。在上面的代码中,我们设置的分位数量为5个,因此程序返回的是5个分位的收益情况。举例来说明,假如我们买入VEMA5因子值在第1分位的股票,则1天周期的加权平均收益是0.000706,而5天周期的加权平均收益是0.000425,同时,10天周期的加权平均收益是0.000294。第2~5分位的意思是相同的,这里不一一展开介绍了。
获取全部的因子分析的结果
除了简单了解各分位因子值对应的加权平均收益之外,我们也可以对因子进行更加全面的了解。create full tear sheet方法可以以图表的形式,直观地展示因子的收益、因子的信息系数(Information Coefficient,IC)、换手率等。使用下面的代码,即可获得全部的因子分析结果。
# 6. 生成完整因子分析图表far.create_full_tear_sheet( demeaned=False, # 不使用超额收益 group_adjust=False, # 不使用行业中性化 by_group=False, # 不按行业展示 turnover_periods=None, # 不指定调仓周期 avgretplot=(5, 15), # 向后预测15天,向前看5天 std_bar=False # 不显示标准差柱状图
运行代码,输出结果包括因子值的分位数统计、收益分析、IC分析、换手率分析等,如图 所示。
由于这里的输出结果过长,以至于Notebook进行了折叠显示。在后面的几天,西西将针对这些分析结果和朋友们进行研究和探讨。
Copyright © 2024-2025 成都宁时科技有限公司 版权所有