期货锁仓操作的技巧,期货锁仓的好处和坏处

  

  代码基于天勤量化平台,先贴出完整代码:   

  

  #!/usr/bin/env python #-*-coding : utf-8-*-# import asynciofrom tqsdk import TqApi,tqauth from context lib import closing from time import time #创建应用程序接口实例API=TQ API(auth=TQ auth(’天勤账号', '账号密码))异步定义李涛(Call=' ',Put=' ',Lr=3,Dlr=1): #默认3跳,1跳对手价平仓损耗,1跳抹除手续费,1跳纯利润quote _ C=API。get _ quote(Call)quote_P=API。get _ quote(Put)futer=quote _ C . underlying _ symbol quote _ F=API。get _ quote(futer)与API异步。register _ update _ notify([quote _ C,quote _ P,quote _ F])as update _ chan : # async for _ in update _ chan : # D _ time=(quote _ C . last _ exercise _ datetime-time())* Lr/(Dlr * 86400)#持有到期可接受利润if quote _ c . exercise _ type==' A ' : #美式期权lr=quote_F.price_tick * Lr #立即行权可盈利点数如果D _ time=lr : DLR=lr else : DLR=quote _ f . price _ tick * D _时间#价格变动百分比,到期盈利幅度elif quote _ c . exercise _ type==' E ' : #欧是期权,只能到期行权if D _ time=Lr : Lr=DLR=quote _ f . price _ tick * Lr else : Lr=DLR=quote _ f . price _ tick * D _ time Cb=quote _ C . strike _ price quote _ C . ask _ price 1 # K C,构建期货多头价格Pb=quote _ P . strike _ price-quote _ P . ask _ price 1 # K-P,构建期货空头价格CbPs _ Fs=quote _ p . strike _ price quote _ c . ask _ price 1-quote _ p . bid _ price 1 # K C-P、构建期货多头价格PbCs _ Fb=quote _ p . strike _ price quote _ c . bid _ price 1-quote _ p . ask _ price 1 # K C-P、构建期货空头价格Fb=quote_F.ask_price1 #期货买入价Fs=报价_报价。 投标_价格1 #期货卖出价kai=False如果Fs-Cb=dlr:打印(调用,'-',进一步,' K CF:多看涨期权空期货' Cb,Fs,CbFs '利润: ',Fs-Cb)kai=True break if p B-Fb=DLR : print(Put),',futer,' K-PF:多看跌期权多期货' Pb,Fb,PbFb '利润: ',Pb-Fb) kai=如果Fs-CbPs_Fs,则为真断点   

>= dlr : print(Call,'-',Put,'-',futer,'K+C-P<F:多看涨期权+空看跌期权+空期货',CbPs_Fs, Fs, CbPs_Fs<Fs,' 利润:',Fs-CbPs_Fs) kai = True break if PbCs_Fb-Fb >= dlr : print(Put,'-',Call,'+',futer,'K+C-P>F:多看跌期权+空看涨期权+多期货',PbCs_Fb, Fb, PbCs_Fb>Fb,' 利润:',PbCs_Fb-Fb) kai = True break if not kai : print('监控中:') print(Call,'-',futer,'K+C<F:多看涨期权+空期货', Cb, Fs, Cb<Fs) print(Put,'+',futer,'K-P>F:多看跌期权+多期货', Pb, Fb, Pb>Fb) print(Call,'-',Put,'-',futer,'K+C-P<F:多看涨期权+空看跌期权+空期货', CbPs_Fs, Fs, CbPs_Fs<Fs) print(Put,'-',Call,'+',futer,'K+C-P>F:多看跌期权+空看涨期权+多期货', PbCs_Fb, Fb, PbCs_Fb>Fb) #breakC = []P = []exchange = ['SHFE','DCE','CZCE','INE']for e in exchange : quote = api.query_quotes(ins_class='OPTION',exchange_id=e,expired=False) for i in quote : q = api.get_quote(i) if q.option_class == 'CALL' : C.append([i,q.underlying_symbol,q.strike_price]) elif q.option_class == "PUT" : P.append([i,q.underlying_symbol,q.strike_price]) del quoteOptions = []for i in C : for j in P : if i[1] == j[1] and i[2] == j[2]: Options.append([i[0],j[0]])del C , Pfor i in Options : api.create_task(taoli(Call=i[0],Put=i[1],Lr=3,Dlr=7))with closing(api): while True : api.wait_update()

代码解析:

先获取上海、大连、郑州、能源交易所全部期权,按看涨看跌分类,再把执行价相同的看涨看跌期权组对。

套利机会由异步函数taoli(Call='',Put='',Lr=3, Dlr=1)监控。

从上述期权对里获取看涨期权赋值给Call,获取看跌期权赋值给Put。

Lr是最小获利点数,默认3跳,因为套利对在平仓时,以对手价成交会损耗一点,手续费再损耗一点,剩一点为纯利润。

美式期权多头随时可以行权以获得利润,期权空头和欧式期权只能在到期时被行权,参数Dlr表示持有多少天获得Lr点利润可以接受,比如Lr=3, Dlr=7,表示持有7天获得3跳利润可以接受,如果期权到期日是21天,则需获得9跳利润,利润再低就可能不合适了,持有的时间长但获得的利润小有点不值当。

所有的价格判断都以对手价计算,当if语句检测到套利机会时,break语句可换成开仓函数,立即以对手价下单,并在成交后锁定计算的利润,美式期权多头可立即行权并平仓获得利润,期权空头和欧式期权需等到到期时行权再平仓。

期货期权套利机会分析的原理应用的是无风险套利关系式,如下:

1,K+C < F,即执行价K+权利金C<期货价格,此时买入看涨期权+卖空期货,左边等于低价买入期货,右边高价卖出期货,形成锁仓利润

2,K - P > F,即执行价K-权利金P>期货价格,此时买入看跌期权+买入期货,左边等于高价卖空期货,右边低价买入期货,形成锁仓利润

3,K + C - P < F,即执行价K+权利金C-权利金P<期货价格,此时买入看涨期权+卖出看跌期权+卖空期货,左边等于低价买入期货,右边高价卖出期货,形成锁仓利润

4,K + C - P > F,即执行价K+权利金C-权利金P>期货价格,此时买入看跌期权+卖出看涨期权+买入期货,左边等于高价卖空期货,右边低价买入期货,形成锁仓利润

做Python量化的可以一块交流

相关文章