Python 在金融中的应用- Part 1

06-02-2025

早在2018年,我开始对资本市场产生兴趣。理解资本市场的基本理论对财富积累至关重要。我开始阅读所有经典著作,如《聪明的投资者》和《证券分析》。在这一系列文章中,我想与读者分享在Python编程语言背景下理解金融理论的旅程。在文章的第一大部分,我们将专注于金融模型的线性方面,资本资产定价模型(CAPM)、套利定价理论(APT)和线性优化。后续章节将涵盖非线性模型。

线性是现实世界的简化版本。它在概念上容易理解,在计算上也是可处理的。这是理解金融理论的一个很好的起点。

什么是线性?

在数学中,线性是指满足两个关键属性的关系:

  1. 可加性: f(x + y) = f(x) + f(y)
  2. 齐次性: f(αx) = αf(x)

在金融中,线性关系表现为:

  • 投资组合收益是个别资产收益的线性组合
  • 风险因子以线性方式组合来解释资产收益
  • 优化问题可以表述为线性或二次规划

1. 资本资产定价模型(CAPM)

理论基础

资本资产定价模型代表了金融学中最具影响力的理论之一。CAPM提供了资产预期收益与其系统性风险之间的线性关系。CAPM假设投资者是理性的,以及其他几个因素。

CAPM公式

证券市场线方程将预期收益表示为:

\[E[R_i] = R_f + \beta_i (E[R_m] - R_f)\]

其中:

  • $E[R_i]$ = 资产i的预期收益
  • $R_f$ = 无风险利率(如国库券利率)
  • $\beta_i$ = 资产i的贝塔(系统性风险度量)
  • $E[R_m]$ = 预期市场收益
  • $(E[R_m] - R_f)$ = 市场风险溢价

理解贝塔

贝塔衡量资产对市场变动的敏感性

\[\beta_i = \frac{Cov(R_i, R_m)}{Var(R_m)} = \rho_{i,m} \frac{\sigma_i}{\sigma_m}\]

解释:

  • $\beta = 1$:资产与市场完全同步移动
  • $\beta > 1$:资产比市场波动更大(激进型)
  • $\beta < 1$:资产比市场波动更小(防御型)
  • $\beta < 0$:资产与市场反向移动(罕见,如黄金)

经济直觉

CAPM的线性关系捕捉了一个基本权衡:

  • 更高的系统性风险(贝塔)需要更高的预期收益
  • 可分散风险不被补偿(可以被消除)
  • 市场投资组合是均值-方差有效的
  • 风险溢价与贝塔成正比
# Python实现
from scipy import stats

# 样本数据
stock_returns = [0.065, 0.0265, -0.0593, -0.001, 0.0346]
market_returns = [0.055, -0.09, -0.041, 0.045, 0.022]

# 执行线性回归
beta, alpha, r_value, p_value, std_err = stats.linregress(stock_returns, market_returns)

print(f"贝塔: {beta}, 阿尔法: {alpha}")
贝塔: 0.5077431878770808, 阿尔法: -0.008481900352462384

CAPM应用

1. 权益资本成本

  • $r_e = R_f + \beta_e (R_m - R_f)$
  • 用于DCF估值WACC计算

2. 绩效评估

  • 詹森阿尔法: $\alpha = R_p - [R_f + \beta_p(R_m - R_f)]$
  • 正阿尔法表示超额绩效

3. 投资组合管理

  • 贝塔目标设定以达到期望的风险水平
  • 基于贝塔调整的市场择时策略

2. 套利定价理论(APT)

理论基础

套利定价理论通过承认多个因子驱动资产收益来扩展CAPM。APT基于一价定律并假设套利机会**被迅速消除,这意味着APT比CAPM限制更少。

APT假设

  1. 资产收益遵循线性因子模型
  2. 不存在套利机会
  3. 资本市场完全竞争
  4. 投资者偏好更多财富而非更少

多因子模型

APT将收益表示为多个因子的线性组合

\[R_i = \alpha_i + \beta_{i,1}F_1 + \beta_{i,2}F_2 + \ldots + \beta_{i,k}F_k + \epsilon_i\]

其中:

  • $R_i$ = 资产i的收益
  • $\alpha_i$ = 资产特定收益(在均衡中应为零)
  • $F_j$ = 因子j(如GDP增长、通胀、利率)
  • $\beta_{i,j}$ = 资产i对因子j的敏感性
  • $\epsilon_i$ = 特质性误差项

经济直觉

APT的多因子方法认识到:

  • 多个系统性风险来源影响资产收益
  • 因子分散化可以降低投资组合风险
  • 不同资产具有不同的因子暴露
  • 不可分散因子存在风险溢价
# Python实现
import numpy as np
import statsmodels.api as sm

# 生成样本数据
num_periods = 9
all_values = np.array([np.random.random(8) for _ in range(num_periods)])
y_values = all_values[:, 0]
x_values = all_values[:, 1:]
x_values = sm.add_constant(x_values)

# 执行OLS回归
results = sm.OLS(y_values, x_values).fit()
print(results.summary())
                            OLS Regression Results
===============================================================================
Dep. Variable:                      y   R-squared:                       0.968
Model:                            OLS   Adj. R-squared:                  0.747
Method:                 Least Squares   F-statistic:                     4.377
Date:                Sat, 31 May 2025   Prob (F-statistic):              0.353
Time:                        15:50:56   Log-Likelihood:                 14.758
No. Observations:                   9   AIC:                            -13.52
Df Residuals:                       1   BIC:                            -11.94
Df Model:                           7
Covariance Type:            nonrobust
===============================================================================
             coef    std err          t      P>|t|      [0.025      0.975]
------------------------------------------------------------------------------
const         -0.3433      0.213     -1.612      0.353      -3.049       2.362
x1             0.2754      0.201      1.371      0.401      -2.278       2.828
x2             0.5616      0.262      2.144      0.278      -2.767       3.890
x3            -0.2459      0.345     -0.713      0.606      -4.631       4.139
x4             0.4624      0.248      1.862      0.314      -2.693       3.618
x5             0.8224      0.349      2.357      0.255      -3.612       5.257
x6            -1.3773      0.413     -3.332      0.186      -6.629       3.875
x7             1.1494      0.337      3.411      0.182      -3.133       5.432
===============================================================================
Omnibus:                        0.037   Durbin-Watson:                   2.092
Prob(Omnibus):                  0.982   Jarque-Bera (JB):                0.268
Skew:                          -0.022   Prob(JB):                        0.875
Kurtosis:                       2.156   Cond. No.                         23.6
===============================================================================

Notes:
[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.

APT与CAPM比较

方面 CAPM APT
因子 单一(市场) 多个
假设 限制性强 更灵活
理论基础 均值-方差优化 套利论证
风险度量 仅贝塔 多个贝塔
应用 资本成本 风险管理、归因

实际应用

1. 风险管理

  • 用于投资组合监控的多因子风险模型
  • 跨不同经济情景的压力测试
  • 针对特定风险因子的对冲策略

2. 绩效归因

  • 按因子贡献分解收益
  • 识别超额/低于表现的来源
  • 投资策略的风格分析

3. 投资组合构建

  • 基于因子的投资(智能贝塔策略)
  • 跨多个维度的风险预算
  • 基于因子观点的战术资产配置

数学上的优势

1. 叠加原理 线性模型满足可加性:多个因子的效应等于各个效应的总和。

2. 可扩展性 线性关系是尺度不变的:输入加倍,输出按比例加倍。

3. 计算效率 线性系统可以使用矩阵代数求解,使得:

  • 实时投资组合优化
  • 大规模风险计算
  • 蒙特卡罗模拟

下一篇:金融中的线性优化 →