簡單介紹下vnpy的價差交易模組 spread_trading
之前說從CTA趨勢轉日內交易,做了些價差交易策略,也實盤跑了下。結果不太理想,沒這麼賺錢;總結一句話,交易費用和payup 超價吃掉大部分收益,使得雖然每筆交易看看有收益,實際並不怎麼樣。
雖然現在不用價差交易策略,不過還是簡單介紹下吧。
VNPY價差交易的簡單邏輯
價差交易原理很簡單,就是一對或者一組品種其之間價格有一定關聯度,這個可以跑透過計算協方差Covariance矩陣來量化驗證,這個中可能有正向或者反向,甚至多個組合的。
當價格差大於或者小於一個閾值的時候,比如價格差的歷史波動率的3倍;可以假設是異常,應該會迴歸均值,此時可以按照反向做一個組合買賣,等迴歸均值時候,再平倉獲利。
所以,vnpy價差交易的步驟也是,定義價差組合,定義買賣價差方法,就是如果買價差組合時候,是買入A賣出B,還是如何;最後定義什麼時候買賣組合,就是價差交易策略。這些搞清楚,也就是清楚了。
價差交易的類
不同於CTA策略,價差交易還有些專用的類,這裡介紹下。
SpreadData, 這個就是前面說的價格組,或者叫價差組;就是多個不同品種組合,其實可以理解為就是一個新的品種,組合出來的品種;按照你定義計算公式計算出價格,賣出價ask和賣出量,還有買入量和買入價格;還可以組合出tick資訊,這些tick資訊設定可以組合出bar,反正你當作一個新的品種處理。
另外SpreadData還包括交易後的成交價格,和持有手數等,這些都是組合自己計算的。
這裡要注意的是min_volume,可以理解為螺紋鋼的10噸一手,這個也是組合的數量最小計量。如果為2的,主動腿買了2個單位,對於價差組就是2/2 = 1 手。
LegData,價差組就是多個品種的組合,這裡用leg來代表一個品種,做過SWAP互換的應該很好理解。這裡LegData對應就是真的品種。
SpreadAlgo:價差演算法,這個不是太直觀;因為買入或者賣出一個組合,實際上是按照這個組合下的品種組合或,買入一些或者一個品種,賣出一些品種。那麼價差演算法,就是錄入一個這樣買賣指令。
這裡就有個主動腿和超價的概念,打個比如組合是(rb2110 - rb2021),如果 價差在50以上時候,認為應該太大應該縮小。價差演算法就是價差在50的時候,賣出價格組合,演算法就會分解為應該賣出short螺紋鋼rb2110,買入buy螺紋鋼rb2021。那麼因為螺紋鋼 rb2021非主力合約,成交不活躍,應該先交易螺紋鋼rb2021,交易成交後,在按照賣出螺紋鋼rb 2021的價格,加上50,賣出rb2110,但是此時可能價格變動,為了成交,在賣出價格餘量(payup)來加以螺紋鋼rb2021。
這裡還有一個組合買賣價格差,就是ask和bid的差距,不同單一品種的1個價位差,組合可能是至少2個。這樣一來一去,就吃掉至少3到4點價差,加上買和賣雙邊手續費,至少7-8個點。
SpreadStrategy:把最難的價差組合搞清楚,價差交易策略就很簡單,就是按照價差組的價格走勢,傳送價差交易演算法,這裡的是透過start_long_algo / start_short_algo 這樣發出交易演算法,再由SpreadAlgoEngine去分解傳送真正交易請求;個人感覺中間計算太多次,速度有點拖。
總結下,核心就是把價差組理解為一個組合品種,對組合品種的買賣是用價差演算法來過渡實現。但是雙邊交易手續費和價格差和payup太佔用利潤。不太適合直接作為日內交易。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/22259926/viewspace-2782233/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- VNPY 價差交易模組的使用學習
- 簡單介紹python process模組Python
- python shutil模組簡單介紹Python
- 簡單介紹VNPY 1.9.2版本支援看穿式終端的流程
- JavaScript 模組化程式設計簡單介紹JavaScript程式設計
- VNPY中 Tick級別準高頻交易簡單策略
- python爬蟲:爬蟲的簡單介紹及requests模組的簡單使用Python爬蟲
- 簡單介紹一下 JSONJSON
- 簡單介紹Java String Methods(下)Java
- linux 下增加硬碟簡單介紹Linux硬碟
- Webpack 的簡單介紹Web
- Promise的簡單介紹Promise
- CFRunloopObserverRef 的簡單介紹OOPServer
- javascript如何實現模組程式設計簡單介紹JavaScript程式設計
- python3中的re模組簡單介紹及使用Python
- SVG簡單介紹SVG
- HTML簡單介紹HTML
- ActiveMQ簡單介紹MQ
- HTML 簡單介紹HTML
- JavaScript 簡單介紹JavaScript
- CSS 簡單介紹CSS
- SCSS 簡單介紹CSS
- UICollectionView 簡單介紹UIView
- css簡單介紹CSS
- SpringMvc的簡單介紹SpringMVC
- javascript的this用法簡單介紹JavaScript
- noscript的作用簡單介紹
- Redux的簡單概念介紹Redux
- ORACLE SEQUENCE的簡單介紹Oracle
- Node.js的模組載入方式與機制簡單介紹Node.js
- 介紹下VNPY的Event事件處理,和建立新事件型別事件型別
- 簡單介紹下各種 JavaScript 解析器JavaScript
- 簡單介紹一下Progressive Web App(PWA)WebAPP
- RPC簡單介紹RPC
- spark簡單介紹(一)Spark
- Flutter key簡單介紹Flutter
- Python簡單介紹Python
- <svg>元素簡單介紹SVG