证券投资中一则计算标准差和年化波动率的实例

2025年初,我们在 有福金融 UfqiFina 中引入了 夏普比率 ( Sharper Ratio ) 这一重要的技术指标。

在试运行阶段,夏普率总是偏高,与其他理财平台的数据相比,往往有数倍甚至10倍的差距,于是怀疑可能是计算过程有误。我们根据这些思路开始在程序及数据源上进行了逐一校对。
很快,我们发现了计算过程中的 Bug ,在计算收益率和标准差的时候,混用了数据单位,也即同样是年化收益率和标准差,有的地方写作小数形式,比如 0.15 , 而有的地方用了百分比形式,如 15%。0.15 和 15.0 混用,技术偏差导致了计算结果异常。

问题很快被修正了,可是统一了计算数据单位之后,我们发现在 有福金融 UfqiFina 上重新计算所得的 夏普率 又笔其他理财平台的偏低,往往也有数倍甚至是十倍的差距。这次就稍微复杂一些。往复查询了多轮没有结果,于是我们将原数据丢给了 DeepSeek ,请其帮忙计算一下,看看与我们的计算过程有何差异。
这篇文章记录这一过程,这是研读经济学著作的第四十六篇习作,之前的四十五篇各章节内容,请参考文末的链接。

1A. UfqiFina的原始交易数据

我们首先将 有福金融 UfqiFina 平台上的原始交易数据拿出一个小片段。证券交易数据结构及样例数据如下。

[ { “bgni”: 1161, “buyin”: 0.9067, “endi”: 1178, “sellout”: 0.9563, “earning”: 0.04960000000000009, “earningp”: 5.470387118120668, “holding”: 17, “bgnDay”: 1, “byType”: “”, “entryMa”: 10 }, { “bgni”: 1186, “buyin”: 0.9539, “endi”: 1203, “sellout”: 0.9669, “earning”: 0.013000000000000012, “earningp”: 1.362826292064159, “holding”: 17, “bgnDay”: 1, “byType”: “”, “entryMa”: 10 }, …. ]

我们将这个数据集及如下提示词递交给了 DeepSeek, 提示词:

“请计算这个日收益率数据集的标准差,年化波动率”

很快地,在 DeepSeek 的思考过程中出现了下面的内容:

… 首先,我需要明确这些数据是日收益率吗?从字段名”earningp”来看,可能代表的是收益率百分比,而且每个交易的持有期(holding)都是17天,但用户提到的是日收益率数据集,所以可能需要确认每个”earningp”是否对应每日的收益率。 …

她能够识别数据格式,并根据自己的认知推断出 earningp 是收益率百分比, holding 是持有天数(时长),再结合我们所给出的日收益率的提示语。恍惚中觉得, DeepSeek 可能真的快要成精,也有种一语点醒梦中人的感觉。

2B. 标准差及年化波动率计算过程

接着 DeepSeek 继续她接到的任务,接着分析:

... 然后,按照标准差的步骤计算:
1. 计算平均值:将所有”earningp”相加,除以数据点数量(24个)。
2. 计算每个数据点与平均值的差的平方。
3. 求这些平方差的平均值,得到方差。
4. 方差的平方根就是标准差。
之后,年化波动率通常是将日标准差乘以根号下252(假设一年有252个交易日)。但这里的数据是否是日收益率?如果每个数据点代表的是持有17天的收益率,这些年化波动率的计算方式会不同。例如,如果是17天的收益率,需要先计算每期的标准差,然后年化的话可能需要乘以根号(252/17)。但用户可能已经将这些视为日收益率,所以直接使用日标准差乘以根号252。
不过,根据数据中的”holding”:17,可能每个收益率是17天的持有期收益,所以需要转化为日收益率。…

…. 现在,我需要检查数据中的”earningp”是否可能为负值,例如第四个对象的-1.15%,是的,存在负收益,所以这些确实是百分比变化的数值,可能有正有负,符合收益率的特点。
接下来,具体计算步骤:
1. 提取所有24个”earningp”值,单位是百分比。
2. 计算平均值:sum(earningp)/24。
3. 每个数据点减去平均值,平方。
4. 求平方后的平均值,得到方差。
5. 标准差是方差的平方根。
6. 年化波动率:标准差 * sqrt(252)。….

逻辑链条有点长,中间 DeepSeek 意外中断了几次,我们多次使用,“请继续分析和计算” 的提示语,才将这个过程推进下去,尽管几轮对话后,最终形成了如下计算过程:

根据提供的24个持有期(每期17天)的收益率数据earningp字段),计算标准差及年化波动率的过程如下:

DeepSeek 计算标准差与年化波动率

拿到这样的计算结果,与我们人工手工推导的过程和结果完全一致,堪称完美。此外 DeepSeek 还给了补充说明,做了进一步的解释。

  1. 波动率意义:21.18%的年化波动率表明,该资产年化收益率在均值上下21%范围内波动的概率较高。
  2. 数据局限性:计算基于历史17日收益率,未考虑市场突发风险或极端事件影响。

3C. 认知发现

值得单独写一篇文章来记录下来,我们觉得有这几点让人印象深刻:

a. AI人工智能 DeepSeek 对格式数据的解读,准确性非常之高

在上文中,她能从众多字段中读取到 earningp 是收益率的百分比形式,解读到 holding 是持有天数(时长),这是令人惊叹的地方。为何不提其他字段,那些字段没有形成干扰吗?

b. 数据描述与用户输入不一致的解读与推断

提示词里是明白的说到是 每日收益率,而数据集的各种数据表明,不是 日收益率,而是每个 holding 时长的收益率。基于这些推理, DeepSeek 能够提示,甚至纠正用户的错误。这也是极其可贵的地方。

C. 分析问题并解决问题,从每期17天收益推导出每日收益率

当 DeepSeek 正确地解析数据,并且也正确地解读用户的需求之后,并没有提示用户错了,而是将这个过程中产生错误的原由做了一番分析,并试图给出解决问题的答案。

…. 不过,这里有个问题:通常年化波动率是基于日收益率计算的,然后乘以根号252(一年的交易日数量)。但用户的数据是每17天的收益率,所以需要调整计算方法。或者,用户可能希望将17天的波动率转换成年化。这时候需要明确如何年化。
首先,计算这24个17天收益率的平均值,然后计算标准差。这个标准差是17天收益率的波动率。要年化的话,需要考虑一年有多少个17天周期。一年大约有365/17≈21.47个周期。但通常,年化波动率是按日计算的,所以可能需要将17天的标准差转换为日波动率,再乘以根号252。
但用户的数据是每个周期17天的收益率,而不是每日的收益率。因此,可能需要另一种方法。假设每个周期的收益率是独立的,且每个周期17天,那么年化波动率可以通过将17天波动率乘以根号(252/17)。因为年化波动率=周期波动率 × sqrt(年周期数/周期长度)。这里,年交易日约252天,每个周期17天,所以年化波动率=17天波动率 × sqrt(252/17)。
不过,用户可能希望直接根据提供的17天收益率计算标准差,然后年化。我需要确认正确的计算方法。
….

这可能是最可贵的地方,指出错误,找到原因,并给出解决方案。层层推进,丝丝入扣,一气呵成。

行文至此,我们也大概可以回答开头提到的问题了——UfqiFina 在改进计算单位不统一的问题之后夏普比率由偏高变成了偏低,其背后的原因是,我们错误地把一定时长(如17天)的收益当作了每日收益率进行计算,这导致我们计算的标准差可能偏大。随后在年化波动率的过程中,进一步地放大了标准差(年化波动率)。
每日收益率的标准差的年化波动率公式: 标准差 x sqrt(252) ;
17天时长收益率的标准差的 年化波动率公式 : 标准差 x sqrt(252/17) ;
类似地, 每月收益率的年化波动率公式: 标准差 x sqrt(252/21) = 标准差 x sqrt(12) .

由于年化波动率放大了多倍或十多倍,在计算夏普率的公式中,

夏普比率 = ( 年化收益率 − 无风险收益率 ) / 年化波动率

​作为分母的 年化波动率被放大,夏普比率自然会相应地缩小。
一切真相大白,谢谢 DeepSeek , 良师益友。

这是研读经济学著作的第四十六篇习作,之前的各篇附列如下,最近的附列在前。

  1. 在零和且无法做空的非分红股票市场中实现最低收益最大化 2/2, https://ufqi.com/blog/market-no-dividend-zero-sum-no-buy-short-2nd/
  2. 在零和且无法做空的非分红股票市场中实现最低收益最大化 1/2, https://ufqi.com/blog/market-no-dividend-zero-sum-no-buy-short/
  3. 证券投资被忽视的技术指标—交易量 成交量 Volume , https://ufqi.com/blog/investment-ignored-factor-volume/
  4. 证券投资被低估的技术指标–资产相关性系数 Pearson CC 2/2, https://ufqi.com/blog/investment-undervalued-factor-pearson-cc-p2/
  5. 证券投资被低估的技术指标–资产相关性系数 Pearson CC 1/2,https://ufqi.com/blog/investment-undervalued-factor-pearson-cc/
  6. 金融证券投资趋势三要素与交易三指标, https://ufqi.com/blog/trend-by-3-element-and-buy-with-3-factor/
  7. 金融证券交易的市场中性风险对冲的投资策略5/5, https://ufqi.com/blog/investment-portfolio-to-market-neutral/
  8. 用 5W1H 方法思考证券投资与资产管理, https://ufqi.com/blog/investment-by-5w1h/
  9. 证券市场投资持仓与赌博中的凯利公式 Kelly Criterion , https://ufqi.com/blog/kelly-bet-with-security/
  10. 证券股票市场熊市中谁在买入? https://ufqi.com/blog/who-buy-in-bearish-stock-market/
  11. 11~45暂收起略过,请从上一节进入查询查看。
  12. —-
ufqifina
有福金融UfqiFina : https://ufqi.com/finance

有福金融 是一个旨在促进财富稳步增长的工具平台。
UfqiFina is a platform of tools designed to promote wealth growth steadily.

此条目发表在投资理财, 社会生活, 编程技术, 计算机技术分类目录,贴了, , , , , , 标签。将固定链接加入收藏夹。

证券投资中一则计算标准差和年化波动率的实例》有4条回应

  1. Pingback引用通告: 给孩子们讲解货币的时间价值: 从新概念英语中计算数学 | -UFQI-Blog

  2. Pingback引用通告: 证券投资中不确定性衡量指标: 年化波动率 Volatility | -UFQI-Blog

  3. Pingback引用通告: 证券投资十一大品类: 古寨楼货商会 | -UFQI-Blog

  4. Pingback引用通告: 再听已是曲中人–共情葛朗台 Grandet 老头: 理财高手的成功典范 | -UFQI-Blog

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注

Captcha Code