【问题标题】:How can I measure volatility?如何衡量波动率?
【发布时间】:2009-08-26 19:01:27
【问题描述】:

我正在尝试确定排名的波动性。

更具体地说,在 X 个数据点上排名可以从 1 到 16(数据点的数量变化最大为 30)。

我希望能够测量这种波动性,然后以某种方式将其映射到百分比。

我不是数学极客,所以请不要对我吐出复杂的公式:)

我只想以最简单的方式编写代码。

【问题讨论】:

  • 给出的任何答案中是否缺少任何内容?

标签: math statistics formula measure volatility


【解决方案1】:

我认为最简单的第一步是 X 个数据点的标准差。

【讨论】:

    【解决方案2】:

    我认为Standard Deviation 是您正在寻找的。有一些公式要处理,但不难计算。

    【讨论】:

      【解决方案3】:

      鉴于您有一个小样本集(您说最多 30 个数据点)并且标准差很容易受到异常值的影响,我建议使用 interquartile range 作为波动率的度量。这是一个简单的计算,可以对分布在您的小样本集中的数据进行有意义的表示。

      【讨论】:

        【解决方案4】:

        如果您想要一些非常简单的东西,您可以将连续排名之间的绝对差异的平均值作为波动率。这具有递归的额外好处。使用这个进行初始化:

        double sum=0;
        for (int i=1; i<N; i++)
        {
            sum += abs(ranks[i]-ranks[i-1]);
        }
        double volatility = sum/N;
        

        然后,如果在时间 N+1 有可用的新排名,则为了更新波动率,您引入参数 K,其中 K 确定波动率测量适应波动率变化的速度。较高的 K 意味着较慢的适应,因此 K 可以被视为“衰减时间”或类似的东西:

        double K=14 //higher = slower change in volatility over time.
        double newvolatility;
        newvolatility = (oldvolatility * (K-1) + abs(rank[N+1] - rank[N]))/K;
        

        这也称为moving average(在这种情况下是排名的绝对差异)。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-11-20
          • 2015-07-07
          • 2013-11-09
          • 1970-01-01
          • 1970-01-01
          • 2015-04-05
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多