期权交易
发明者量化交易平台支持在以下加密货币期货交易所交易期权。期权的用法与期货合约相同:用exchange.SetContractType()把合约设为期权代码(期权代码就是交易所的原生代码,各交易所写法不同),之后GetTicker()、GetDepth()等行情函数,Buy()、Sell()(下单前用exchange.SetDirection()设置交易方向)、CancelOrder()、GetPositions()等交易函数都作用于该期权合约。也可以用完整的交易品种代码直接下单,形如交易对.期权代码,例如BTC_USDT.BTC-260925-145000-C。
期权合约的盘口通常较薄:买一、卖一没有挂单时Ticker的Buy、Sell为0,从未成交的合约Last也可能为0,各交易所的处理见下文。exchange.GetMarkets()是否列出期权合约因交易所而异;不列出时,期权代码需要从交易所的接口或网页获取。
Futures_Deribit
设置期权合约后即可获取行情、下单、撤单、查询持仓。期权代码例子:BTC-13SEP24-60000-C、XRP_USDC-27SEP24-1-C,组合合约例子:BTC-CS-6SEP24-57000_57500、BTC-PCAL-20SEP24_13SEP24-55000。exchange.GetMarkets()的结果包含期权合约。
可供参考的策略代码:Deribit期权测试策略
Futures_OKX
用法与Deribit相同,交易对设置为BTC_USD等,期权代码形如BTC-USD-200626-4500-C。从未成交的期权合约,GetTicker()的Last取标记价格。exchange.GetMarkets()不列出期权合约,可以通过OKX的/api/v5/public/instruments接口查询期权合约列表,例如查询BTC期权:
javascript
function main() {
Log(HttpQuery("https://www.okx.com/api/v5/public/instruments?instType=OPTION&uly=BTC-USD"))
}
python
import json
import urllib.request
def main():
ret = json.loads(urllib.request.urlopen("https://www.okx.com/api/v5/public/instruments?instType=OPTION&uly=BTC-USD").read().decode('utf-8'))
Log(ret)
rust
fn main() {
let body: String = HttpQuery("https://www.okx.com/api/v5/public/instruments?instType=OPTION&uly=BTC-USD", None);
Log!(body);
}
Futures_Binance
支持币安欧式期权(USDT结算),交易对设置为BTC_USDT等,期权代码形如BTC-260925-145000-C(标的-到期日YYMMDD-行权价-C/P)。需要账户已开通期权交易。限制:
- 只支持限价单,不支持市价单、条件单和改单(
exchange.ModifyOrder())。 - 不支持
exchange.SetMarginLevel()等杠杆、保证金模式设置。 - 统一账户(组合保证金)不支持期权。
exchange.GetMarkets()不列出期权合约。
Futures_Bybit
支持两种结算的期权:
- USDC结算:交易对设置为
ETH_USDC等,期权代码形如ETH-25NOV22-1375-P。 - USDT结算:交易对设置为
ETH_USDT等,期权代码比USDC结算的多一段结算币后缀,形如ETH-25JUN27-2800-C-USDT。
exchange.GetMarkets()的结果包含两种结算的期权合约。Bybit期权没有K线接口,GetRecords()由成交记录合成。
Futures_Aevo
支持Aevo交易所的USDC期权,交易对设置为ETH_USDC等,期权代码形如ETH-30JUN23-1600-C。GetTicker()的Last为标记价格。Aevo没有K线接口,GetRecords()由成交记录合成,合约没有成交时为空。exchange.GetMarkets()的结果包含期权合约。
Futures_GateIO
支持Gate交易所的USDT期权,交易对设置为BTC_USDT等,期权代码形如BTC_USDT-20211130-65000-C。exchange.GetMarkets()的结果包含期权合约。账户没有开通期权时,查询订单、持仓会返回交易所的错误。
Futures_Kraken
支持Kraken期货的期权,交易对设置为ETH_USD等,期权代码形如OF_ETHUSD_261225_4000_C(OF_、标的与计价币、到期日YYMMDD、行权价、C/P),代码中的标的与计价币必须与交易对一致,BTC在代码中写作XBT(如OF_XBTUSD_...)。
- Kraken没有期权合约列表接口,
exchange.GetMarkets()不包含期权合约,期权代码需要从Kraken网页获取。 GetTicker()的Last取标记价格,Buy、Sell、High、Low为0,原始数据Info中有隐含波动率、希腊值等字段。- 行情、K线、订单、持仓、历史订单的查询可用;期权下单与期货合约走同一个下单接口,尚未经过实盘验证。
- 期权没有资金费率,不支持
exchange.SetMarginLevel()。
参考