Bei Hedging-Strategien gibt es verschiedene Arten der Absicherung: Cross-Market-Hedging, Cross-Period-Hedging usw. Heute werden wir über Cross-Währungs-Hedging sprechen, die genau die Cross-Währungs-Hedging-Strategie im quantitativen Handel mit Blockchain-Assets ist. Im Allgemeinen ist das Thema einer Hedging-Transaktion dasselbe, während Cross-Währungs-Hedging den Kauf und Verkauf verschiedener Gegenstände beinhaltet. Bei der Absicherung derselben Sorte können wir den Preisunterschied als Kauf- und Verkaufspreis in der Hedging-Transaktion verwenden. Bei der einfachsten Cross-Markt-Hedging derselben Sorte schwankt der Preisunterschied wiederholt innerhalb eines bestimmten Bereichs. Der Preisunterschied kann nicht als Kauf- und Verkaufspreis für Cross-Währungs-Hedging verwendet werden, da der Preisunterschied verschiedener Währungen nicht sehr intuitiv zu beobachten ist und das Preisverhältnis normalerweise als Kauf- und Verka
Zum Beispiel: Handelspaar A: LTC_USDT Handelspaar B: ETH_USDT
Verteilung der Eröffnungspositionen nach dem Preisverhältniswert vonPrice of Trading pair A/Price of Trading pair B
. Je größer der Anteil ist, desto mehr werden wir A verkaufen und B kaufen. Wenn der Anteil sinkt, kaufen Sie A und verkaufen Sie B. Der entsprechende USDT-Betrag jeder Absicherung ist tatsächlich eine Strategie für den Netzhandel auf der Grundlage des relativen Preises von LTC/ETH. Die Strategieidee ist nicht kompliziert. Allerdings sollte beachtet werden, dass diese Art von Absicherungsportfolio tatsächlich ETH als Ankerpreiswährung verwendet, um LTC zu bewerten. Der verankerte Preis wird wahrscheinlich aus dem einseitigen Trend ausgehen. Obwohl es sich meistens um einen volatilen Trend handelt, muss dieses Risiko berücksichtigt und beachtet werden.
Es ist einfach, einen Strategieprototyp mit der FMZ Quant Trading Plattform zu schreiben:
Wenn der Strategie-Code ausgeführt wird, muss er aufund
/*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)
}
}
Verwenden Sie die Standardeinstellungen für Backtesting:
Wie man sehen kann, wurden nur wenige Dutzend Zeilen Code verwendet, um eine Strategie Ihrer eigenen Ideen zu konstruieren. Es ist sehr einfach, einen Prototyp von Ideen auf der FMZ Quant Trading Plattform zu implementieren. Gemäß der obigen Abbildung schwankt dieser Preisanteil die meiste Zeit, aber es wird einen bestimmten Trend geben. Die Optimierungsrichtung kann die Positionskontrolle während der Absicherung sein oder eine bestimmte Trendidentifikation hinzufügen. In Bezug auf die Positionskontrolle können Sie den Absicherungsbetrag jedes Absicherungsknoten erhöhen.
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
}
Auf diese Weise können die relativ hohen Positionen auf die Position mit einem hohen Preisanteil konzentriert werden, um zu vermeiden, dass bei niedrigem Preisanteil große Positionen besetzt werden. Natürlich ist eine solche Cross-Currency-Hedging sehr riskant. Wenn der Preis einer Währung weiterhin im Verhältnis zum Preis einer anderen Währung steigt, werden schwebende Verluste auftreten. Daher erfordert Cross-Currency-Hedging eine stärkere Korrelation zwischen den beiden Währungen.
Diese Strategie ist nur eine erste DEMO, die weiter verbessert und optimiert werden kann.