σμimplied vol · KKmax(S−K,0)udβρᵢⱼfat tailsPnL · drawdownyield · TdSₜ = μSₜ dt + σSₜ dWₜC = S·N(d₁) − K·e⁻ʳᵀ·N(d₂)σₚ² = wᵀΣwd₁ = [ln(S/K) + (r + σ²⁄2)T] ⁄ σ√T∂V/∂t + ½σ²S²·∂²V/∂S² + rS·∂V/∂S − rV = 0Sharpe = (Rₚ − R_f) ⁄ σₚVaR₉₉ = μ − 2.33σρ = Cov(X,Y) ⁄ σₓσᵧE[Rₚ] = Σ wᵢ·E[Rᵢ]φ(x) = e^(−x²/2) ⁄ √2πE[Rᵢ] = R_f + βᵢ(E[Rₘ] − R_f)dXₜ = θ(μ − Xₜ)dt + σ dWₜσ²ₜ = ω + α·ε²ₜ₋₁ + β·σ²ₜ₋₁C − P = S − K·e⁻ʳᵀΔ = ∂V/∂S Γ = ∂²V/∂S²p = (e^(rΔt) − d) ⁄ (u − d)rₜ = ln(Pₜ ⁄ Pₜ₋₁)E[Xₜ₊₁ | ℱₜ] = Xₜf* = (bp − q) ⁄ bz = (x − μ) ⁄ σP(N=k) = λᵏe^(−λ) ⁄ k!Θ = −∂V/∂Tν = S·φ(d₁)·√Tmin wᵀΣw s.t. wᵀμ = μ*∫Σ∂∞λ
uantCraft Academy路线图学习路线
Ctrl K
AO
+1.2k 位学习者
登录加入 ↗
路线图学习路线
AO
+1.2k 位学习者
登录
  • English
  • Français
  • Español
  • العربية
  • Português
  • Deutsch
  • 日本語
  • 中文
σμimplied vol · KKmax(S−K,0)udβρᵢⱼfat tailsPnL · drawdownyield · TdSₜ = μSₜ dt + σSₜ dWₜC = S·N(d₁) − K·e⁻ʳᵀ·N(d₂)σₚ² = wᵀΣwd₁ = [ln(S/K) + (r + σ²⁄2)T] ⁄ σ√T∂V/∂t + ½σ²S²·∂²V/∂S² + rS·∂V/∂S − rV = 0Sharpe = (Rₚ − R_f) ⁄ σₚVaR₉₉ = μ − 2.33σρ = Cov(X,Y) ⁄ σₓσᵧE[Rₚ] = Σ wᵢ·E[Rᵢ]φ(x) = e^(−x²/2) ⁄ √2πE[Rᵢ] = R_f + βᵢ(E[Rₘ] − R_f)dXₜ = θ(μ − Xₜ)dt + σ dWₜσ²ₜ = ω + α·ε²ₜ₋₁ + β·σ²ₜ₋₁C − P = S − K·e⁻ʳᵀΔ = ∂V/∂S Γ = ∂²V/∂S²p = (e^(rΔt) − d) ⁄ (u − d)rₜ = ln(Pₜ ⁄ Pₜ₋₁)E[Xₜ₊₁ | ℱₜ] = Xₜf* = (bp − q) ⁄ bz = (x − μ) ⁄ σP(N=k) = λᵏe^(−λ) ⁄ k!Θ = −∂V/∂Tν = S·φ(d₁)·√Tmin wᵀΣw s.t. wᵀμ = μ*∫Σ∂∞λ
uantCraft Academy路线图学习路线
Ctrl K
AO
+1.2k 位学习者
登录加入 ↗
路线图学习路线
AO
+1.2k 位学习者
登录
  • English
  • Français
  • Español
  • العربية
  • Português
  • Deutsch
  • 日本語
  • 中文
Matrix Decompositions 学习路线›模块 3 · 协方差与主成分分析›主题 3.2·~1小时中级

从零实现主成分分析

路线进度模块 3/5 · 主题 2/3
3.2 从零实现主成分分析
—实验得分— / 100总 XP—连续天数—

找到方差最大的方向

主成分分析寻找数据云变化最大的那个方向,再找与之垂直的下一个方向,依此类推。NNN 个资产的收益数据云处在 NNN 维空间,很难直接观察,但它的主方向能给独立的风险来源排序。做法很简短:对每一列去均值,构造协方差矩阵,取其特征向量并按特征值排序,把数据投影到前几个特征向量上。

Σ=1T−1XcTXc=QΛQT,Z=XcQ,Var⁡(zj)=λj,sj=λj∑iλi\Sigma=\frac{1}{T-1}X_c^{T}X_c=Q\Lambda Q^{T},\qquad Z=X_cQ,\qquad \operatorname{Var}(z_j)=\lambda_j,\qquad s_j=\frac{\lambda_j}{\sum_i\lambda_i}Σ=T−11​XcT​Xc​=QΛQT,Z=Xc​Q,Var(zj​)=λj​,sj​=∑i​λi​λj​​(1)

这里 XcX_cXc​ 是去均值后的 T×NT\times NT×N 收益矩阵,QQQ 的列是主方向(载荷),ZZZ 的列是得分,即新坐标下的数据。各得分互不相关,第 jjj 个的方差为 λj\lambda_jλj​,所以特征值恰好分摊总方差 tr⁡Σ\operatorname{tr}\SigmatrΣ。方向的符号是任意的:q\mathbf qq 与 −q-\mathbf q−q 是同一条直线。有两点要注意。去均值很重要,否则第一方向会部分指向均值。单位也重要:协方差矩阵的主成分分析被波动最大的变量主导,所以当变量尺度不同时要先标准化,也就是改用相关矩阵。

手算两个资产两个资产的协方差矩阵为 Σ=(4223)\Sigma=\begin{pmatrix}4&2\\2&3\end{pmatrix}Σ=(42​23​)。迹为 7,行列式为 8,所以 λ2−7λ+8=0\lambda^2-7\lambda+8=0λ2−7λ+8=0,λ=(7±17)/2\lambda=(7\pm\sqrt{17})/2λ=(7±17​)/2,即 5.5625.5625.562 和 1.4381.4381.438。第一主成分因此解释了总方差的 5.562/7=79.5%5.562/7=79.5\%5.562/7=79.5%。其方向满足 (4−5.562)q1+2q2=0(4-5.562)q_1+2q_2=0(4−5.562)q1​+2q2​=0,在不计符号时为 q1≈(0.788,0.615)\mathbf q_1\approx(0.788,0.615)q1​≈(0.788,0.615)。去均值后的观测值 (1,1)(1,1)(1,1) 的第一得分绝对值为 0.788+0.615=1.4030.788+0.615=1.4030.788+0.615=1.403。两个载荷同号,所以该成分是两个资产的加权平均。
  • 做法:去均值、协方差、特征分解、按特征值排序、投影到前几个方向。
  • 得分:互不相关,方差为 λj\lambda_jλj​;解释占比为 λj/∑λi\lambda_j/\sum\lambda_iλj​/∑λi​。
  • 注意:符号任意;先去均值;单位不同要标准化(相关矩阵)。
真实股票收益说明了什么对 2010 年以来 12 只美国大盘股的日收益率(4184 天),相关矩阵的第一主成分解释了约 40% 的方差,且每只股票在其上的载荷同号:这就是市场。第二主成分解释约 12%,把股票分成几组,如科技股对防御股。其余十个分享剩下的 48%,且很难与噪声区分,这正是后面几课的主题。

实验:评分内容

  • PCA 的做法15 分
  • 第一特征值15 分
  • 解释占比15 分
  • 得分15 分
  • 何时标准化15 分
  • 关于得分的事实10 分
  • 为什么要去均值15 分
0/ 已答 7 题
任务
1排列步骤15 分未作答

把对收益矩阵做主成分分析的步骤按正确顺序排列。

拖动以重新排序;也可聚焦某项,按空格抬起,用方向键移动,再按空格放下。

  1. 1把去均值数据投影到前几个特征向量上得到得分
  2. 2构造协方差矩阵
  3. 3按特征值从大到小排列特征对
  4. 4减去每列的均值
  5. 5计算该矩阵的特征向量和特征值
2数值作答15 分未作答

求 Σ=(4223)\Sigma=\begin{pmatrix}4&2\\2&3\end{pmatrix}Σ=(42​23​)(迹 7,行列式 8)的较大特征值,保留三位小数。

lambda1=lambda_1 =lambda1​=允许误差:± 0.005
3数值作答15 分未作答

第一主成分解释了总方差的百分之几?保留一位小数。

share=share =share=允许误差:± 0.1
4数值作答15 分未作答

第一方向为 q1=(0.788,0.615)\mathbf q_1=(0.788,0.615)q1​=(0.788,0.615)。去均值后的观测值 (1,1)(1,1)(1,1) 的第一得分的绝对值是多少?保留三位小数。

score=score =score=允许误差:± 0.003
5选择15 分未作答

对一只波动率 30% 的股票和十只波动率 3% 的债券基金的协方差矩阵做主成分分析。会发生什么?怎么修正?

6选择10 分未作答

选出关于主成分得分与载荷的所有真命题。

7用文字解释15 分未作答

用一两句话说明为什么计算主成分之前必须对数据去均值。

数学模式键盘或 LaTeX 输入第 1/7 题 · Ctrl ⏎ 检查

登录后即可运行你的代码。

所有讲解均可免费阅读。创建账户或登录后,即可运行代码、运行测试并提交此实验。

  • 浏览器内 IDE 与 bash 终端,无需安装
  • 即时评分、XP 以及你在学习路线中的位置
创建账户登录
或
使用 GitHub 继续