2018年5月17日 星期四

順勢交易系統實作暨逐年評估 歷史資料下載與連續期貨價格資料調整



    這篇文章有兩個重點,一是解釋為什麼要將歷史期貨價格作成連續期貨資料,二是實際示範怎麼將下載來的台指期價格資料作成連續價格期貨。


中長期交易系統才需要作調整

  基本上所有的期貨類別在不同月份之間都存在價差,其反映的可能是儲存成本(例如天然氣期貨)或股利與利率(例如股價指數期貨)等等因素,一般來說具有顯著儲存成本的商品在行情沒有波動的狀況下會呈現普遍的正價差,也就是遠月契約價格高於近月契約,而台指期這種會受到現金股利影響的則是逆價差,也就是遠月契約價格低於近月契約。

  如果交易系統的週期屬於中長期,而且常常會經歷換月轉倉的話,在歷史回測或是期貨價格資料維護時就一定要做連續期貨價格調整,否則會受到根本不存在的幽靈走勢影響(詳見連結);相對的,如果是僅使用日內資料的當沖系統,就不用在意換月價差的部分了,換言之,需要作此調整的是那些會經歷轉倉的交易系統。

銜接點的挑選

  既然連續價格資料是將近遠月契約之間連接成一個連續的價格序列,那麼銜接點的選擇就很重要了,不同的銜接點會使調整後的資料有所差異(雖然對中長期系統差異不大)
一般說來,因為目的是轉倉,所以都是選擇近遠月契約流動性相當的時刻,我個人的習慣上,都是在結算前一天的收盤作轉倉,因此在製作連續期貨資料時,設定的銜接點也都是結算前一天的收盤價。但這純粹是我個人的偏好而已,如果你的習慣是在其他時刻轉倉,或許也可以考慮其他的銜接點,只要有充分的流動性即可。

台指期歷史資料的下載與調整實作

  你可以直接上台灣期貨交易所的網站,在「交易資訊」->「資料下載專區」中即可以找到台指期自交易以來的所有資料



  可以經由「年度行情下載」取得2017以前的年度日線資料,解壓縮之後,利用excel的排序功能依序將台指期(代號TX)獨立出來(前幾個月也只有台指期這個契約,往後就越來越多)並且按照各月份契約排序



  可以看到台指期是從199809開始的,第一個交易日是1998/7/21,而這個月份的契約是到1998/9/16結算,如果銜接點是結算前一天的話,我們一直到1998/9/15為止都是採用199809的契約價格,所以我們將1998/9/15()之前的價格資料都複製到另外一個工作表



  接著就要做銜接的動作了,銜接的目的是要將轉倉時刻的價差消去,我們可以看到1998/9/15當天,九月份契約的收盤價是6825,而十月份契約的收盤價是6720,兩者間有逆價差105點。而要消去價差的話,有兩種做法,一是將九月份契約減去105點,另一種則是將十月份契約加上105點,但是因為隔天九月份契約就結算掉了,我們也會從隔天開始使用十月份契約的價格資料,所以比較省事的做法自然是將之前所有九月份契約的價格資料通通減去105點,如此一來也可以維持最新月份契約的價格正確性。

  所以我們將H欄設定為價差調整的欄位,從H2開始設定為-105



  接著把開高低收四個價格都加上這個調整價差,我們在I2欄位鍵入「D2+H2」,而J2欄位鍵入「E2+H2」、K2欄位鍵入「F2+H2」、L2欄位鍵入「G2+H2」,然後將游標移至L2欄位對齊右下角連擊兩下滑鼠左鍵,接下來的欄位便會按照同樣的邏輯運算


  這時記得檢查調整後的收盤價是不是跟要銜接月份契約的收盤價一致了,此時應該是6720,跟1998/9/15當天十月份契約的收盤價一樣。


  這樣就完成一次的轉倉調整了,我自己的習慣是調整完後就會用調整後的價格資料取代舊的價格資料,也就是將IJKL欄位的價格資料複製貼上到DEFG(貼上時記得選擇「值」),這樣左邊的DEFG就會變成調整後的價格資料,而IJKL欄位則暫時會變成錯誤的無意義資料,先不用理它沒關係。



  而從隔天1998/9/16開始,就應該要採用轉倉後的十月份契約價格資料,一直到十月份契約結算的前一天1998/10/20為止



  接著則是繼續作十月銜接到十一月的調整,請注意,只要有換月就要做調整,而且是銜接點之前的每一個價格資料都要調整。1998/10/20當天十月份契約的收盤價是6812,而十一月份契約的收盤價則是6750,所以要調整的價差為-62,此時我們將H欄位的數字改成-62,並且連同IJKL欄一起下拉對齊左邊,這樣一來就完成了第二次調整,一樣要記得檢查最後一個數字是不是6750


  之後就是仿照之前的步驟一路調整下去,直到最新的價格資料為止,熟練的話大概五分鐘可以做完一年份的12次調整,1998至今的資料應該兩小時內可以搞定才對,當然,似乎有某些軟體可以幫我們做這樣的銜接,但我自己是沒有試過,而如果你的銜接點比較特別,可能還是要自己手動維護才行。(若需要已經做完調整的台指期連續價格資料,可以來信向我索取)

  股價指數大部分都是近月契約的流動性最高,但是其他商品期貨則不一定,建議在銜接時要以流動性最佳的月分為主,避免作出交易性不高的連續價格資料。

  下一篇我們將開始利用已經調整完價差的連續期貨價格資料,在excel上作一些常見指標的編寫,或是自製特殊指標。

       最後附上新企畫進度異常緩慢的原因(誤


9 則留言:

  1. 有貓我就推!
    這就是那隻快餓死的貓!?

    回覆刪除
  2. 請問版大,+105在10月份合約跟-105點再9月份合約的連續月調整在回測的時候會不會有差異呢?
    如果模型有用到期貨報酬率作為計算參數,這樣報酬率是不是會有問題呢,謝謝您的分享

    回覆刪除
    回覆
    1. 要計算百分率或報酬率都無法使用連續期貨的價格資料,並須將當時的實際價格另外陳列在旁來計算才會準確

      刪除
    2. 謝謝版大的回覆,所以報酬率是參照原始價格作為計算而成的嗎?

      刪除
    3. 我自己如果會使用到百分率或是變動率計算的話,都會另外把原始價格列在旁邊的欄位做計算,價格的變化量(分子)是用連續價格計算,但是分母則使用原始價格

      刪除
  3. 您好,
    請問您的信箱地址是?
    因為想要和您索取已調整的台指期連續價格資料
    謝謝

    回覆刪除
    回覆
    1. 你好~可至以下連結下載 謝謝
      https://drive.google.com/file/d/1674qKgLbyTl8mNDU1CRcEH6_oJb4xQPE/view?usp=sharing

      刪除
  4. 請問一下已調整的台指期連續價格資料還可以提供嗎?原來的鏈結好像已經失效了, 謝謝

    回覆刪除