avatar of 发明者量化-小小梦 发明者量化-小小梦
フォロー ダイレクトメッセージ
4
フォロー
1271
フォロワー

Deribit Futures API をオプション定量取引に適合させる

作成日:: 2019-10-29 14:57:54, 更新日:: 2024-12-16 11:24:47
comments   0
hits   2744

Deribit Futures API をオプション定量取引に適合させる

デジタル通貨先物取引所はすでに多数存在しますが、先物デリバティブであるデジタル通貨オプション取引については、市場に出回っている取引所は多くありません。オプション取引をサポートしている取引所としては、DeribitやBitMEXなどがあります。定量取引の分野では、検索された資料で言及されているオプション戦略など、オプション取引の戦略も数多くあります。

タイプ
方向性戦略: コールオプションの購入 プットオプションの売却 ブルコールスプレッド ブル・プット・スプレッド
プットオプションを買う コールオプションの売り ベアコールスプレッド ベア・プット・スプレッド
ボラティリティ戦略: ストラドルを売る ワイドストラドルを売る ストラドルを購入 ワイドストラドルを購入
ヘッジ戦略: カバードコール カバード・プット 保護コール プロテクティブ・プット
ロングダブルリミット ショートポジションのダブルリミット

引用元接続する

オプション取引戦略を作成するには、まずしっかりとした基礎を築き、注文の発注、市場情報の取得、注文のキャンセル、ポジションの取得などの基本的な操作に精通している必要があります。 Inventor Quantitative Trading Platform は現在、デジタル通貨定量取引の分野で主に通貨間取引、契約取引、レバレッジ取引をサポートしていますが、戦略作成では引き続き Inventor Quantitative Trading Platform を使用しています。オプション取引に関する情報はあまりありません。以下では、「Deribit」取引所を例に、Inventor Quantitative Trading Platform を使用してデジタル通貨オプション取引を行う方法を紹介します。

デリビット関連情報

API ドキュメント: https://docs.deribit.com/v2/?javascript#public-get_last_settlements_by_instrument シミュレーション ディスク: https://docs.deribit.com/v2/?javascript#public-get_last_settlements_by_instrument

シミュレーション プラットフォームの Web サイトでアカウントを登録し、API KEY を有効にして、API KEY を取得できます。 Inventor Quantitative Trading Platform での設定は、実際のアカウントの設定と同じです。 Deribit Futures API をオプション定量取引に適合させる

オプション取引には理解しておくべき 4 つの基本概念があります。 Deribit Futures API をオプション定量取引に適合させる

  • 権利行使日: オプションのロング側とショート側がオプション契約の受渡しを完了した日。
  • 権利行使価格: 権利行使日に、オプションのロング側とショート側が、権利行使価格でオプション契約の受渡しを完了します。
  • プレミアム: これはオプションの価格です。スポット先物と同様に、見積りには買値と売値が含まれます。 オプションの流動性は一般的に先物やスポットよりも悪いため、ビッド・アスク・スプレッドが大きくなる可能性があるので、ここでは特別な注意を払う必要があります。取引が完了した後、取引価格はロングオプションのコストになります。このとき、ロングポジションは権利(オプションを行使する権利)を取得し、オプションのショートポジションはプレミアムを受け取る側としては、追加の義務を負います。ロングポジションが権利行使を要求した場合、ショートポジションはそれに協力しなければなりません。
  • コールオプションとプットオプション: コールオプションとは、ロングオプション保有者がショートオプション保有者に特定の行使日に特定の行使価格で特定の量のビットコインを購入するよう要求する権利であり、ショートオプション保有者はロングオプションに協力する義務がある。プットオプションとは、ロングオプションの保有者がショートオプションの保有者に、特定の行使日に特定の行使価格で特定の量のビットコインを購入するよう依頼する権利です。特定の行使日に、ショートセラーは与えられたビットコインを特定の権利行使価格で売却し、空売り業者は買い売り業者に協力する義務を負います。

市場情報

Deribit Exchange の API ドキュメントによると、Deribit の市場インターフェースは、先物またはオプションの市場情報にアクセスするためのデータのみを渡します。instrument_nameパラメータは異なります (instrument_name は関数 SetContractType によって設定されます) ので、基本的には市場情報を取得するためにインターフェイスを使用できます。GetTickerオプションの見積もりを取得します。

もちろん、Inventor Quantitative Trading Platform のデフォルト パッケージは、Deribit Exchange の実​​際の市場です。まずシミュレーション市場に切り替えて、次のコードを使用する必要があります。

exchange.IO("base", "https://test.deribit.com")

そして現在、オプション契約を設定していますBTC-27DEC19-7000-P: これは、権利行使日が2019年12月27日、権利行使価格が7000のプットオプションです。

exchange.SetContractType("BTC-27DEC19-7000-P")

次に、それを取得します。一緒にコードを書き、実行し、このオプション契約の市場情報を取得するためにテストします。

function main () {
    exchange.IO("base", "https://test.deribit.com")
    exchange.SetContractType("BTC-27DEC19-7000-P")
    var ticker = exchange.GetTicker()
    Log(ticker)
}

デバッグ ツールを使用すると、次のテストに非常に便利です。 Deribit Futures API をオプション定量取引に適合させる 価格がシミュレーション ディスク上の価格と一致していることがわかります。 Deribit Futures API をオプション定量取引に適合させる

他のマーケットインターフェースの呼び出し方法も同じなので、ここでは繰り返しません。次の点に注意してください。 オプション取引はあまり活発ではありません。買い注文や売り注文がないこともあります。このとき、Inventor Quantitative Trading Platform の最下層は 0 の値を検出し、エラーを報告します。SetErrorFilter("Invalid ticker")このエラーを無視してGetRawJSONこの関数は市場の元の情報を取得し、データをカプセル化します。ここでは同様の機能を実現する例を記述します。

function init() {
    SetErrorFilter("Invalid ticker")
}

$.GetTicker = function(e) {
    var ticker = e.GetTicker()
    if (!ticker) {
        try {
            var ret = JSON.parse(e.GetRawJSON())
            return {
                Info : ret,
                High : ret.result.stats.high,
                Low : ret.result.stats.low, 
                Buy : ret.result.best_bid_price,
                Sell : ret.result.best_ask_price,
                Last : ret.result.last_price, 
                Volume : ret.result.stats.volume,
                OpenInterest : 0,
                Time : new Date().getTime()
            }
        } catch (err) {
            Log(err)
        }
    }
    
    return ticker
}

電話するときは次のように書いてください:Log($.GetTicker(exchange))

注文する

注文操作は非常に簡単です。先物取引と比較すると、買いと売りの2つの方向しかありません。また使用するSell,Buy機能の順序。

function main () {
    exchange.IO("base", "https://test.deribit.com")
    exchange.SetContractType("BTC-27DEC19-7000-P")
    
    var id = exchange.Buy(0.017, 1)
    Log(exchange.GetOrder(id))
}

Deribit Futures API をオプション定量取引に適合させる

先ほど発注した注文は、シミュレーション取引ボードにも表示されます。 Deribit Futures API をオプション定量取引に適合させる

そしてexchange.GetOrder(id)注文情報を照会できます。

注文をキャンセル

注文のキャンセルにも同じ方法が使用されます。CancelOrder先物取引で注文をキャンセルするのと同じような機能です。 Deribit Futures API をオプション定量取引に適合させる

アカウント内の利用可能な資産を取得する

口座内の利用可能な資産を取得する方法は、先物取引とまったく同じです。直接呼び出しGetAccount関数。

模擬交換ページに表示 Deribit Futures API をオプション定量取引に適合させる

コードを実行すると次のようになります: Deribit Futures API をオプション定量取引に適合させる

位置情報を取得する

ポジションを保持するには、パッケージ化されたGetPosition関数は、デフォルトでは Deribit 取引はオプション取引ではなく先物取引であり、先物ポジションを取得するにはこの関数のみを使用できるためです。 したがって、オプションポジションを取得する機能を独自にカプセル化する必要があります。

API ドキュメント内の位置を取得するための関数インターフェース: Deribit Futures API をオプション定量取引に適合させる

$.GetPosition = function(e) {
    // /private/get_positions
    // currency  , kind 
    
    var positions = [] 
    var currency = e.GetCurrency()
    var arr = currency.split("_")
    var baseCurrency = arr[0]
    
    try {
        var ret = e.IO("api", "GET", "/api/v2/private/get_positions", "currency=" + baseCurrency + "&kind=option")
        for (var i in ret.result) {
            if (ret.result[i].size == 0 || ret.result[i].direction == "zero") {
                continue    
            } 
            
            var pos = {
                Info : ret.result[i], 
                Amount : ret.result[i].size,
                FrozenAmount : 0,
                Price : ret.result[i].average_price,
                Profit : ret.result[i].floating_profit_loss,
                MarginLevel : 0,
                Margin : 0,
                ContractType : ret.result[i].instrument_name,
                Type : ret.result[i].direction == "buy" ? ORDER_TYPE_BUY : ORDER_TYPE_SELL,
            }
            
            positions.push(pos)
        }
    } catch (err) {
        Log(err)
        positions = null
    }
    
    return positions
}

電話Log($.GetPosition(exchange))位置情報を印刷できます。 Deribit Futures API をオプション定量取引に適合させる Deribit Futures API をオプション定量取引に適合させる

このようにして、基本的な操作を実現でき、残りはオプション取引戦略を研究することです。