
WHY上一篇说完正态分布的迷人假设今天我们聊聊现实上一篇我讲了正态分布在金融世界的统治地位——优雅、好用、但致命地低估了尾部风险。文章结尾留了个问题既然正态分布不够用那用什么替代答案不是一句话能说清的因为金融数据不正常有两个层面收益率的分布不正常——尾部太肥正态分布兜不住价格的分布不正常——价格不能为负而且涨起来是乘性的不是加减的这两个不正常分别对应两种在量化实战中使用频率极高的分布t分布专门治肥尾病对数正态分布专门描述价格是怎么走的你可能会问这些东西跟我的年化20%有什么关系关系大了。你做量化策略第一步就是建模——对收益率建模、对价格建模、对风险建模。模型选错了后面所有的回测结果、风控参数、仓位计算全是假的。我见过太多策略回测漂亮得不行一上实盘就翻车。很大一部分原因就是底层分布假设选错了。今天这篇我把t分布和对数正态分布讲透。不是纯数学推导而是从为什么用到怎么用到什么时候别用全链条说清楚。一句话总结正态分布是理论理想国t分布和对数正态分布才是现实世界的工具。搞懂它们你的建模才算入了门。HOW两个分布的数学本质、适用场景与实战选择一、t分布给肥尾量身定做的加厚版正态1.1 t分布长什么样t分布Students t-distribution的形状和正态分布很像——对称的、钟形的、中间高两边低。但关键区别在于尾部正态分布的尾部衰减极快e−x2t分布的尾部衰减慢得多多项式衰减所以尾部更厚、更肥这个肥的程度由一个参数控制——自由度degrees of freedomν表格自由度 ν尾部特征实际含义ν 1极肥就是柯西分布极端事件概率极高均值都不存在ν 3很肥方差存在但较大尾部风险显著ν 5中等肥四阶矩存在峰度可计算ν 10轻微肥接近正态但仍比正态厚ν 30非常接近正态几乎所有矩都存在尾部差异很小ν → ∞就是正态分布完全退化为正态关键认知自由度越低尾部越肥极端事件概率越高。自由度越大越接近正态分布。1.2 为什么金融收益率适合用t分布回头看上一篇的数据标普500日收益率的超额峰度约7-14。用正态分布去拟合尾部风险被低估10万倍以上。但用t分布拟合呢t分布的超额峰度公式为 ν−46当ν 4时。如果令超额峰度 10解出ν ≈ 4.6。也就是说用自由度约为5的t分布就能捕捉到金融数据中观察到的肥尾特征。具体对比假设均值0日波动率1%事件正态分布预测概率t分布(ν5)预测概率现实观察单日跌幅 3%0.13%1.2%~1-2%单日跌幅 5%0.00006%0.25%~0.3%单日跌幅 7%≈00.08%~0.1%t分布的预测与现实数据的吻合度比正态分布好了几个数量级。1.3 t分布在量化中的实战应用应用场景一策略回测中的显著性检验你回测了一个策略年化收益25%夏普比率1.8。但你只跑了3年约750个交易日。这个收益是真有alpha还是运气好如果你用正态分布做t检验会高估显著性因为正态假设尾部太薄。用t分布做检验结论更稳健。操作步骤计算策略的日收益率序列用t分布而非正态计算均值的置信区间如果95%置信区间的下界仍 0策略才有统计显著的alpha应用场景二风险建模中的肥尾VaR标准VaR假设正态99%分位数对应的z值为2.33。但如果收益率服从t分布(ν5)99%分位数对应的t值为3.36——比正态假设下的VaR高了44%。这意味着如果你用正态VaR来设定止损线和仓位上限你的实际风险承受能力被高估了近一半。应用场景三参数估计的稳健性用正态分布做MLE最大似然估计一个极端异常值就能把均值和方差拉偏。t分布因为尾部更厚对异常值的敏感度更低参数估计更稳健。这在金融数据中特别重要——你的数据里总会有几次史诗级暴跌t分布不会被它们带跑。1.4 t分布的局限t分布是对称的无法捕捉金融数据的负偏度下跌比下跌更猛t分布假设尾部行为一致但实际中上行和下行尾部可能不对称自由度ν的估计本身有不确定性小样本下不太稳定多资产联合建模时t-copula的计算量比高斯copula大得多二、对数正态分布价格为什么只能涨到天上不能跌到地下2.1 对数正态分布长什么样先说定义如果X服从正态分布那么e^X就服从对数正态分布Log-Normal Distribution。反过来如果价格S服从对数正态分布那么ln(S)服从正态分布。对数正态分布的特征取值范围(0, ∞)——只能为正不能为负形状右偏正偏度右边拖着一条长长的尾巴含义价格可以翻倍、翻三倍、翻十倍但不能跌到零以下这完美匹配了金融资产价格的两个基本特征价格不能为负你不可能倒贴钱买一只股票收益率是乘性的涨10%是在前一个价格基础上×1.1不是加一个固定值2.2 为什么资产价格是对数正态的这要从Black-Scholes模型说起。Black和Scholes在1973年做了一系列假设资产价格连续交易收益率独立同分布收益率服从正态分布无风险利率和波动率为常数如果收益率 rSdS 服从正态分布那么对价格S取对数ln(ST)ln(S0)(r−2σ2)TσT⋅Z其中Z是标准正态变量。因为右边是正态的所以 ln(ST) 是正态的因此 ST 是对数正态的。这就是Black-Scholes公式的底层逻辑链收益率正态 → 价格对数正态 → 期权可以定价。2.3 对数正态分布在量化中的实战应用应用场景一资产价格模拟蒙特卡洛方法当你需要模拟未来价格路径时比如期权定价、压力测试直接在正态分布上模拟价格会出问题——可能出现负价格。正确做法模拟收益率 r ~ N(μ, σ²)价格路径 S_t S_{t-1} × exp(r)这样价格永远是正的且收益率分布保持正态。应用场景二几何布朗运动GBMGBM是金融建模中最基础的价格过程模型dStμStdtσStdWt这个方程的解就是STS0exp((μ−2σ2)TσWT)WT 是正态的所以 ST 是对数正态的。几乎所有金融工程教材的第一个价格模型都是这个。应用场景三收益率的对数收益率转换在量化分析中我们常用对数收益率而非简单收益率简单收益率对数收益率对数收益率的优势如果价格是对数正态的对数收益率就严格服从正态分布对数收益率具有时间可加性周的收益率 每天对数收益率之和当收益率较小时对数收益率 ≈ 简单收益率差异可忽略2.4 对数正态分布的局限尾部太薄对数正态的右尾虽然比正态厚但仍然不够肥。真实价格的极端上涨如meme stock暴涨100倍概率被严重低估波动率不是常数GBM假设σ不变但真实市场波动率会变化微笑曲线、波动率聚集跳跃缺失对数正态假设价格路径连续但真实市场有跳空开盘gap、突发事件尾部改进方案Merton跳扩散模型在GBM基础上加入泊松跳跃、随机波动率模型Heston模型三、怎么选t分布 vs 对数正态 vs 正态三种分布在量化建模中的定位完全不同不是选一个替代另一个的关系而是各管一摊维度正态分布t分布对数正态分布建模对象收益率理论近似收益率肥尾修正价格路径模拟尾部特征薄尾厚尾可控右偏厚尾对称性对称对称右偏取值范围(-∞, ∞)(-∞, ∞)(0, ∞)核心参数μ, σμ, σ, νμ, σ典型应用理论推导、CLT近似风险建模、显著性检验价格模拟、期权定价实战频率★★★★★★★★★★选择原则1.对收益率建模理论推导用正态简洁、有CLT支撑风险管理用t分布肥尾更真实高频数据可以用正态大数定律生效日频/周频数据用t分布肥尾效应明显2.对价格建模基准模型用对数正态/GBM行业标准需要捕捉极端价格用跳扩散模型需要拟合波动率微笑用随机波动率模型3.做策略回测收益率序列的统计分析用t分布做假设检验蒙特卡洛模拟价格路径用对数正态压力测试用历史模拟不依赖任何分布假设一句话收益率用t分布看风险价格用对数正态做模拟正态分布做理论推导。三者各有分工不是替代关系。WHAT掌握两个分布后你的建模能力升级在哪核心认知清单t分布是加厚版正态——通过对自由度ν的控制灵活调整尾部厚度。ν越小尾部越肥对极端事件的捕捉能力越强对数正态分布是价格的自然语言——价格不能为负、收益率是乘性的这两个基本事实决定了价格服从对数正态Black-Scholes模型的底层逻辑收益率正态 → 价格对数正态 → 期权可定价。理解这条链条期权定价不再是黑盒t分布和正态分布不是二选一理论推导用正态风险建模用t分布价格模拟用对数正态——三者各有分工所有分布模型都是近似真实金融数据比任何单一分布都复杂需要组合使用压力测试补充实战应用升级路径第一步检查你当前模型的分布假设你的VaR是否假设正态如果是用t分布重算一遍看看风险被低估了多少你的蒙特卡洛模拟是否在正态分布上直接模拟价格如果是改成对数正态你的回测显著性检验是否用了正态z检验换成t检验第二步参数估计实操用Python估计t分布的自由度νimport scipy.stats as statsimport numpy as np# 假设returns是你的日收益率序列returns np.array([...])# 用最大似然估计拟合t分布params stats.t.fit(returns)# params返回 (df, loc, scale) (ν, μ, σ)print(f自由度 ν {params[0]:.2f})print(f位置 μ {params[1]:.6f})print(f尺度 σ {params[2]:.6f})自由度ν的诊断意义ν 3尾部极肥你的资产风险极高需要非常保守的仓位管理3 ν 5典型金融资产特征中等肥尾5 ν 10轻度肥尾接近正态但不可忽视尾部ν 10非常接近正态正态近似可接受第三步对数正态价格模拟实操python# GBM价格路径模拟import numpy as npS0 100 # 初始价格mu 0.10 # 年化收益率10%sigma 0.20 # 年化波动率20%T 1 # 1年dt 1/252 # 日步长n_steps 252# 生成正态随机收益率Z np.random.standard_normal(n_steps)log_returns (mu - 0.5 * sigma**2) * dt sigma * np.sqrt(dt) * Z# 计算价格路径永远为正prices S0 * np.exp(np.cumsum(log_returns))第四步正态 vs t分布的VaR对比置信水平正态VaR乘数t(ν5)VaR乘数差异95%1.6452.57156%99%2.3263.36545%99.5%2.5764.03257%如果你的日持仓是$100万用正态99%VaR算出来是$2.33万。但用t(ν5)算出来是$3.37万——** 差了45%超过1万美元 **。这1万美元的差距就是你的模型选错分布所付出的认知税。行动清单拉取你主力策略的日收益率序列用scipy.stats.t.fit()拟合t分布记录自由度ν对比正态VaR和t分布VaR在99%置信水平下的差异量化认知税检查你的蒙特卡洛模拟代码确保价格路径用对数正态乘exp而非正态加delta在策略回测报告中同时报告正态假设和t分布假设下的VaR增加信息密度对自由度ν做滚动窗口分析观察市场不同阶段平静vs危机的尾部变化一句话总结金融数据的不正常不是bug是feature。t分布告诉你尾部有多肥对数正态告诉你价格怎么走。掌握这两个分布你的量化建模才算从理想国走进真实世界。下一篇预告第27篇——相关性分析为什么分散投资不是简单的多买几只股票