量化因子(四)因子分析针对投资组合获取因子值(代码)
发布时间:5小时前阅读:35
除了价值因子之外,常用因子还有动量因子、情绪因子、波动因子、规模因子、质量因子等。这些因子有些可以用来选股,有些可以帮助我们寻找买卖时机。下面以一个情绪因子为例来研究一下与因子有关的评价指标。
我司上市券商,佣金成本价,专项两融利率4.0,免费提供量化软件qmt和ptrade,欢迎咨询!!!
建立投资组合并设定日期
这里,我们重复使用前面使用的方法,通过不同的量化选股因子,在不同的股票池中选取若干只股票。这里我们只选9只股票。总体来说,这9只股票都是基本面比较不错且成交比较活跃的股票,包括000617、601398、600029、600941、601939、601288、600519、300059,
下面我们就在新的Notebook 文件中导入必要的库,并且把上述几只股票存入一个列表,命名为“portfolio”。输入代码如下:
from jqfactor import get_factor_values, analyze_factor
import 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)
开始日期:2024-02-29
结束日期:2025-07-13
获取一个情绪因子
在确定了投资组合和时间范围之后,我们就可以来找一个因子进行实验。这里我们选择的因子是成交量的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进行了折叠显示。


温馨提示:投资有风险,选择需谨慎。
-
锁定目标收益:国泰海通2025高收益理财,如何规划您的短期财富增长?
2025-07-18 18:06
-
如何做好子女教育金规划?家长必看的3步落地指南→
2025-07-18 18:06
-
2025年三季度11只超长期特别国债发行安排出炉!
2025-07-18 18:06