quant组队学习——task04 量化选股策略

本文探讨了量化选股策略,涉及效用模型如何考虑风险和收益,MPT的现代资产配置理论,以及CAPM模型描述的风险资产与市场的关系。文章还介绍了APT和多因子模型在资产定价中的作用,以及如何通过市值和行业中性化来提高因子的有效性。
摘要由CSDN通过智能技术生成

量化选股策略

为什么用量化选股

在短期看来市场是无效的(受情绪影响,易偏离正常价格),而长期来看市场是有效的(符合规律的)。使用量化交易的方式可以尽量帮助人们摆脱情绪对交易造成的消极影响,更客观地帮助投资者选取可能带来超额收益的股票。

单/多因子选股模型

效用模型

效用:消费者从消费商品中得到的满足程度。(完全主观)

1. 效用曲线

效用曲线:引用自:https://zhuanlan.zhihu.com/p/292552587

效用曲线

一,效用曲线是上升的;(钱多比钱少好)
二,效用曲线的上升越来越慢(越穷越需要钱)

2. 对待风险的态度
效用凹凸性
投资的风险就是它的收益的不确定性。任何投资 都可以被写为预期收益 E [ X ] E[X] E[X]和零收益投资 X − E [ X ] X−E[X] XE[X]两部分的加和。其中零收益部分带来预期效用下降,所以需要足够大的 E [ X ] E[X] E[X] 来弥补;这里, E [ X ] E[X] E[X] 被定义为这项投资的风险溢价(risk premium),只有当风险溢价高于风险所带来的效用折损时,投资者才愿意进行投资。

也就是说,对于一项没有预期收益的投资,一个效用函数“正常”的投资者在预期上是损失效用的,原因如图:

关于效用和风险的易懂说明:https://zhuanlan.zhihu.com/p/21734044

在这里插入图片描述

衡量风险:收益变量的标准差 σ X σ_X σX。一般来讲,在保持 E [ X ] E[X] E[X] 不变的情况下,我们希望 σ X σ_X σX 越低越好。也就是越将风险分散, σ X σ_X σX 越低,效用可能越大。如图:在这里插入图片描述
把概率分布向中心聚拢的话,得到离中心更近的两个点,标为绿色。并且,由于效用函数是凹的,它在两个绿点的平均取值要高于外侧两个红点的取值的平均。由于外侧的概率被向绿点位置分配,所以预期的效用较之前的情况是提升了。

简单概括:越分散(鸡蛋越放到更多篮子里), σ X σ_X σX 越趋于0, E [ u ( X ) ] E[u(X)] E[u(X)]越接近 u [ E ( X ) ] u[E(X)] u[E(X)]

MPT策略

现代资产配置理论(Modern Portfoilio Theory),简称 MPT,核心思想是以最小化标准差(或同理的,方差)并最大化预期收益为目标来进行资产配置,有时也称为均值-方差分析(Mean-Variance Analysis)。

有效前沿

投资者追求的是风险低并且收益高的资产配置——> 寻求收益率和方差的平衡点
在这里插入图片描述
用Lagrange 乘子的方法解优化问题:
得出:有效前沿(常指上半部分)
在这里插入图片描述

加入无风险资产

有效前沿左侧的区域是通过风险资产无法配置出的。但是!如果把无风险资产加入资产配置,那么左侧的一些位置是可以获取的。

我们选择有效前沿上的一个资产配置 P P P,并选择比例 α ≥ 0 α≥0 α0,将本金的 α α α 配置于 P P P,并将 1 − α 1−α 1α 配置于无风险资产。如果 α ≤ 1 α≤1 α1,那么 1 − α ≥ 0 1−α≥0 1α0,也就是说,我们将 1 − α 1−α 1α 倍的本金存入银行或买入债券,获取那部分的无风险利率。如果 α ≥ 1 α≥1 α1,那么 1 − α ≤ 0 1−α≤0 1α0, 意思是,我们贷款本金 α − 1 α−1 α1 倍的资金,支付无风险利率,并用贷款连同本金一并配置于 P P P。如此,以 α α α 为系数,使用 P P P 和无风险资产配制出一个组合,我们将它的收益随机变量记为 r α r_α rα。计算得到
E [ r α ] = E [ α r P + ( 1 − α ) r f ] = α E [ r P ] + ( 1 − α ) r f E[r_α]=E[αr_P+(1-α)r_f]=αE[r_P]+(1-α)r_f E[rα]=E[αrP+(1α)rf]=αE[rP]+(1α)rf

σ α = V a r ( α r P + ( 1 − α ) r f ) = α σ P σ_α=\sqrt{Var(αr_P+(1-α)r_f)}=ασ_P σα=Var(αrP+(1α)rf) =ασP

以上配置组合在期望收益率-标准差曲线上表现为一条经过有效边界上一点的射线,这条线被称为资本配置线(CAL, Capital Allocation Line),线上的每一点表示一个风险资产与无风险资产组成的投资组合。

CAL 的斜率为 S h a r p e ( P ) = E ( r P ) − r f σ P Sharpe(P)=\frac{E(r_P)-r_f}{σ_P} Sharpe(P)=σPE(rP)rf​,在金融学中,我们把这一比率称为报酬-波动性比率(reward-to-variability ratio),又称夏普比率(Sharpe Ratio)。容易发现,夏普比率刻画了投资组合每承受一单位总风险,会产生多少超额报酬。也就是说,可以认为,夏普比率越高的投资组合越佳;同时也能发现,在给定的标准差上,夏普比率更高的 CAL 拥有更高的期望收益。

市场组合和资本市场线

用市场信息计算得来的有效前沿上必定有一个夏普比率最高的点M,我们将其叫做市场组合(market portfolio)。穿过M的资产配置线CAL(M)叫做资本市场线(capital market line)。资本市场线的意义在于,固定标准差,那么市场上收益预期最高的投资组合在这条线上;或者,固定预期收益,那么市场上标准差最低的投资组合在这条线上。所以,资本配置线可以直观地理解为理论上的“最佳配置线”。
在这里插入图片描述
理论上,最优的风险组合就是夏普比率最高的市场组合

在这里插入图片描述

CAPM 模型

资料来自:https://zhuanlan.zhihu.com/p/22205224

资本资产定价模型(Capital Asset Pricing Model,简称CAPM)建立于MPT之上,用简单的数学公式表述了资产的收益率与风险系数 β β β 以及系统性风险之间的关系。

假设:CAPM 假设,市场上所有的投资者对于风险和收益的评估仅限于对于收益变量的预期值和标准差的分析,而且所有投资者都是完全理智的。并且,市场是完全公开的,所有投资者的信息和机会完全平等,任何人都可以以唯一的无风险利率无限制地贷款或借出。(所以结论也常与实验证据相悖)

CAPM 公式

CAPM 公式表示了任何风险资产的收益率和市场组合的收益率之间关系。在这个公式中,任何风险资产的收益率都可以被分为两个部分:无风险收益和风险收益(β 收益)。

对于某一风险资产 S S S,有 E [ r S ] = r f + β S ( E [ r M ] − r f ) E[r_S]=r_f+β_S(E[r_M]-r_f) E[rS]=rf+βS(E[rM]rf),其中 r S r_S rS S S S的收益变量, r M r_M rM是市场组合的收益变量, r f r_f rf是市场的无风险利率, β S = C o v ( r S , r M ) V a r ( r M ) β_S=\frac{Cov(r_S,r_M)}{Var(r_M)} βS=Var(rM)Cov(rS,rM)是组合 S S S 对于市场风险的敏感度。 E [ r M ] − r f E[r_M]-r_f E[rM]rf是市场组合的风险收益, β S ( E [ r M ] − r f ) β_S(E[r_M]-r_f) βS(E[rM]rf)是资产 S S S的风险收益,可以理解为,资产 S S S承担了 β S β_S βS倍的市场风险,所以将会得到相应倍数的风险补偿。

在CAPM 下,风险组合 S S S 的预期收益是完全由它的 β S β_S βS决定的,与这个资产自己的风险 σ S σ_S σS 是没有关系的。也就是说,假设风险资产 S S S有巨大的风险 σ S σ_S σS,但是它和市场组合的相关性 β S β_S βS 很小,那么 S S S 预期的收益率其实是很小的。

通过 CAPM 公式,还可以推算出资产 S S S 的夏普比率 S h a r p e ( S ) Sharpe(S) Sharpe(S)和市场组合 M M M 的夏普比率 S h a r p e ( M ) Sharpe(M) Sharpe(M)的关系: S h a r p e ( S ) = C o r r ( r S , r M ) S h a r p e ( M ) Sharpe(S) =Corr(r_S,r_M)Sharpe(M) Sharpe(S)=Corr(rS,rM)Sharpe(M)。也就是说,组合 S S S 的夏普比率等于 M M M 的夏普比率乘以 M M M S S S 的相关系数。在 MPT 模型中, M M M 是所有风险组合中夏普比率最高的,也就是最有效的。这个公式告诉我们, S S S M M M 的相关性越高, S S S 的夏普比率就越高,收益与风险的比值也就越大。

应用

在现实环境里,我们可以将一个概括市场整体的组合(比如大盘指数)作为市场组合,并以其为基准计算每个风险资产的系统性风险。这样,我们根据对市场整体趋势的判断以及对风险控制的需要,选择适当的进行资产配置。

套利定价理论(APT)与多因子模型

APT把收益归因在不同的因子上面。

APT 模型认为,套利行为是现代有效市场(即市场均衡价格)形成的一个决定因素,如果市场未达到均衡状态的话,市场上就会存在无风险套利机会,套利行为会使得市场重新回到均衡状态。APT 模型用多个因素来解释风险资产的收益,并根据无套利原则,得到风险资产均衡收益与多个因素之间存在(近似的)线性关系。也就是说,股票或者组合的预期收益率是与一组影响它们的系统性因素的预期收益率线性相关的,影响股票预期收益率的因素从CAPM 中的单一因素扩展到多个因素。多因子模型(Multiple-Factor Model, MFM正是基于 APT 模型的思想发展出来的完整的风险模型。

现代金融理论认为,股票的预期收益是对股票持有者所承担风险的报酬,多因子模型正是对于风险—收益关系的定量表达,不同因子代表不同风险类型的解释变量。多因子模型定量刻画了股票预期收益率与每个因子之间的线性关系,可以表示为
r j ~ = ∑ k = 1 K X j k ∗ f k ~ + u j ~ \tilde{r_j}=\sum_{k=1}^{K}X_{jk}*\tilde{f_k}+\tilde{u_j} rj~=k=1KXjkfk~+uj~
其中, X j k X_{jk} Xjk是股票 j j j在因子 k k k上的因子载荷, f k ~ \tilde{f_k} fk~是因子 k k k的因子收益, u j ~ \tilde{u_j} uj~是股票 j j j的残差收益率。

多因子模型常用三类因子:技术因子(动量、换手率、量比、波动等),宏观因子(GDP增长、工业增加值、CPI、利率、M1、M2等),基本面因子(估值、营业收入、净利润、负债等)。

常见的因子分类和有效性检验方法

量化因子构建

量化因子计算的常见操作过程为,处理以交易日为时间序列、不同标的为截面维度的数据类型。

常见的因子有效性检验方法

beta 因子和 alpha 因子。上述的这些有效因子是 beta 因子,用于资产定价、解释风险溢价,而 alpha 因子则更关注其带来 alpha 收益的能力。因此,在评估一个因子的有效性时,通常认为 beta 因子能够进行资产定价,或 alpha 因子在一定时间内能够解释未来的股票收益。学术届更关注的是 beta 因子的检验——解释风险溢价的能力,热衷于追逐因子测试的结果显著性;而将因子用于投资实践的人则更关注 alpha 因子的检验——带来 alpha 收益的能力,看重因子预测股票收益的能力及稳定性。因此,衡量一个新的因子最终走向有效或无效的方法在不同领域中是有所区别的。

学术角度,P值帮助判别因子有效性

行业与市值中性化

因子的有效性往往会受到股票市值、行业归属、投资风格等因素的影响。因此,我们需要对因子进行处理,剔除掉因子中可能包含的其他因素,使得我们的因子更加纯粹,更能反映其自身的信息。

因子中性化,也被称为正交化,是一种剔除已有常见因子影响的方法。在实际操作中,我们一般只考虑市值和行业这两个方面的影响,这两种影响分别称为市值中性化和行业中性化。

市值中性化是一种常用的因子中性化方法,其主要目标是剔除股票市值对因子影响,从而得到更纯粹的因子值。这种方法尤其适用于处理连续性数据。在具体操作中,市值中性化通常通过对市值取对数然后进行线性回归的方法来实现。我们通常设定一个模型,如下式所示: Y = β ⋅ ln ⁡ ( MarketValue ) + α + ε Y = \beta \cdot \ln(\text{MarketValue}) + \alpha + \varepsilon Y=βln(MarketValue)+α+ε其中:

  • Y Y Y是我们关注的因子
  • M a r k e t V a l u e MarketValue MarketValue 是股票的市值
  • l n ( ) ln() ln() 是自然对数函数,用于将偏态的市值数据转换为更接近正态分布的数据
  • β \beta β α \alpha α 是回归系数,需要通过数据来估计
  • ε \varepsilon ε 是回归残差,代表在控制了市值影响之后,因子的真实值

在进行回归分析后,我们得到的$ \varepsilon$就是市值中性化后的因子。这个因子已经剔除了市值的影响,因此能更真实地反映其他因素的影响。在 Python 中,可以使用 statsmodels.api 来实现这个过程

import numpy as np
import pandas as pd
import statsmodels.api as sm

# 假设我们有一个包含市值因子和收益的数据框 DataFrame
# 数据框的列包括:'日期'、'股票代码'、'市值'、'收益'等

# 假设我们已经从数据源加载了数据,存储在变量 data 中

# 选择所需的列
data = data[['日期', '股票代码', '市值', '收益']]

# 根据日期进行分组
groups = data.groupby('日期')

# 定义一个函数来执行市值中性化
def market_neutralize(group):
    # 提取市值和收益的数据列
    market_cap = group['市值']
    returns = group['收益']

    # 添加截距项
    X = sm.add_constant(market_cap)

    # 执行线性回归,拟合收益率与市值的关系
    model = sm.OLS(returns, X)
    results = model.fit()

    # 提取回归系数
    beta = results.params['市值']

    # 计算市值中性化后的收益
    neutralized_returns = returns - beta * market_cap

    # 将市值中性化后的收益添加到数据框中
    group['市值中性化收益'] = neutralized_returns

    return group

# 对每个日期的数据进行市值中性化
neutralized_data = groups.apply(market_neutralize)

  • 27
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值