
Em estratégias de hedge, existem vários tipos de hedge. Hedge entre mercados, hedge entre períodos, etc. Hoje vamos falar sobre hedge entre produtos ou, mais precisamente, estratégias de hedge entre moedas na negociação quantitativa de ativos de blockchain. Os ativos subjacentes em transações de hedge convencionais são os mesmos, enquanto o hedge entre moedas envolve a compra e venda de diferentes ativos subjacentes. Ao fazer hedge do mesmo produto, podemos usar a diferença de preço como preço de compra e venda na transação de hedge. Para o hedge de mercado cruzado mais simples do mesmo produto, a diferença de preço flutua repetidamente dentro de um certo intervalo. O hedge de produtos cruzados definitivamente não pode usar diferenças de preço como preços de compra e venda, porque as diferenças de preço entre produtos diferentes não são muito intuitivas de observar. Normalmente, a relação de preço é usada como preço de compra e venda.
Por exemplo: Um par de negociação: LTC_USDT Par de negociação B: ETH_USDT
de acordo comA交易对的价格/B交易对的价格Este valor de relação de preço é usado para dispersar posições de abertura. Quanto maior a proporção, mais precisamos vender A e comprar B. Pelo contrário, se a proporção ficar menor, compre A e venda B. Fazer hedge de uma quantia igual de USDT a cada vez é, na verdade, uma estratégia de negociação de grade com base na força relativa do preço de LTC/ETH. A estratégia não é complicada. No entanto, é importante observar que essa combinação de hedge na verdade usa ETH como moeda de preço âncora para denominar LTC. Este preço ancorado pode ter uma tendência unilateral, embora possa flutuar na maior parte do tempo. No entanto, este risco precisa ser considerado e receber atenção.
Usando a plataforma de negociação quantitativa Inventor, é fácil escrever um protótipo de estratégia:
Quando o código da política está em execução, ele precisa referenciar
e
「Biblioteca de desenho de linhas」: https://www.fmz.com/strategy/27293
“Biblioteca de negociação à vista de criptomoedas”: é fornecida na coluna de modelo quando cada usuário cria uma nova estratégia.
/*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)
}
}
Usando as configurações padrão do backtest:


Pode-se ver que apenas dezenas de linhas de código são usadas para construir uma estratégia de ideias próprias. Na Inventor Quantitative Trading Platform, é muito fácil realizar o protótipo de uma ideia. No gráfico acima, podemos ver que essa relação de preço está oscilando na maior parte do tempo, mas há uma certa tendência. A direção da otimização pode ser o controle de posição durante o hedge ou adicionar certa identificação de tendência.
Em termos de controle de posição, o valor de hedge de cada nó de hedge pode ser aumentado incrementalmente, por exemplo, no código:
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
}
Isso permite que posições relativamente mais pesadas sejam concentradas em locais com relações de preço mais altas, evitando assumir posições muito grandes quando a relação de preço é menor. Claro, tal hedge de produto cruzado é muito arriscado. Se o preço de uma moeda continuar a subir em relação a outra moeda, perdas flutuantes ocorrerão. Portanto, o hedge de produto cruzado requer uma correlação mais forte entre os dois produtos.
Esta estratégia é apenas uma DEMO inicial e pode ser modificada e otimizada posteriormente.