資源の読み込みに... 荷物...

契約ヘッジ戦略による資産移動に関する考え

作者: リン・ハーンFMZ~リディア, 作成日:2022-12-19 16:36:12, 更新日:2023-09-20 10:38:30

img

契約ヘッジ戦略による資産移動に関する考え

最近,デジタル通貨市場と取引所について多くのニュースがありました. 一時期,すべての通貨友人はパニック状態で,ブロックチェーン資産のセキュリティを心配していました. また,さまざまな通貨市場グループで,無効の中古通貨の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    // Step length of adding position price

function main() {
    var pos1 = []
    var pos2 = []
    var ct = "quarter"                         // For example, quarterly contract
    exchanges[0].SetContractType(ct)
    exchanges[1].SetContractType(ct)
    var diff = 0

    while (true) {
        var r1 = exchanges[0].Go("GetDepth")   // Exchange A
        var r2 = exchanges[1].Go("GetDepth")   // Exchange 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)
    }
}

img

戦略の論理 戦略は,ポジション変数pos1とpos2を空の配列として初期化し始めます.戦略はメインループに入ります.各ループの開始時に,価格差を計算するために,2つの取引所の契約の深度データ (オーダーブックデータ) が得られます.価格差が拡大し続け,最後の価格差プラスステップ長度を超えると,ヘッジを続け,ポジションを追加します.ポジションが保持されると,最初の取引所のポジション損失が一定の値 (例えば-0.001) を超えると検出され,ポジションを閉じる.このように繰り返します.

価格差が大きいとき,デヘッジを行う. 取引先の見込み損失の損失を待つとき,ポジションを閉じる. 価格差が拡大し続ける場合,取引先の見込み損失までヘッジにポジションを追加し続けること.重要なパラメータは: ポジションを閉じる損失の金額,ポジション価格差を加えるステップ長さ,ヘッジ金額である.

戦略はかなり初期化されている.ただアイデアを検証するために,実際のボットは利用できません.実際のボットについては,取引される契約が通貨標準かU標準であるか,および取引所AとBの異なる契約の倍数が同じかどうかなど,多くの問題を考慮する必要があります.

この方法で,ある取引所はお金を失うし,損失部分は他の取引所の利益の一部になります (価格差,ヘッジ損失がある可能性があります.つまり損失は利益よりも多い). 戦略は先物取引クラスライブラリを採用します.$.OverShort, $.OpenShort上記のDEMOを実行するには,このクラスライブラリを参照する必要があります.

上記の戦略プロトタイプは,最もシンプルな探索に過ぎず,実際の操作で考慮すべき詳細がある可能性があります.例えば,ポジションの量は増量に設計することができます. これはここで単なる例です.類似の戦略はより多くの最適化が可能で,専門家が提案を歓迎します.


関連性

もっと