avatar of 发明者量化-小小梦 发明者量化-小小梦
focar em Mensagem privada
4
focar em
1271
Seguidores

Estratégias de hedge de moeda cruzada em negociação quantitativa de ativos de blockchain

Criado em: 2019-11-04 11:44:15, atualizado em: 2023-10-17 21:25:35
comments   0
hits   2670

Estratégias de hedge de moeda cruzada em negociação quantitativa de ativos de blockchain

Estratégias de hedge de moeda cruzada em negociação quantitativa de ativos de blockchain

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 Estratégias de hedge de moeda cruzada em negociação quantitativa de ativos de blockchain e Estratégias de hedge de moeda cruzada em negociação quantitativa de ativos de blockchain 「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)
    }
}

Você pode usar o backtesting para verificar inicialmente a ideia da estratégia.

Usando as configurações padrão do backtest:

Estratégias de hedge de moeda cruzada em negociação quantitativa de ativos de blockchain

Estratégias de hedge de moeda cruzada em negociação quantitativa de ativos de blockchain

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.