В стратегиях хеджирования существуют различные типы хеджирования: хеджирование на рынке, хеджирование на периоде и т. д. Сегодня мы поговорим о хеджировании на валюте, что именно является стратегией хеджирования на валюте в количественной торговле активами блокчейна. Как правило, предмет хеджирующей сделки одинаков, в то время как хеджирование на валюте включает покупку и продажу разных предметов. При хеджировании одного и того же сорта мы можем использовать разницу в цене как цену покупки и продажи в хеджирующей сделке. Для самого простого хеджирования на рынке одного и того же сорта разница в цене неоднократно колеблется в определенном диапазоне. Разницу в цене нельзя использовать в качестве цены покупки и продажи для хеджирования на валюте, потому что разница в цене разных валют не очень интуитивно наблюдать, и соотношение цен обычно используется как цена покупки и продажи.
Например: Торговая пара A: LTC_USDT Торговая пара B: ETH_USDT
Распределить открытые позиции в зависимости от значения коэффициента ценыPrice of Trading pair A/Price of Trading pair B
. Чем больше соотношение, тем больше мы будем продавать A и покупать B. Если соотношение уменьшается, покупаем A и продаем B. Эквивалентная сумма USDT каждого хеджирования на самом деле является стратегией для сетевой торговли на основе относительной цены LTC/ETH. Идея стратегии не сложна. Однако следует отметить, что этот вид хеджирующего портфеля на самом деле использует ETH в качестве валюты якорной цены для ценообразования LTC.
Просто написать прототип стратегии с помощью платформы FMZ Quant Trading:
Когда код стратегии запускается, он должен ссылаться наи
/*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)
}
}
Используйте настройки обратного тестирования по умолчанию:
Можно увидеть, что для построения стратегии собственных идей было использовано всего несколько десятков строк кода. Очень легко реализовать прототип идей на платформе 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
}
Таким образом, относительно большие позиции могут быть сосредоточены на позиции с высокой ценовой пропорцией, чтобы избежать больших позиций, занятых при низкой ценовой пропорции. Конечно, такая кросс-валютная хеджировка очень рискованна. Если цена одной валюты продолжает расти относительно цены другой валюты, произойдут плавающие убытки. Поэтому кросс-валютная хеджировка требует более сильной корреляции между двумя валютами.
Эта стратегия является только начальной демонстрацией, которая может быть улучшена и оптимизирована.