0. 承前
如果想更加全面清晰地了解金融资产组合模型进化论的体系架构,可参考:
0. 金融资产组合模型进化全图鉴
1. 简述:阿尔法(α)和贝塔(β)系数
- 阿尔法(α)系数:衡量的是投资组合或个股相对于市场的超额回报。它是投资者通过选股、市场时机选择或其他策略所获得的额外收益,不依赖于市场的整体表现。
- 贝塔(β)系数:衡量的是投资组合或个股相对于整个市场的波动性。它告诉我们当市场上涨或下跌时,股票的价格预计会以多大的幅度变动。贝塔值为1表示股票的波动与市场一致;大于1表示波动更大,小于1则表示波动较小。
2. 比喻:阿尔法(α)和贝塔(β)系数
- 阿尔法(α)系数 :类似于车辆的初始速度或基础速度。如果α为正,意味着这辆车从一开始就有额外的速度优势;如果α为负,则表示这辆车从一开始就处于劣势。
- 贝塔(β)系数 : 类似于车辆的加速度或响应交通变化的能力。如果β为1,意味着这辆车的加速度与交通流一致;如果β大于1,表示这辆车加速更快,对交通变化的反应更为灵敏;如果β小于1,表示这辆车加速较慢,对交通变化的反应较为迟钝;如果β为0,表示这辆车完全独立于交通流,有自己的运动规律;如果β为负数,表示这辆车与交通流反向行驶。
3. 组合情况列举&比喻
Alpha (α) 范围 | Beta (β) 范围 | 简述含义 | 速度与加速度的比喻 |
---|---|---|---|
α > 0 | β = 1 | 投资表现优于市场平均水平,且波动性与市场一致。 | 像一辆车以比平均更快的速度行驶,但加速度与交通流一致。 |
α < 0 | β = 1 | 投资表现低于市场平均水平,且波动性与市场一致。 | 像一辆车以比平均更慢的速度行驶,但加速度与交通流一致。 |
α = 0 | β = 1 | 投资表现等于市场平均水平,且波动性与市场一致。 | 就像车辆保持与交通流相同的速度和加速度,既不快也不慢。 |
α > 0 | β > 1 | 投资不仅表现出色,而且波动性大于市场。 | 像是一辆加速更快的跑车,虽然速度快但也更冒险。 |
α < 0 | β > 1 | 尽管投资波动性大于市场,但表现仍然低于市场水平。 | 像是一辆重载卡车,尽管加速更快但速度却比其他车辆慢。 |
α > 0 | 0 < β < 1 | 投资表现优于市场,但波动性小于市场。 | 像是一辆稳定的小型电动车,速度适中且加速度平缓,但超过了普通车辆。 |
α < 0 | 0 < β < 1 | 投资波动性小于市场,但表现仍然低于市场水平。 | 像是一辆缓慢行驶的老式汽车,加速度小且速度慢,没能跟上交通流。 |
α > 0 | β = 0 | 投资完全不受市场影响,并产生了正的超额回报。 | 像是一架无人机,独立于地面交通,自由飞行并达到目的地。 |
α < 0 | β = 0 | 投资完全不受市场影响,但产生了负的超额回报。 | 像是一架失控的无人机,独立于地面交通,但未能到达预期位置。 |
α > 0 | β < 0 | 投资与市场反向变动,当市场下跌时可以获得正回报。 | 像是一辆逆向行驶的赛车,在大多数车辆减速时反而加速前进。 |
α < 0 | β < 0 | 投资与市场反向变动,但在市场下跌时仍然产生负回报。 | 像是一辆逆向行驶的故障车,即使其他车辆减速,它也继续减速或停止。 |
4. 实现代码:
import pandas as pd
import statsmodels.api as sm
def calculate_alpha_beta(market_returns, stock_returns):
"""
通过线性回归计算给定股票相对于市场的阿尔法系数和贝塔系数。
参数:
market_returns (pd.Series or list): 大盘(市场)的收益率序列
stock_returns (pd.Series or list): 股票的收益率序列
返回:
tuple: (alpha, beta) 其中 alpha 是阿尔法系数,beta 是贝塔系数
"""
# 确保输入是 pandas Series
if not isinstance(market_returns, pd.Series):
market_returns = pd.Series(market_returns)
if not isinstance(stock_returns, pd.Series):
stock_returns = pd.Series(stock_returns)
# 添加常数项以包含截距(阿尔法)
X = sm.add_constant(market_returns)
# 创建并拟合 OLS 回归模型
model = sm.OLS(stock_returns, X).fit()
# 获取回归结果中的参数
alpha = model.params[0] # 截距,即阿尔法
beta = model.params[1] # 斜率,即贝塔
return alpha, beta