什么是量化交易
直觉
「量化交易」一句话概括:把投资决策写成规则、交给数据和算法去执行,而不是凭直觉拍脑袋。
主观交易者盯着新闻、财报、K 线,在心里权衡买卖;量化交易者把这些「权衡」翻译成可计算、可回测、可复现的公式与流程:
- 系统化(systematic):规则固定,不随情绪摇摆;
- 数据驱动(data-driven):用历史数据验证想法是否真的赚钱;
- 可度量(measurable):每一笔盈亏都能拆解、归因、改进。
:::note 这本书的边界 我们讨论的是研究级量化:如何形成策略、如何回测、如何评估。至于「把策略接到券商 API 实盘下单」这类工程问题,留到模块 11 的进阶附录。 :::
两个核心概念:Alpha 与 Beta
任何一段投资收益,大致可以拆成两部分:
- :某资产(或策略)的收益;
- :市场收益(如大盘指数);
- (贝塔):跟着大盘「随波逐流」的程度。 表示与大盘同涨同跌;
- (阿尔法):与大盘无关的超额收益——这才是量化人真正想赚的钱;
- :噪音。
「人话」解释:Beta 是顺风车,Alpha 是你自己的本事
买大盘指数 ETF,你赚的是 Beta——大盘涨你就涨,跌你就跌,谁都能上车。 量化策略的目标是制造 Alpha——在「不依赖大盘涨跌」的前提下,依然稳定赚到的钱。 所以评估一个策略,往往要先「扣掉 Beta」,看看剩下的 Alpha 还剩多少、稳不稳。 这就是模块 1.6「CAPM 与回归」要做的事。
量化研究的全流程
一条典型的量化流水线长这样:
想法 → 数据 → 信号(因子) → 组合构建 → 回测 → 风控/归因 → (实盘)
↑__________________________________________|
迭代改进
- 想法:一个可检验的假设,比如「动量强的股票短期内还会继续强」;
- 数据:找到能验证它的历史数据;
- 信号 / 因子:把想法翻译成一个每期可计算的数值;
- 组合构建:决定怎么按信号分配仓位;
- 回测:在历史数据上「假装」交易,看赚不赚钱;
- 风控 / 归因:赚的钱到底是 Beta 还是 Alpha?最大能亏多少?
- 迭代:不满意就回到第 1 步。
后续每一个模块,都是这条流水线上某一环的展开。
可运行案例:把收益拆成 Alpha 与 Beta
下面这段代码模拟一只股票的收益:它有一个固定的 (比大盘更猛),和一个正的 (年化约 3%)。我们用线性回归把两者重新拆出来,看看能否还原真值。
import numpy as np
import matplotlib.pyplot as plt
rng = np.random.default_rng(7)
# —— 模拟数据 ——
n = 252 * 4 # 4 年日频
market = rng.standard_normal(n) * 0.01 # 大盘日收益(均值约 0)
beta_true, alpha_annual = 1.2, 0.03
alpha_daily = alpha_annual / 252
noise = rng.standard_normal(n) * 0.008
stock = alpha_daily + beta_true * market + noise # R_i = alpha + beta*R_m + eps
# —— 最小二乘回归:x=market, y=stock ——
x, y = market, stock
slope = np.cov(x, y, ddof=0)[0, 1] / np.var(x) # = beta 的估计
intercept = y.mean() - slope * x.mean() # = alpha(日频) 的估计
print(f"真值 beta={beta_true:.2f} alpha(年化)={alpha_annual:.2%}")
print(f"估计 beta={slope:.3f} alpha(年化)={intercept*252:.2%}")
plt.figure(figsize=(8, 4.5))
plt.scatter(market, stock, s=6, alpha=0.4, label="每日样本")
xs = np.linspace(market.min(), market.max(), 50)
plt.plot(xs, intercept + slope * xs, color="crimson", lw=2,
label=f"回归线: slope(beta)={slope:.2f}")
plt.axhline(0, color="gray", lw=0.8); plt.axvline(0, color="gray", lw=0.8)
plt.xlabel("市场收益 R_m"); plt.ylabel("个股收益 R_i")
plt.title("把收益拆成 Beta(斜率) 与 Alpha(截距)")
plt.legend(); plt.tight_layout(); plt.show()
小结
- 量化 = 把投资规则化、数据化、可度量;
- 收益 = Alpha(自己的本事)+ Beta(大盘的顺风车)+ 噪音;
- 量化研究是一条「想法→数据→信号→组合→回测→风控」的迭代流水线。
下一节我们学会怎么用这个网站,亲手跑出第一段代码。