為VNPY的K線序列管理工具ArrayManager增加對數收益率佇列

張國平發表於2019-07-26

在做策略建模的時候,經常需要把K線轉換為可以正態分佈資料,這樣可以使用那些很牛吼吼的數學模型進行挖掘。

實現很簡單

c = ln(t1/t0)

像相信研究可以看看這個

如果我們考察單一投資品在總共 T 期內的表現,那應該用對數收益率,而非算數收益率。算術平均值不能 正確的反應一個投資品的收益率。比如一個投資品今年漲了 50%,明年跌了 50%,它的算數平均收益率為 0;但事實上,兩年後該投資品虧損了最初資金的 25%。相反的,對數收益率由於具備可加性,它的均值 可以正確反映出該投資品的真實收益率。比如這兩年的對數收益率分別為 40.5% 和 -69.3%,平均值為 -28.77%,轉換為百分比虧損就是 exp{-28.77%} - 1 = -25%。 

對數收益率的時序可加性讓我們能夠使用另外兩個利器:“中心極限定理”和“大數定律”。假設初始資 金 X_0(假設等於 1),ln(X_T) = ln(X_T/X_0) 就是整個 T 期的對數收益率。對數收益率的最大好處是它 的可加性,把單期的對數收益率相加就得到整體的對數收益率。

在VNPY的K線序列管理工具ArrayManager,可以加入下面程式碼。按照屬性返回對數收益率序列

@property
def percentLog(self):
    """獲取對數收益序列"""
    arrayold = self.closeArray[0:self.size - 1]
    arraynew = self.closeArray[1:self.size]
    return np.log(arraynew/arrayold)*100.0


傳統close 曲線

對數收益率後,把幾個突變極大極小值忽略後,就是一個很近似正態分佈,然後就可以用一堆模型來套用了。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/22259926/viewspace-2651920/,如需轉載,請註明出處,否則將追究法律責任。

相關文章