為VNPY的K線序列管理工具ArrayManager增加對數收益率佇列
在做策略建模的時候,經常需要把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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 整數序列環形佇列佇列
- 找最小的k個數(優先佇列)佇列
- 在VNPY中策略中,使用分鐘線合成日K線
- 為VNPY增加資料庫記錄交易資料功能資料庫
- 2022-07-09:總長度為n的陣列中,所有長度為k的子序列裡,有多少子序列的和為偶數?陣列
- VNPY建立集中式的k線生成引擎,各個策略採用註冊訂閱,接收k線推送
- 增加連線數processes
- 和為 K 的子陣列陣列
- 訊息佇列效能對比佇列
- 佇列、阻塞佇列佇列
- 陣列模擬佇列 以及佇列的複用(環形佇列)陣列佇列
- iOS 多執行緒--GCD 序列佇列、併發佇列以及同步執行、非同步執行iOS執行緒GC佇列非同步
- 線性結構 佇列與棧佇列
- 刷題系列 - 合併兩個順序佇列為一個新的佇列佇列
- iOS執行緒、同步非同步、序列並行佇列iOS執行緒非同步並行佇列
- 為redhat增加apt軟體包管理工具(轉)RedhatAPT
- 9. 題目:對佇列實現棧&用棧實現佇列佇列
- 佇列-單端佇列佇列
- C語言 簡單的佇列(陣列佇列)C語言佇列陣列
- socket的listen()的backlog引數和未完成佇列、已完成佇列的關係佇列
- 阻塞佇列一——java中的阻塞佇列佇列Java
- synchronized 中的同步佇列與等待佇列synchronized佇列
- 訊息佇列為何如此重要?佇列
- c/c++線性迴圈佇列C++佇列
- 佇列 和 迴圈佇列佇列
- 【佇列】【懶排序】佇列Q佇列排序
- 佇列的一種實現:迴圈佇列佇列
- 你的佇列為啥一直重試 ?佇列
- laravel的佇列Laravel佇列
- C# 中的“智慧列舉”:如何在列舉中增加行為C#
- 佇列 手算到機算 入門 佇列 迴圈佇列佇列
- 圖解--佇列、併發佇列圖解佇列
- 單調佇列雙端佇列佇列
- 無序陣列求第K大的數陣列
- 佇列的順序儲存--迴圈佇列的建立佇列
- 為什麼要使用訊息佇列?佇列
- RabbitMQ,RocketMQ,Kafka 幾種訊息佇列的對比MQKafka佇列
- 棧和佇列實際應用對迴文數字 各種樹的學習佇列