Python量化交易基礎講堂-線性迴歸擬合股價沉浮

在《Python實戰-構建基於股票的量化交易系統》小冊子中,咱們 對浙大網新這隻股票進行了線性迴歸分析,獲得了迴歸直線,以下所示: bash

因爲線性迴歸做用於股票收盤價的整個週期,所以選擇合適的時間段很是重要。好比以高鴻股份爲例,如下是它從2018一全年的走勢圖,以下所示:ui

從圖中能夠看到2018年4月10月是單邊降低趨勢,而從10月份開始轉爲上升趨勢。那麼咱們分別對這兩段週期作線性迴歸後發現,單邊降低通道的擬合直線角度爲-0.97度,而上升通道擬合直線角度爲1.5度,股價的擬合直線角度從-0.97度至1.5度的轉變過程,其實也是由跌轉漲的過程。spa

在制定量化交易策略時有一種方式是尋找現象中的特徵,根據特徵去生成交易條件。那麼這裏給你們一個衍生的策略思路,既然線性迴歸做用於股票收盤價的整個週期,先後兩段徹底相反的週期會彼此做用,最終影響擬合的角度值,咱們能夠設定窗口期用移動窗口的方式擬合股票的走勢。部分代碼以下:(能夠在小冊交流羣中獲取)3d

def fit_price(self, symbols, cycle=30, show=True):
    for index, stockName in enumerate(symbols.keys()):
        #kl_pd = getdata #參考fit_pick()方法,此處略
        kl_pd.fillna(method='bfill', inplace=True) 
        for kl_index in np.arange(0, kl_pd.shape[0]):
            if kl_index >= cycle:
                kl_pd.loc[kl_pd.index[kl_index], "ang"], x, reg_y_fit, y_arr = self.calc_regress_deg(kl_pd.Close[kl_index-cycle:kl_index])                  print(kl_pd.index[kl_index],kl_pd.iloc[kl_index, kl_pd.columns.get_loc("ang")])
        if show:
            kl_pd.fillna(method='bfill', inplace=True)
            plt.plot(np.arange(0, len(kl_pd.index)), kl_pd.ang)

    plt.title('compare ang')
    plt.legend(symbols.keys(), loc='best')
    plt.show()

複製代碼

執行該代碼examp_trade.fit_price(pick_stocks)生成浙大網新、高鴻股份、開山股份、水晶光電四隻股票的收盤價移動線性迴歸曲線圖,能夠發現角度曲線的拐點預示開始反轉爲新一輪的走勢。以下所示:code

把移動線性迴歸擬合曲線增長到顯示界面中,箭頭所指示的位置做爲買賣點目前來看是有必定的盈利特徵的,不過此處只是爲了擴展你們的思路達到教學目的而設定的策略,你們能夠在這個基礎上展開更多股票和週期的回測以驗證策略的可靠性。以下所示:cdn

關於完整代碼能夠加入小冊交流羣獲取。更多的量化交易內容歡迎你們訂閱小冊閱讀!!blog

相關文章
相關標籤/搜索