ハードジング戦略には,様々な種類のヘッジがあります.クロスマーケット・ヘッジ,クロス期間のヘッジなど.今日,クロス・ヘッジについてお話します.正確に言うと,ブロックチェーン資産量化取引におけるクロス・通貨ヘッジ戦略です. 通常のヘッジ取引では,標識が同じものであり,クロス・通貨ヘッジは異なる標識で購入または販売されるものです.同じ種類のヘッジでは,価格差をヘッジ取引の買取価格として使用することができ,最も単純なクロス・マーケット・同種のヘッジでは,この価格は一定に範囲内で反復変動します.クロス・ヘッジでは,価格差を買取価格として使用することはできません.
例えば: A 取引対は:LTC_USDT B取引対は:ETH_USDT
フォローするA交易对的价格/B交易对的价格
この価格比の数値,分散型開場. この比が大きいほど,私たちはAを売り,Bを買い,Bを買う. 逆の比のルールはAを買い,Bを売る. 負債を1回ごとに等価なUSDT額で,実際にはLTC/ETHの相対的な価格強弱でネット取引を行う戦略であり,戦略的な考え方は複雑ではありません. しかし,注意すべきは,この負債の組み合わせは,実際にはETHを固定価格通貨として,LTCの価格を計算することです. この外出価格は,一方的な傾向を持つ可能性があり,ほとんどの場合波動的な動きである可能性がありますが,このリスクは考慮し注意する必要があります.
発明者による量化取引プラットフォームを使って,戦略プロトタイプを簡単に書くことができます. 戦略コードを実行するときに引用が必要です.そしてグラフラインのクラスライブラリ: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
// 参数
var numPoint = 100 // 节点数
var distance = 0.08 // 比例间距
var amountPoint = 100 // 节点金额,单位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("对冲,价格比", 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("对冲,价格比", 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)
}
}
標準的な回測設定を使用する:
図表から見られるように,この価格比率は,ほとんどの時間波動しているが,一定の傾向の方向性が見られる.最適化方向性は,ヘッジ時のポジション制御または特定の傾向の認識に加入することからなる.
ポジション制御の側面では,各ヘッジノードのヘッジ金額を増加させることができます.例えば,コードでは:
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, // 每次递增amountPoint的8%
isHold : false,
}
arrHedgeList.push(point)
}
isFirst = false
}
この方法により,比較的重度のポジションが価格比率が高いポジションに集中し,価格比率が低い時に,ポジションを過大に占めるのを避ける. もちろん,この種のクロスヘッジはリスクが高く,もし1つの通貨が他の通貨の価格に対して継続的に上昇すれば浮出損失が生じる.したがって,クロスヘッジには2つの品種の関連性が強い必要がある.
この戦略は,初期デモであり,改定や最適化も続けられます.