您好,登錄后才能下訂單哦!
這篇文章主要講解了“CUSUM在擇時交易中的應用方法是什么”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“CUSUM在擇時交易中的應用方法是什么”吧!
原理描述:CUSUM控制圖的設計思想是對信息加以累積,將過程的小偏移累加起來,達到放大的結果,從而提高檢驗小偏移的靈敏度。CUSUM作為一個統計量,其由來具有嚴格的數學推理,總的來說,是一個變點假設檢驗通過極大似然法推導得到的統計量。
具體推導不研究了,直接看具體引用
形成一個對數收益率的近似正太分布。如上圖,這里有一個上下允偏量k,這里設為k = 0.02, 先說上閾值, 那么時序隊列里面,下一個時段的對數收益率大于0.02,yi則差值為正;如果差值累計yi的和Ci大于h,比如h為0.5。則觸發向上趨勢。
其實就是如果多次超過允偏量收益率發生,或者一次非常大的收益率情況發生,使得c值大于h 就會觸發向上趨勢判斷。如果只是偶爾一次大于允偏量,那么下一次小于k (0.02)時候,差值為負值,和值Ci就變小了,這里Max的作用就是保證C為正,不會因為多次低于k值為負值。向下趨勢判斷也是同理。
代碼如下,這里調用ta-lib庫來計算均值和標準差,速度比起用numpy還快一些。用標準差做為允偏量k;5倍標準差為h 閾值。
# encoding: UTF-8 import numpy as np import pandas as pd import matplotlib.pyplot as plt import talib def detect_via_cusum_lg(ts, istart=30, threshold_times=5): """ detect a time series using cusum algorithm :param ts: the time series to be detected :param istart: the data from index 0 to index istart will be used as cold startup data to train :param threshold_times: the times for setting threshold :return: """ S_h = 0 S_l = 0 S_list = np.zeros(istart) meanArray = talib.SMA(ts,timeperiod = istart) stdArray = talib.STDDEV(np.log(ts/meanArray),timeperiod = istart) for i in range(istart+1, len(ts)-1): tslog = np.log(ts[i] / meanArray[i - 1]) S_h_ = max(0, S_h + tslog - stdArray[i-1]) S_l_ = min(0, S_l + tslog + stdArray[i-1]) if S_h_> threshold_times * stdArray[i-1]: S_list = np.append(S_list,1) S_h_ = 0 elif abs(S_l_)> threshold_times * stdArray[i-1]: S_list = np.append(S_list, -1) S_l_ = 0 else: S_list = np.append(S_list, 0) S_h = S_h_ S_l = S_l_ return S_list #數據導入 df5min = pd.read_csv("bar5rb8888.csv") dt0 = np.array(df5min["close"]) listup,listdown = [],[] s_list = detect_via_cusum_lg(dt0,istart=30, threshold_times=5) for i in range(0,len(s_list)): if s_list[i] == 1: listup.append(i) elif s_list[i] == -1 : listdown.append(i) plt.subplot(2,1,1) plt.plot(dt0, color='y', lw=2.) plt.plot(dt0, '^', markersize=5, color='r', label='UP signal', markevery=listup) plt.plot(dt0, 'v', markersize=5, color='g', label='DOWN signal', markevery=listdown) plt.legend() plt.subplot(2,1,2) plt.title('s_list') plt.plot(s_list,'r-') plt.show()
感謝各位的閱讀,以上就是“CUSUM在擇時交易中的應用方法是什么”的內容了,經過本文的學習后,相信大家對CUSUM在擇時交易中的應用方法是什么這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。