其他
金融数据统计分析:用描述统计、协方差收缩…
当需要分析收益分布、资产相关性、构建协方差矩阵、运行 CAPM 回归、检验 alpha 显著性、判断收益是否正态或估计置信区间时使用。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 47/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 85/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 50/100 ×0.15
适用场景
金融数据统计分析:用描述统计、协方差收缩通用
解决思路
- 估计样本方差或标准差时除以 `n - 1`(Bessel 校正),不要除以 `n`;收益标准差即“波动率”,年化公式为 `sigma_annual = sigma_period * sqrt(periods_per_year)`(月度乘 `sqrt(12)`,日度乘 `sqrt(252)`)。
- 用 Jarque-Bera 检验正态性:`JB = (n/6) * (skew^2 + excess_kurtosis^2 / 4)`,原假设为正态时服从 2 自由度卡方分布(5% 临界值 5.99);注意小样本(n 约小于 50)功效低,不拒绝只是弱证据,大样本下金融收益几乎总因厚尾(股票还有负偏)而被拒绝,应把检验当作筛查并结合偏度/峰度大小与极端观测判断。
- 估计协方差矩阵:`Sigma_hat = (1/(n-1)) (X - X_bar)^T (X - X_bar)`;当资产数 `p` 接近观测数 `n` 时矩阵病态或奇异,直接用于均值-方差优化会产生极端且不稳定的权重。
- 使用收缩估计改善协方差矩阵:`Sigma_shrunk = delta * F + (1 - delta) * Sigma_hat`,其中 `F` 是结构化目标(如缩放单位阵),`delta` 是收缩强度;Ledoit-Wolf (2004) 推导出使与真实协方差矩阵的期望平方 Frobenius 距离最小的 `delta`,以少量偏差换取大幅方差下降,得到条件更好、可逆的矩阵和稳定权重;生产环境应使用 `sklearn.covariance.LedoitWolf`(脚本中的 `shrunk_covariance` 只是简化版)。
- 运行单因子 CAPM 回归 `R_i - R_f = alpha + beta * (R_m - R_f) + epsilon`:`beta = rho * sigma_i / sigma_m` 表示市场敏感度,`alpha` 是风险调整后超额收益,单因子回归中 `R^2 = rho^2`。
- 用 t 统计量判断回归系数:`t = coefficient / SE`,自由度为 `n - 2` 时 |t| 约大于 2 表示 5% 显著;alpha 点估计为正但 |t| < 2 不能作为有技能的证明。
- 防止回归过拟合:增加回归元总会提高 R-squared,应使用调整后 R-squared、AIC/BIC 或交叉验证。
- 用非参数自助法(bootstrap)估计统计量的抽样分布,适用于没有解析标准误(如 Sharpe 比率、alpha)、分布非正态或样本小的情况:从原始 `n` 个观测中有放回地抽取 `B` 个大小为 `n` 的重采样(B = 1,000–10,000);在每个重采样上计算统计量;用百分位法,`(1 - alpha)` 置信区间取自助分布的 `alpha/2` 和 `1 - alpha/2` 百分位数,自助标准误为 `B` 个统计量的标准差。
- 注意 i.i.d. 自助法忽略自相关和波动率聚集;对序列相关的收益序列应使用块自助法(block bootstrap)。
- 按标准分析流程执行:1) 描述统计——均值、波动率(n-1)、偏度、超额峰度,报告时年化;2) 分布检查——Jarque-Bera(注意低功效问题),检查偏度/峰度大小与最大离群值,判断基于正态的方法(参数 VaR、t 检验)是否可用;3) 协方差/相关性(多资产)——样本协方差与相关矩阵,若 `p` 相对 `n` 较大,优化前先做收缩;4) 回归诊断——CAPM 或因子回归,报告 alpha/beta 的 t 统计量与 R-squared,检查残差结构;5) 自助置信区间——对没有干净解析标准误的统计量(Sharpe、alpha、回撤)用自助法给出置信区间,而非只报点估计。
- 运行脚本 `scripts/statistics_fundamentals.py`:用 `uv run scripts/statistics_fundamentals.py`(PEP 723 内联元数据解析 numpy 和 scipy),或安装 numpy/scipy 后 `python3 scripts/statistics_fundamentals.py`;裸调用或 `--verify` 会在合成数据上演示并断言示例 1 的数值(12 个月序列的 mean 0.8167、std 2.195、JB 0.09),不匹配则非零退出;`--help` 列出可用方法;程序化使用应导入而非运行:`from statistics_fundamentals import StatisticsFundamentals`,再调用如 `StatisticsFundamentals.descriptive_stats(...)`。
适用边界 · 注意事项
- 不要用总体方差代替样本方差:从样本估计时始终用 `n - 1`(Bessel 校正)。
- 不要假设金融收益正态:股票收益通常负偏且超额峰度为正,基于正态的模型(标准 VaR)会低估尾部风险,应使用 Student-t 或非参数方法。
- 不要忽略非平稳性:收益分布随时间变化(制度变迁、波动率聚集),滚动窗口估计或 GARCH 可能比全样本统计更合适。