3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
在量化投资和统计学中,标准差和方差的计算确实存在除以 n 和除以 n-1 两种公式。这并不是随意选择的,而是有着严格的统计学背景。简单来说,这取决于你的数据是总体(Population)还是样本(Sample)。
n。此时计算出的是真实的、确切的方差。n-1。在统计学中,这被称为贝塞尔无偏估计(Bessel's Correction)。因为样本的均值往往比总体均值更靠近样本数据本身,如果直接除以 n 会低估真实的总体方差。除以 n-1 可以修正这种偏差,得到总体方差的无偏估计。在量化投资中,我们通常选择第二种(除以 n-1,即样本标准差)。
原因如下:
std() 和方差的 var() 方法,默认的自由度(ddof)都是 1,也就是默认除以 n-1。在 JoinQuant 平台上编写策略时,你通常会用到 Pandas 和 NumPy,需要特别注意它们的默认行为差异:
df['close'].std() -> 默认 ddof=1np.std(array) -> 默认 ddof=0如果你希望在 NumPy 中计算样本标准差,需要显式指定自由度:np.std(array, ddof=1)。
总结:在量化投资中计算波动率或风险指标时,请统一使用除以 n-1 的样本标准差。当样本量 n 很大(例如计算过去252个交易日的年化波动率)时,除以 n 和 n-1 的结果差异微乎其微,但在严谨的量化研究中,保持统计学意义上的正确性(使用 n-1)是更好的习惯。