2种方法筛选出多因子量化选股模型

多因子选股模型在模型搭建中,往往会涉及到非常多的股价影响因子,并可能导出数量极多的备选模型。因此,对于多因子选股模型的评价和筛选,就显得尤为关键。

对于专业的量化投资人而言,就需要进一步了解多因子选股模型的两种主要的评价判断方法——打分法和回归法。

 

打分法的评价原理和流程

所谓打分法,就是根据各个因子的大小对股票进行打分,然后按照一定的权重加权得到一个总分,最后根据总分再对股票进行筛选。

对于多因子模型的评价而言,实际通过评分法回测出的股票组合收益率,就能够对备选的选股模型做出优劣评价。

打分法的优点是相对比较稳健,不容易受到极端值的影响。但是打分法需要对各个因子的权重做一个相对比较主观的设定,这也是打分法在实际模型评价过程中,比较困难和需要模型求取的关键点所在。

华泰证券在2011年对中证800指数成份股在2005年1月至2011年5月的走势,构造了一个等权重多因子策略。

选股因子包括:总市值、市盈率TTM、营业利润同比增长率、净资产收益率、前1个月涨跌幅、前1个月日均换手率、前1个月波动率、户均持股比例变化、机构持股变化、最近1个月净利润上调幅度等10个因子。

这10个因子按等权重的方式,计算各股票的综合得分。按各指标排序,把800只成份股分成:(1-50)、(1-100)、(101-200)、(201-300)、(301-400)、(401-500)、(501-600)、(601-700)、(701-800)、((751-800)等10个组合;股票组合调整周期为月,每月最后一个交易日收盘后构建下一期的组合。

以下就是按照上述10个因子等权重方式,回测出的各档股票组合收益率情况。

进一步从打分法的流程来看,多因子选股模型的建立、评价和改进流程,大致可以分为4个步骤,见下图。

此外,对于量化选股打分法,专业人士还提示指出,一方面,多因子选股模型中有的因子会逐渐失效,而另一些新的因子可能被验证有效而加入到模型当中;

另一方面,一些因子可能在过去的市场环境下比较有效,而随着市场风格的改变,这些因子可能短期内失效。

在这种情况下,对综合评分选股模型的使用过程中,需要对选用的因子、模型本身做持续的再评价和不断的改进以适应变化的市场环境。

除此之外,在计算综合评分的过程中,除了各因子得分的权重设计之外,交易成本和风险控制等因素,也同样需要予以综合考量。

 

多元线性回归

所谓回归法,就是用过去的股票的收益率对多因子进行回归,得到一个回归方程,然后再把最新的因子值代入回归方程得到一个对未来股票收益的预判,然后再以此为依据进行选股,并对选股模型的有效性和收益率进行评价。

回归法的优点是能够比较及时地调整股票对各因子的敏感性,而且不同的股票对不同的因子的敏感性也可以不同。

回归法的缺点,则是容易受到极端值的影响,在股票对因子敏感度变化较大的市场情况下效果也比较差。

在线性回归分析中,如果有两个或两个以上的自变量,就称为多元线性回归。因此,通过多元线性回归对多因子选股模型进行评价,也能够得到一个直观的股票组合收益率结果,同时能够有效评价该选股模型的优劣。

从数学的角度来说,假设因变量Y(预期收益率)是自变量X1,X2,X3..Xk(候选因子)的线性函数,用方程来表示就是:

Yi=β0+β1X1i+β2X2i+...+βkXki+εi

其中,Yi表示因变量(被解释变量)的第i个观测值,而Xki则是第k个自变量(解释变量)的第i个观测值,是自变量Xk的系数,εi是第i组观测值的残差项。在金融领域,β0有时候会写成α,该方程来表示也可以写作:

Yi=α+β1X1i+β2X2i+...+βkXki+εi

在此之中,多元线性回归通常采用普通最小二乘法(OLS)进行估计,普通最小二乘估计法的思路是改变β0,β1,β2,...,βk,使得残差的平方和最小。

从回归法的流程来看,多因子选股模型的建立、评价和改进流程,大致可以分为6个步骤,见下图。

 

来源:量化投资俱乐部

拓展阅读:

1.经典量化选股方法——没有秘密的多因子

2.海龟交易法则策略,多读几遍少走10年路

3.网格交易法,一个不容易亏钱的投资策略(附源码)

4.市面上经典的量化交易策略都在这里了!(源码)

5.配对交易——这个股票策略曾年赚5000万美元

 

### 构建多因子量化选股模型的关键要素 构建一个多因子量化选股模型涉及多个方面,包括数据获取、因子计算、因子测试、组合优化以及回测验证。以下是基于Python实现这一过程的具体方法。 #### 数据准备与单因子检验 在开始构建模型之前,需要准备好所需的数据集。通常使用的金融数据源有Tushare、Wind、JoinQuant等。对于初学者来说,Tushar是一个不错的选择,因为它提供了丰富的API接口来获取市场行情、财务报表和其他相关信息[^4]。 ```python import tushare as ts pro = ts.pro_api('your_token_here') df = pro.daily(ts_code='000001.SZ', start_date='20230101', end_date='20231231') print(df.head()) ``` 上述代码展示了如何通过Tushare API下载某只股票的历史收盘价记录。 #### 因子定义与计算 选取合适的因子是成功实施多因子策略的核心环节之一。常见的因子类别包括价值型(如市盈率PE)、成长型(净利润增长率YOYNetProfit),动量型(RSI, MACD)等等[^5]。下面给一段用于计算RSI指标的小例子: ```python def compute_rsi(close_prices, period=14): delta = close_prices.diff() up_days = delta.copy() up_days[delta<=0]=0 down_days = abs(delta.copy()) down_days[delta>0]=0 MA_up = up_days.rolling(window=period).mean() MA_down = down_days.rolling(window=period).mean() rs_values = MA_up / MA_down rsi_values = 100 - (100/(1+rs_values)) return rsi_values.fillna(method="bfill") # Example usage with DataFrame 'df' containing column 'close' df['rsi'] = compute_rsi(df['close']) ``` 此函数实现了经典的相对强度指数(Relative Strength Index, RSI)的计算逻辑。 #### 组合管理与交易信号生成 一旦确定了各个候选资产及其对应的评分体系之后,则需进一步考虑持仓调整机制。例如,在每次重新评估时保留得分最高的若干支个股作为新的投资组合成员;而对于那些不再满足条件的老持股则予以清仓处理[^3]。 ```python to_hold = df[df.score >= threshold]['code'].values for stock in context.portfolio.positions: if stock not in to_hold: order_target(stock, target_amount=0) ``` 这里假设`context.portfolio.positions`包含了当前持有的所有证券列表,并且每轮迭代都会依据最新筛选来的优质标的集合`to_hold`来进行必要的买卖操作。 #### 性能评价与风险控制 最后一步是对整个系统的有效性进行全面衡量的同时也要注意防范潜在的风险因素。常用的绩效考核标准除了年化收益率外还包括夏普比率Sharpe Ratio、最大回撤Max Drawdown等方面的表现情况。另外还需设置止损位Stop Loss Level等功能模块以降低极端情况下可能遭受的巨大损失程度。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值