0
フォロー
1
フォロワー

契約ヘッジ戦略による資産移動の考察

作成日:: 2020-10-20 16:48:32, 更新日:: 2023-09-26 20:59:29
comments   2
hits   2374

契約ヘッジ戦略による資産移動の考察

契約ヘッジ戦略による資産移動の考察

最近、仮想通貨の世界ではニュースが多く、取引所に関するニュースも飛び交っています。一時期、暗号通貨の愛好家は皆、ブロックチェーン資産の安全性を心配してパニックに陥っていました。さまざまな暗号通貨グループには、使用されていない中古コインを 10% または 20% 割引で提供する小さな広告がたくさんあります。 「安定した損失と安定した利益を同時に求める」ために、さまざまな戦略を模索する人がたくさんいます。多くのコイン友達も、「お金を稼ぐ安定した方法があるのなら、なぜお金を失う安定した方法が必要なのか!」と冗談を言っていました。 確かに、着実に利益を生み、着実に損失を被るものはmoney printer、見つけるのは簡単ではありません。 私の下手な英語をお許しください。

しかし、契約ヘッジなどにより損失と利益を同時に得ることができるなど、不安定さは依然として存在します。

DEMO戦略

/*backtest
start: 2020-09-30 00:00:00
end: 2020-10-19 00:00:00
period: 1d
basePeriod: 1m
exchanges: [{"eid":"Futures_OKCoin","currency":"BTC_USD"},{"eid":"Futures_HuobiDM","currency":"BTC_USD"}]
*/

var step = 20    // 加仓价格步长

function main() {
    var pos1 = []
    var pos2 = []
    var ct = "quarter"                         // 例如用季度合约
    exchanges[0].SetContractType(ct)
    exchanges[1].SetContractType(ct)
    var diff = 0

    while (true) {
        var r1 = exchanges[0].Go("GetDepth")   // A交易所
        var r2 = exchanges[1].Go("GetDepth")   // B交易所
        var depth1 = r1.wait()
        var depth2 = r2.wait()

        if(depth1.Bids[0].Price - depth2.Asks[0].Price > diff) {
            if(pos1.length == 0 && pos2.length == 0) {
                var info1 = $.OpenShort(exchanges[0], ct, 10)
                var info2 = $.OpenLong(exchanges[1], ct, 10)
                pos1 = _C(exchanges[0].GetPosition)
                pos2 = _C(exchanges[1].GetPosition)
                diff = depth1.Bids[0].Price - depth2.Asks[0].Price
            } else if(depth1.Bids[0].Price - depth2.Asks[0].Price > diff + step) {
                var info1 = $.OpenShort(exchanges[0], ct, 10)
                var info2 = $.OpenLong(exchanges[1], ct, 10)
                pos1 = _C(exchanges[0].GetPosition)
                pos2 = _C(exchanges[1].GetPosition)
                diff = depth1.Bids[0].Price - depth2.Asks[0].Price
            }
        }
        
        if(pos1.length != 0 && pos1[0].Profit < -0.001) {
            var info1 = $.CoverShort(exchanges[0], ct, pos1[0].Amount)
            var info2 = $.CoverLong(exchanges[1], ct, pos2[0].Amount)
            pos1 = _C(exchanges[0].GetPosition)
            pos2 = _C(exchanges[1].GetPosition)
            diff = 0
        }
        LogStatus(_D(), diff)
        Sleep(500)
    }
}

契約ヘッジ戦略による資産移動の考察

契約ヘッジ戦略による資産移動の考察

戦略ロジック: この戦略は、位置変数 pos1 と pos2 を空の配列として初期化することから始まります。この戦略はメインループに入り、各ループの開始時に 2 つの取引所の契約の深度データ (注文書データ) を取得し、価格差を計算します。価格差が「前回の価格差プラス1歩」を超えて拡大し続ける場合は、ヘッジを継続してポジションを増やします。ポジションを保有している場合、最初の取引ポジションの損失が一定値(例:-0.001)を超えると、ポジションはクローズされます。このプロセスは繰り返し繰り返されます。

原理は実は非常に単純で、価格差が大きい場合はヘッジに反対するということです。損失が予想される取引所が損失を抱えるまで待ってから、ポジションをクローズします。スプレッドが拡大し続ける場合は、損失が予想される取引所が損失を抱えるまで、ヘッジのためにポジションを増やし続けます。より重要なパラメータは、ポジションをクローズするために必要な損失額、ポジションを追加するための価格差のステップサイズ、およびヘッジ額です。

この戦略は比較的単純で、アイデアを検証するためにのみ使用されます。実際の取引には適用できません。実際の取引では、取引する契約が通貨ベースか U ベースか、取引所 A と B の異なる契約の乗数は同じかなど、考慮する必要がある問題がまだたくさんあります。

このように、ある取引所が損失を出した場合、その損失はほぼ別の取引所の利益になります(価格差により、ヘッジ損失が発生する場合があり、つまり損失が利益よりも大きくなります)。この戦略では先物取引ライブラリを使用します。$.CoverShort,$.OpenShortこれらはテンプレートのインターフェース関数です。上記の DEMO をバックテストして実行するには、このクラス ライブラリを参照する必要があります。

上記の戦略プロトタイプは、最も単純な検討に過ぎません。実際の運用では、さらに詳細を考慮する必要がある場合があります。たとえば、ポジションの増加量を増分的に設計できます。これは単なる出発点です。同様の戦略をさらに最適化できるはずです。専門家からの提案を歓迎します。