如何以百分比计算股票波动率?

机器算法验证 r 金融
2022-03-08 12:06:03

如何以百分比计算股票波动我必须使用 sd() 函数而不进行任何其他计算吗?

谢谢

4个回答

您正在寻找对数回报的标准偏差,适当年化并转换为百分比(即乘以 100)。

以下是根据每日价格计算年度成交量的示例:

library(tseries)
data <- get.hist.quote('VOD.L')
price <- data$Close
ret <- log(lag(price)) - log(price)
vol <- sd(ret) * sqrt(250) * 100

笔记:

  1. 上面的代码实际上应该使用针对公司行为(股息、拆分等)调整的价格。
  2. 250是一年中的(大约)交易日数。

当波动率被描述为百分比时,这意味着它是作为平均值的一部分给出的。因此,如果价格的标准差为 10,均值为 100,则价格可以描述为 10% 的波动。

在 R 术语中,这意味着:

vol_percent = sd(price) / mean(price)

编辑:这也可以很容易地在Wikipedia 文章中找到。

BNaul 的答案可能不是您要找的答案。如果要计算 Black-Scholes 式波动率,则需要计算对数回报的年化波动率。这意味着,计算对数回报系列ln(st/st1)对于每个t,取标准差,再按时间的平方根调整,得到年化数字。这种波动性可用于需要 Black Scholes vol 的定价模型。

股票收益波动是不可观察的,我们只能估计它。我假设您的意思是历史波动率,因为还有隐含波动率,它是根据股票期权估计的。

有几种估算方法。例如,看看这篇论文“测量历史波动率”。从最简单的方法开始,他们称之为“Close-to-close”,它类似于 Bloomberg 终端中的经典方法(“CLV”)。对照彭博检查你的结果总是一个好主意。如果您可以访问终端,请获取描述他们如何操作的文档。