文章链接 量化研究---小果因子分析系统使用教程,可转债macd因子为例子 (qq.com)
因子分析是一种多维变量统计分析方法,用于从多个变量中提取少数公共因子。
具体来说,因子分析的核心目的是通过研究变量之间的相关性,将多个相关联的变量归结为几个较少的公共因子。这些公共因子能够代表原始变量中的大部分信息,而每个原始变量则可以表示为这些公共因子和一个特殊因子(独特性)的线性组合。以下是因子分析的几个关键点:
-
提取共性因子:因子分析最早由心理学家C.E.斯皮尔曼提出,他在研究学生的各科成绩时发现,不同科目之间存在一定的相关性,即一科成绩好的学生往往在其他科目上也有不错的表现。这种相关性启发了他从中提取共性因子的想法。
-
可观测变量与隐变量:在因子分析中,可观测的变量通常受到背后的公共因子(也称为隐变量)的影响。样本在公共因子上的取值变化会影响其在可观测变量上的取值。
-
降维处理:因子分析常用于对多个观测变量进行降维处理,例如将多个问卷题目降维为几个公共因子,这有助于简化数据结构,更容易地进行后续分析。
-
多元统计分析方法:它是一种多元统计方法,通过研究指标相关矩阵内部的依赖关系,将信息重叠、具有复杂关系的变量归结为少数几个不相关的综合因子。
-
计算因子权重和综合得分:除了用于降维,因子分析还可以用来计算因子权重,以及基于这些权重计算加权的综合得分。
股票因子分析是量化交易中用于评估因子有效性的一种方法。
在股票投资领域,因子分析是一种重要的量化研究手段,它通过对各种可能影响股票价格和收益率的因素进行分析,来预测股票的未来表现。这些因素被称为“因子”,它们可以是宏观经济数据、公司基本面信息、市场情绪指标等。以下是一些常见的股票因子:
-
规模因子:通常指的是公司的总市值,它是衡量公司大小的一个指标。
-
估值因子:如市盈率(Price to Earnings Ratio, P/E),用以评估股票的估值水平。
-
成长因子:例如营业利润同比增长率,反映公司的成长性。
-
盈利因子:如净资产收益率(Return on Equity, ROE),衡量公司的盈利能力。
-
动量反转因子:以前1个月的涨跌幅来衡量,反映股票的价格动量。
-
交投因子:以前1个月日均换手率来表示,反映股票的交易活跃程度。
-
波动因子:以前1个月的波动率来衡量,反映股票的价格波动性。
-
股东因子:如户均持股比例变化,显示股东结构的变化情况。
1导入因子分析框架
from trader_tool.unification_data import unification_datafrom factor_analysis_frame.factor_analysis_frame import factor_analysis_framefrom trader_tool import jsl_datafrom finta import TAfrom tqdm import tqdmimport pandas as pddata=unification_data(trader_tool='ths')data=data.get_unification_data()

2获取全部的可转债代码
#计算计算指标bond=jsl_data.get_all_cov_bond_data()bond

3计算可转债全部的macd因子
#macd为例子# factor_data:pandas.DataFrame格式,形如# instrument date hf_fz_ykws# 0 000001.SZ 2017-01-03 1.564644# 1 000001.SZ 2017-01-04 1.521567# 2 000001.SZ 2017-01-05 1.519973# 3 000001.SZ 2017-01-06 1.553225# 4 000001.SZ 2017-01-09 1.367971'''factor_return数据格式instrument date daily_ret127005 2018-03-12 NaN127005 2018-03-13 NaN2 127005 2018-03-14 NaN3 127005 2018-03-15 NaN4 127005 2018-03-16 NaN.84620 110095 2023-08-25 0.0'''stock_list=bond['转债代码'].tolist()factor_data=pd.DataFrame()factor_return=pd.DataFrame()for i in tqdm(range(len(stock_list))):factor_data_df=pd.DataFrame()factor_return_df=pd.DataFrame()stock=stock_list[i]instrument=stockhist=data.get_hist_data_em(start_date='20160101',end_date='20500101',stock=stock)macd=TA.MACD(hist)hist['MACD']=macd['MACD']factor_data_df['date']=pd.to_datetime(hist['date'])factor_return_df['date']=pd.to_datetime(hist['date'])factor_data_df['MACD']=hist['MACD']factor_return_df['daily_ret']=hist['close'].pct_change()factor_data_df['instrument']=instrumentfactor_return_df['instrument']=instrumentfactor_data=pd.concat([factor_data,factor_data_df],ignore_index=True)factor_return=pd.concat([factor_return,factor_return_df],ignore_index=True)

因子数据

收益数据

分组参数
#group_num分组#factor_field因子名称#instruments参考市场#benchmark参考指数#factor_direction因子方向params = {'group_num':5, 'factor_field':'MACD', 'instruments':'全市场',"benchmark":'00300', 'factor_direction':1}

执行因子回测框架
models=factor_analysis_frame(params=params,factor_data=factor_data,factor_return=factor_return)models.render()

分析的结果





完美看因子最大的值的标的
***********因子值最大的标的**************date factor instrument137083 2024-04-18 17.9279 113615101673 2024-04-18 13.5632 123118283583 2024-04-18 8.9575 123018121191 2024-04-18 8.6597 12310689769 2024-04-18 8.6009 123127***********因子值最小的标的**************date factor instrument1604 2024-04-18 -16.6805 1270971803 2024-04-18 -13.1377 127096296804 2024-04-18 -10.0244 123013300924 2024-04-18 -6.7810 1280411503 2024-04-18 -5.4322 123230( date factor instrument137083 2024-04-18 17.9279 113615101673 2024-04-18 13.5632 123118283583 2024-04-18 8.9575 123018121191 2024-04-18 8.6597 12310689769 2024-04-18 8.6009 123127,date factor instrument1604 2024-04-18 -16.6805 1270971803 2024-04-18 -13.1377 127096296804 2024-04-18 -10.0244 123013300924 2024-04-18 -6.7810 1280411503 2024-04-18 -5.4322 123230)
因子分析选股交易


