日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

跨期套利

發(fā)布時(shí)間:2023/12/20 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 跨期套利 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
  • 跨期套利組合構(gòu)建

  • 與跨品種套利不同,跨期套利是對(duì)同一市場(chǎng),同一品種,不同到期月份的合約之間進(jìn)行套利,這其中涉及到非主力合約的問題。非主力合約成交量比較小,有的甚至低到幾十?dāng)?shù)百手,很容易被幾手交易量將價(jià)格拉至異常。這種異常實(shí)際較難捕捉,只會(huì)放大回測(cè)結(jié)果。我們以滬鎳為例,其主力合約主要在1,5,9月交割,其余月份成交量很低。而1月交割合約活躍期為7月至12月,5月交割合約活躍期11月到來年4月,所以在構(gòu)建1月交割合約和5月交割合約的套利組合時(shí),我們選擇11、12月作為套利策略實(shí)施的時(shí)間進(jìn)行測(cè)試,12月底若有持倉強(qiáng)行平倉。這個(gè)時(shí)間內(nèi),1月交割合約為主力合約,5月交割合約為次主力合約。

  • 鎳跨期套利

  • 在套利時(shí),我們需要計(jì)算均衡價(jià)差,一般來說有兩種算法:

    模擬交割法:通過模擬交割過程各項(xiàng)費(fèi)用,來計(jì)算套利過程中的各項(xiàng)成本,從而得出均衡價(jià)差。優(yōu)點(diǎn):容易計(jì)算,價(jià)差變化下;缺點(diǎn):實(shí)際中價(jià)差很少恢復(fù)到這一水平
    歷史滯后均值法:通過歷史的價(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倍均值為下軌來構(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)行操作。

  • 相關(guān)參數(shù)及設(shè)定
    成交價(jià)設(shè)置為當(dāng)日開盤價(jià)。這里,考慮到次主力合約成交量可能較少,我們?cè)O(shè)置為3個(gè)滑點(diǎn)。
    開倉信號(hào)為價(jià)差超過上軌或者突破下軌,信號(hào)觸發(fā)當(dāng)天即按所設(shè)定的成交價(jià)進(jìn)行成交。平倉信號(hào)達(dá)到中線附近或者,所設(shè)定的套利期現(xiàn)結(jié)束強(qiá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)倉周期
    freq = ‘d’ # 調(diào)倉頻率: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)

    futures_account.M0 = '' futures_account.M1 = ''

    def handle_data(futures_account): # 回測(cè)調(diào)倉邏輯,每個(gè)調(diào)倉周期運(yùn)行一次,可在此函數(shù)內(nèi)實(shí)現(xiàn)信號(hào)生產(chǎn),生成調(diào)倉指令。
    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)

    long_position = futures_account.position.get(futures_account.M0, dict()).get('long_position', 0) short_position = futures_account.position.get(futures_account.M1, dict()).get('short_position', 0)if futures_account.current_date[5:7] not in months:if long_position != 0:order(futures_account.M0, -20, 'close')order(futures_account.M1, 20, 'close')returnM0_open_price = get_symbol_history(symbol=M0, field='openPrice', time_range=11)[M0]['openPrice'] M1_open_price = get_symbol_history(symbol=M1, field='openPrice', time_range=11)[M1]['openPrice']diff = np.array(M0_open_price - M1_open_price, dtype=float) futures_account.mean.append(ta.MA(diff, 10)[-1]) futures_account.std.append(ta.STDDEV(diff, 10)[-1])if diff[-1] < futures_account.mean[-1] - 1 * futures_account.std[-1] and long_position == 0:order(M1, -20, 'open')order(M0, 20, 'open') if diff[-1] > futures_account.mean[-1] - 0.2 * futures_account.std[-1] and long_position != 0:order(M1, 20, 'close')order(M0, -20, 'close')futures_account.M0 = M0 futures_account.M1 = M1

    總結(jié)

    以上是生活随笔為你收集整理的跨期套利的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。