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

ブロックチェーン資産の量的な取引におけるクロス通貨ヘッジ戦略

作者: リン・ハーンFMZ~リディア作成日:2022-12-27 10:11:48, 更新日:2023-09-20 10:02:24 更新日:2020-09-20 更新日:2021-09-20 更新日:2021-09-20 更新日:2021-09-20 更新日:2021-09-20 更新日:2021-09-20 更新日:2021-09-20 更新日:2021-09-20 更新日:2021-09-20 更新日:2021-09-20 更新日:2021-09-20 更新日:2021-09-20 更新日:2020-09-20 更新日:2020-09-20

img

ブロックチェーン資産の量的な取引におけるクロス通貨ヘッジ戦略

ヘージング戦略では,様々な種類のヘージングがあります.クロスマーケットヘージング,クロスペリオドヘージングなど. 今日,クロス通貨ヘージングについてお話します. これは,ブロックチェーン資産の定量取引におけるクロス通貨ヘージング戦略です. 一般的には,ヘージング取引の対象は同じで,クロス通貨ヘージングは異なる対象の購入と販売を伴うものです. 同じ品種をヘージングするとき,私たちは価格の差をヘージング取引の購入と販売価格として使用することができます. 同じ品種の最も単純なクロスマーケットヘージングでは,価格の差は一定の範囲内で繰り返し変動します. 価格の差はクロス通貨ヘージングの購入と販売価格として使用することはできません. 異なる通貨の価格の差が観察するのが非常に直感的ではなく,価格比率は通常購入と販売価格として使用されます.

例えば: 取引対A: LTC_USDT トレーディングペアB:ETH_USDT

開始ポジションを価格比値に合わせて分配する.Price of Trading pair A/Price of Trading pair B. 割合が大きいほど,Aを売り,Bを購入する. 割合が減少した場合,Aを買ってBを売る. 各ヘッジの相当のUSDT額は,実際にはLTC/ETHの相対価格に基づいたグリッド取引の戦略である. 戦略の考えは複雑ではない. しかし,この種のヘッジポートフォリオは,実際にはLTCの価格をアンカー価格通貨としてETHを使用していることを注意すべきである. アンカー価格は一方的なトレンドから抜け出す可能性が高い. ほとんどの場合,不安定なトレンドであるかもしれないが,このリスクは考慮し注意する必要がある.

FMZ Quant Trading プラットフォームを使用して戦略プロトタイプを書くのは簡単です. 戦略コードを実行するときに,それは参照する必要がありますimgそしてimgプロットライブラリ:https://www.fmz.com/strategy/27293デジタル通貨スポット取引ライブラリ: ユーザーが新しい戦略を作成するときにテンプレートバーが付属します.

/*backtest
start: 2019-05-01 00:00:00
end: 2019-11-04 00:00:00
period: 1m
exchanges: [{"eid":"OKEX","currency":"LTC_USDT","balance":100000,"stocks":30},{"eid":"OKEX","currency":"ETH_USDT","balance":100000,"stocks":30}]
*/

/*
A exchanges[0] : EOS_USDT   
B exchanges[1] : ETH_USDT
*/

var Interval = 500

// parameters
var numPoint = 100        // Number of nodes
var distance = 0.08       // Proportional distance
var amountPoint = 100     // Node amount in USDT
var arrHedgeList = []

function main () {
    var isFirst = true
    while(true) {
        var rA = exchanges[0].Go("GetTicker")
        var rB = exchanges[1].Go("GetTicker")

        var tickerA = rA.wait()
        var tickerB = rB.wait()

        if (tickerA && tickerB) {
            var priceRatioSell = tickerB.Buy / tickerA.Sell     // B sell , A buy
            var priceRatioBuy = tickerB.Sell / tickerA.Buy      // B buy , A sell
            
            if (isFirst) {
                for (var i = 0 ; i < numPoint ; i++) {
                    var point = {
                        priceRatio : priceRatioSell + (i + 1) * distance,
                        coverRatio : priceRatioSell + i * distance,
                        amount : (0.08 * i + 1) * amountPoint,
                        isHold : false,
                    }
                    arrHedgeList.push(point)
                }
                isFirst = false
            }

            for (var j = 0 ; j < arrHedgeList.length; j++) {
                if (priceRatioSell > arrHedgeList[j].priceRatio && arrHedgeList[j].isHold == false) {
                    // B sell , A buy
                    Log("Hedging, price ratio", priceRatioSell, "#FF0000")
                    $.Buy(exchanges[0], arrHedgeList[j].amount / tickerA.Sell)
                    $.Sell(exchanges[1], arrHedgeList[j].amount / tickerB.Buy)
                    arrHedgeList[j].isHold = true
                    LogStatus(_D(), exchanges[0].GetAccount(), "\n", exchanges[1].GetAccount())
                    $.PlotLine("ratio", (priceRatioSell + priceRatioBuy) / 2)
                    break 
                }

                if (priceRatioBuy < arrHedgeList[j].coverRatio && arrHedgeList[j].isHold == true) {    
                    // B buy , A sell
                    Log("hedge, price ratio", priceRatioBuy, "#32CD32")
                    $.Sell(exchanges[0], arrHedgeList[j].amount / tickerA.Buy)
                    $.Buy(exchanges[1], arrHedgeList[j].amount / tickerB.Sell)
                    arrHedgeList[j].isHold = false
                    LogStatus(_D(), exchanges[0].GetAccount(), "\n", exchanges[1].GetAccount())
                    $.PlotLine("ratio", (priceRatioSell + priceRatioBuy) / 2)
                    break
                }
            }
        }
        Sleep(Interval)
    }
}

戦略のアイデアを検証することができます.

バックテストのデフォルト設定を使用します:

img img

FMZ Quant Trading プラットフォームでアイデアのプロトタイプを実装することは非常に簡単です.上記の図によると,この価格比率はほとんどの場合変動しますが,一定の傾向があります.最適化方向はヘッジ中にポジション制御または特定のトレンド識別を追加することができます. 位置制御の観点からすると,各ヘッジノードのヘッジ金額を増加させることができます.例えば,コードでは:

if (isFirst) {
    for (var i = 0 ; i < numPoint ; i++) {
        var point = {
            priceRatio : priceRatioSell + (i + 1) * distance,
            coverRatio : priceRatioSell + i * distance,
            amount : (0.08 * i + 1) * amountPoint,          // 8% of amountPoint per increment
            isHold : false,
        }
        arrHedgeList.push(point)
    }
    isFirst = false
}

この方法により,比較的大きなポジションは高価格比率のポジションに集中し,価格比率が低いときに占める大きなポジションを避けることができます. もちろん,このようなクロス通貨ヘッジは非常にリスクが高い.もしある通貨の価格が他の通貨の価格に比べて上昇し続けると,浮動損失が発生する.したがって,クロス通貨ヘッジには,2つの通貨間のより強い相関が必要である.

この戦略は初期的なDEMOに過ぎず,さらに改善され最適化されることがあります.


関連性

もっと