跨期套利
與跨品種套利不同,跨期套利是對(duì)同一市場(chǎng),同一品種,不同到期月份的合約之間進(jìn)行套利,這其中涉及到非主力合約的問(wèn)題。非主力合約成交量比較小,有的甚至低到幾十?dāng)?shù)百手,很容易被幾手交易量將價(jià)格拉至異常。這種異常實(shí)際較難捕捉,只會(huì)放大回測(cè)結(jié)果。我們以滬鎳為例,其主力合約主要在1,5,9月交割,其余月份成交量很低。而1月交割合約活躍期為7月至12月,5月交割合約活躍期11月到來(lái)年4月,所以在構(gòu)建1月交割合約和5月交割合約的套利組合時(shí),我們選擇11、12月作為套利策略實(shí)施的時(shí)間進(jìn)行測(cè)試,12月底若有持倉(cāng)強(qiáng)行平倉(cāng)。這個(gè)時(shí)間內(nèi),1月交割合約為主力合約,5月交割合約為次主力合約。
在套利時(shí),我們需要計(jì)算均衡價(jià)差,一般來(lái)說(shuō)有兩種算法:
模擬交割法:通過(guò)模擬交割過(guò)程各項(xiàng)費(fèi)用,來(lái)計(jì)算套利過(guò)程中的各項(xiàng)成本,從而得出均衡價(jià)差。優(yōu)點(diǎn):容易計(jì)算,價(jià)差變化下;缺點(diǎn):實(shí)際中價(jià)差很少恢復(fù)到這一水平
歷史滯后均值法:通過(guò)歷史的價(jià)差,選擇時(shí)間窗口長(zhǎng)度,得到均衡價(jià)差。優(yōu)點(diǎn):容易計(jì)算,價(jià)差動(dòng)態(tài);缺點(diǎn):不能保證樣本外價(jià)差恢復(fù)到這一水平
我們以選定套利組合的開盤價(jià)差為對(duì)象,使用歷史滯后均值法,取N日價(jià)差均值為中線,中線加上N日價(jià)差M倍均值為上軌,中線減去N日價(jià)差M倍均值為下軌來(lái)構(gòu)造布林帶通道,當(dāng)價(jià)差突破上軌,做空價(jià)差。我們選擇1,5,9這三個(gè)月份交割合約,滾動(dòng)的進(jìn)行測(cè)試,其中1-5合約測(cè)試的時(shí)間為11月和12月,5-9合約測(cè)試的時(shí)間為3月和4月,9-1合約測(cè)試的時(shí)間為7月和8月,所以全年有半年時(shí)間不進(jìn)行操作。
成交價(jià)設(shè)置為當(dāng)日開盤價(jià)。這里,考慮到次主力合約成交量可能較少,我們?cè)O(shè)置為3個(gè)滑點(diǎn)。
開倉(cāng)信號(hào)為價(jià)差超過(guò)上軌或者突破下軌,信號(hào)觸發(fā)當(dāng)天即按所設(shè)定的成交價(jià)進(jìn)行成交。平倉(cāng)信號(hào)達(dá)到中線附近或者,所設(shè)定的套利期現(xiàn)結(jié)束強(qiáng)行平倉(cāng)。
手續(xù)費(fèi)設(shè)為6元一手
回測(cè)時(shí)間為2015年5月至2017年4月
暫不考慮止損。
universe = ‘NIM0’ # 策略期貨合約
start = ‘2015-05-18’ # 回測(cè)開始時(shí)間
end = ‘2017-04-31’ # 回測(cè)結(jié)束時(shí)間
capital_base = 1000000 # 初試可用資金
refresh_rate = 1 # 調(diào)倉(cāng)周期
freq = ‘d’ # 調(diào)倉(cāng)頻率:m-> 分鐘;d-> 日
margin_rate = 0.09
commission = {‘NI’: (6, ‘perShare’)}
slippage = Slippage(3, ‘perShare’)
months = [‘07’, ‘08’, ‘11’, ‘12’, ‘03’, ‘04’]
mid, up, low = [], [], []
def initialize(futures_account): # 初始化虛擬期貨賬戶,一般用于設(shè)置計(jì)數(shù)器,回測(cè)輔助變量等。
futures_account.mean = deque([], maxlen=10)
futures_account.std = deque([], maxlen=10)
def handle_data(futures_account): # 回測(cè)調(diào)倉(cāng)邏輯,每個(gè)調(diào)倉(cāng)周期運(yùn)行一次,可在此函數(shù)內(nèi)實(shí)現(xiàn)信號(hào)生產(chǎn),生成調(diào)倉(cāng)指令。
if futures_account.current_date[5:7] in [‘11’, ‘12’]:
M0 = universe[:2] + str(int(futures_account.current_date[2:4])+1) + ‘01’
M1 = universe[:2] + str(int(M0[2:4])+(int(M0[4:])+4)/12)+’0’+str((int(M0[4:])+4)%12)
elif futures_account.current_date[5:7] in [‘07’, ‘08’]:
M0 = universe[:2] + str(int(futures_account.current_date[2:4])) + ‘09’
M1 = universe[:2] + str(int(M0[2:4])+(int(M0[4:])+4)/12)+’0’+str((int(M0[4:])+4)%12)
elif futures_account.current_date[5:7] in [‘03’, ‘04’]:
M0 = universe[:2] + str(int(futures_account.current_date[2:4])) + ‘05’
M1 = universe[:2] + str(int(M0[2:4])+(int(M0[4:])+4)/12)+’0’+str((int(M0[4:])+4)%12)
總結(jié)
- 上一篇: 人工神经网络连接方式,全连接神经网络作用
- 下一篇: 计算机图形学:B样条画枫叶