引言

前文的内容如下:

本文主要记录笔者学习第4章的体会。本章是该书第二版修订比较大的部分,增加了很多示例。值得精读。

第4章 金融特征工程:如何研究 Alpha 因子

本书中 Alpha 因子的概念源自基于Markowitz理论1 的资本资产定价模型(Capital Asset Pricing Model, CAPM) 2,3,4,5 。虽然在数学上等价,但是这四篇论文论述的角度不同6:Treynor 受到 Modigliani and Miller 理论的影响,因此他的着眼点是 Modigliani and Miller 定理中的命题一:企业的资本结构和它的价值无关。Sharpe 受 Markowitz 理论的影响,出发点是最优化投资组合的选择。Linter 的研究更关注通过发行股票融资的公司,并认为公司的财务政策非常重要。Mossin 的工作也来自投资组合理论,但是他关注的重点是资产市场的均衡条件。除此之外,还有其他区别7

模型假设

因子模型的假设基于 Markowitz 描述过的市场投资理论, 即:

  • 市场是有效的 (Efficient Market), 即所有投资者拥有同样的市场信息.
  • 投资者偏向风险规避(Risk averse).
  • 投资者是理性的(rational), 即组合选择会根据期望收益和风险
  • 股票或资产没有交易成本, 允许卖空(short), 且收益可以全部投资(fully invested)

对 CAPM 的常见表述

特定投资组合的预期回报 $E[r_{a}]$ 可表述为:

\[E[r_{a}] = r_{f} + \beta_{a}(E[r_{m}]-r_{f}) \tag1\]

其中 $r_{f}$ 是无风险回报(如国债券回报),$E[r_{m}]$ 是市场的预期回报,通常由标准普尔500指数等指数的回报率来衡量,$\beta_{a}$ 衡量投资相对于市场的波动性,可表述为:

\[\beta_{a} = \frac{\text{Cov}(r_{a},r_{m})}{\text{Var}(r_{m})} \tag2\]

因此,该模型假设 $E[r_{a}]$ 与数量 $(E[r_{m}]-r_{f})$ 之间存在线性关系,也称为市场溢价,受系数 $\beta_{a}$ 影响。如果我们想衡量模型中关于无风险利率 $r_{f}$ 的所有回报,从而在数量 $(E[r_{a}]-r_{f})$ 和市场溢价 $(E[r_{a}]-r_{f})$ 之间构建线性回归关系,可表述为:

\[(E[r_{a}] - r_{f}) = \alpha + \beta_{a}(E[r_{m}] - r_{f}) \tag3\]

通过这种方式,$\alpha$ 衡量了现实生活中所测量的预期收益 $E[r_{a}]$ 之间的差异,以及我们的投资的预期回报:

\[\alpha = E[r_{a}] - \left(r_{f} + \beta_{a}(E[r_{m}] - r_{f})\right) \tag4\]

示例说明

以下代码示例

代码示例:如何使用 pandas 和 NumPy 设计因子

machine-learning-for-trading-master
  │
  └───04_alpha_factor_research/
      │
      └───01_feature_engineering.ipynb

说明了如何设计基本因素。

欲运行本示例,要使用 /home/packt/ml4t/data/create_datasets.ipynb ,创建 assets.h5 文件。 首先,用 NASDAQ account 登录, 下载 WIKI/PRICES 数据,重命名为 D:\src\python3\machine-learning-for-trading-master\data (大小:1.67GB)

标普500 从左侧选择 Historical data ,将从1789年开始的Daily数据。下载文件存为。 ^spx_d.csv 。

代码示例:如何使用 TA-Lib 创建技术 alpha 因子

machine-learning-for-trading-master
  │
  └───04_alpha_factor_research/
      │
      └───02_how_to_use_talib.ipynb

说明了 TA-Lib 的用法,其中包括广泛的常用技术指标。这些指标的共同点是它们仅使用市场数据,即价格和数量信息。

附录中的笔记本 common_alpha_factors 包含许多其他示例。

代码示例:如何使用卡尔曼滤波器对 Alpha 因子进行降噪

machine-learning-for-trading-master
  │
  └───04_alpha_factor_research/
      │
      └───03_kalman_filter_and_wavelets.ipynb

演示了使用PyKalman包进行平滑的卡尔曼滤波器的使用及如何使用“PyWavelets”包处理小波。我们还将在 第 9 章 中开发配对交易策略时使用它。

代码示例:如何使用 Zipline 回测单因素策略

machine-learning-for-trading-master
  │
  └───04_alpha_factor_research/
      │
      └───04_single_factor_zipline.ipynb

开发并测试了一个简单的均值回归因子,用于衡量近期表现偏离历史平均水平的程度。短期反转是一种常见的策略,它利用了弱预测模式,即股价上涨可能会在不到一分钟到一个月的时间范围内均值回落。

运行本示例需切换至 backtest 环境,并下载数据。

conda activate backtest
zipline ingest -b quandl

* 代码示例:在 Quantopian 平台上结合来自不同数据源的因子

Quantopian 研究环境专为预测性 alpha 因子的快速测试而量身定制。这个过程非常相似,因为它建立在zipline 之上,但提供了更丰富的数据源访问。

笔记本 multiple_factors_quantopian_research (这实际上是该书第一版中的示例) 说明了如何不仅像以前那样从市场数据中计算 alpha 因子,而且还从基本面和替代数据中计算 alpha 因子。 因为 quantopian 服务已下架,所以在第二版的示例中已删除。

代码示例:分离信号和噪声——如何使用 alphalens

machine-learning-for-trading-master
  │
  └───04_alpha_factor_research/
      │
      └───06_performance_eval_alphalens.ipynb

用于预测(alpha)因子的性能分析,由 Quantopian 开源。它演示了它如何与我们将在下一章探讨的回测库zipline和投资组合绩效和风险分析库pyfolio 集成。 运行本示例需切换至 backtest 环境,并使用 04_single_factor_zipline.ipynb 中下载的数据。

conda activate backtest

资源

参考

  • [1] Markowitz H. Portfolio Selection Efficient Diversification of Investments. John Wiley&Sons[J]. Inc, New York, 1959.
  • [2] Treynor, J. L. Market Value, Time, and Risk. Unpublished manuscript. “Rough Draft” dated 8/8/1961:#95-209. //Toward a Theory of Market Value of Risky Assets. Unpublished manuscript. “Rough Draft” dated 1962. //In Asset Pricing and Portfolio Performance.R. A. Korajczyk (editor), London: Risk Books, 1999:15–22.
  • [3] Sharpe W F. Capital asset prices: A theory of market equilibrium under conditions of risk[J]. The journal of finance, 1964, 19(3): 425-442.
  • [4] Lintner J. The valuation of risk assets and the selection of risky investments in stock portfolios and capital budgets[M]//Stochastic optimization models in finance. Academic Press, 1975: 131-155.
  • [5] Mossin J. Equilibrium in a capital asset market[J]. Econometrica: Journal of the econometric society, 1966: 768-783.
  • [6] Sullivan E J. A brief history of the capital asset pricing model[J]. APUBEF Proceedings, 2006: 207-210.
  • [7] French C W. The Treynor capital asset pricing model[J]. Journal of Investment Management, 2003, 1(2): 60-72.