计算商品价格波动的算法

Algorithm to calculate the price volatility of a commodity

我正在尝试设计一种算法来计算商品价格波动的波动程度。

我希望它的工作方式是,如果一种商品的价格不断上涨和下跌,它应该比商品价格逐渐上涨然后迅速下跌的情况具有更高的分数。

这是我的意思的一个例子:

商品A:1 -> 2 -> 3 -> 2 -> 1 -> 3 -> 4 -> 2 -> 1

商品B:1 -> 2 -> 3 -> 4 -> 5 -> 6 -> 7 -> 8 -> 2

商品C:1 -> 2 -> 3 -> 4 -> 5 -> 4 -> 3 -> 2-> 1

商品A有一个'wave'的规律,它的价格有规律地上涨和下跌。

商品B有一个类似'cliff'的形态,先涨后跌。

商品C有'hill'的规律,先涨后跌。

A应获得最高排名,其次是C,其次是B。商品价格跟随的波浪模式越多,其排名就应该越高。

对可以做到这一点的算法有什么建议吗?

谢谢!

我的方法看起来像这样。

对于我的算法,我正在考虑上面的例子。

A: 1 -> 2 -> 3 -> 2 -> 1 -> 3 -> 4 -> 2 -> 1

B: 1 -> 2 -> 3 -> 4 -> 5 -> 6 -> 7 -> 8 -> 2

C: 1 -> 2 -> 3 -> 4 -> 5 -> 4 -> 3 -> 2-> 1

现在我将压缩这些列表,压缩是指获取递增或递减序列的起始值和结束值。

因此,在压缩列表后,列表将如下所示。

A: 1 -> 3 -> 1 -> 4 -> 1
B: 1 -> 8 -> 2
C: 1 -> 5 -> 1

完成后,我取第 i 和 i+1 个元素之间的差值,然后取平均值,根据平均值,我给它们排名。

所以 i 和 i+1 元素之间的区别看起来像这样

      2    2     3      3
A: 1 --> 3 --> 1 --> 4 --> 1  

      7     6
B: 1 --> 8 --> 2

     4      4
C: 1 --> 5 --> 1

现在让我们对这个差值求和并取平均值。

A: (2+2+3+3)/4 = 2.5
B: (7+6)/2 = 6.5
C: (4+4)/2 = 4

现在我们可以根据这个平均值分配排名

A < C < B

希望对您有所帮助!