O recurso está a ser carregado... Carregamento...

Reflexões sobre a movimentação de ativos através de uma estratégia de cobertura contratual

Autora:FMZ~Lydia, Criado: 2022-12-19 16:36:12, Atualizado: 2023-09-20 10:38:30

img

Reflexões sobre a movimentação de ativos através de uma estratégia de cobertura contratual

Recentemente, houve muitas notícias sobre o mercado de moeda digital e a troca. Por um tempo, todos os amigos de moeda estavam em um estado de pânico, preocupados com a segurança de seus ativos blockchain. Há também muitos pequenos anúncios de 10% e 20% de desconto para moedas usadas inativas em vários grupos do mercado de moeda. Há muitos tipos de estratégias de buscar perder dinheiro de forma constante enquanto faz dinheiro de forma constante. Muitos usuários também provocaram Se há um criador de dinheiro estável, por que você quer um perdedor de dinheiro estável? É verdade que tanto fazer lucros estáveis como perder dinheiro estável sãomoney printer, que não é fácil de encontrar. Desculpe o meu mau inglês.

No entanto, ainda existem alguns instáveis. Por exemplo, através da cobertura de contratos, podemos fazer lucros enquanto fazemos perdas o máximo possível.

Estratégia DEMO

/*backtest
start: 2020-09-30 00:00:00
end: 2020-10-19 00:00:00
period: 1d
basePeriod: 1m
exchanges: [{"eid":"Futures_OKCoin","currency":"BTC_USD"},{"eid":"Futures_HuobiDM","currency":"BTC_USD"}]
*/

var step = 20    // Step length of adding position price

function main() {
    var pos1 = []
    var pos2 = []
    var ct = "quarter"                         // For example, quarterly contract
    exchanges[0].SetContractType(ct)
    exchanges[1].SetContractType(ct)
    var diff = 0

    while (true) {
        var r1 = exchanges[0].Go("GetDepth")   // Exchange A
        var r2 = exchanges[1].Go("GetDepth")   // Exchange B
        var depth1 = r1.wait()
        var depth2 = r2.wait()

        if(depth1.Bids[0].Price - depth2.Asks[0].Price > diff) {
            if(pos1.length == 0 && pos2.length == 0) {
                var info1 = $.OpenShort(exchanges[0], ct, 10)
                var info2 = $.OpenLong(exchanges[1], ct, 10)
                pos1 = _C(exchanges[0].GetPosition)
                pos2 = _C(exchanges[1].GetPosition)
                diff = depth1.Bids[0].Price - depth2.Asks[0].Price
            } else if(depth1.Bids[0].Price - depth2.Asks[0].Price > diff + step) {
                var info1 = $.OpenShort(exchanges[0], ct, 10)
                var info2 = $.OpenLong(exchanges[1], ct, 10)
                pos1 = _C(exchanges[0].GetPosition)
                pos2 = _C(exchanges[1].GetPosition)
                diff = depth1.Bids[0].Price - depth2.Asks[0].Price
            }
        }
        
        if(pos1.length != 0 && pos1[0].Profit < -0.001) {
            var info1 = $.CoverShort(exchanges[0], ct, pos1[0].Amount)
            var info2 = $.CoverLong(exchanges[1], ct, pos2[0].Amount)
            pos1 = _C(exchanges[0].GetPosition)
            pos2 = _C(exchanges[1].GetPosition)
            diff = 0
        }
        LogStatus(_D(), diff)
        Sleep(500)
    }
}

img

Estratégia lógica: A estratégia começa a inicializar as variáveis de posição pos1 e pos2 como matrizes vazias. A estratégia entra no loop principal. No início de cada loop, os dados de profundidade (dados do livro de pedidos) dos contratos das duas bolsas são obtidos para calcular a diferença de preço. Se a diferença de preço continuar a se expandir e além da última diferença de preço mais um passo de comprimento, continue cobrindo e adicionando posições. Quando a posição é realizada, é detectado que a perda de posição da primeira troca excede um certo valor (como -0,001), em seguida, feche a posição. Repita desta forma.

O princípio é muito simples, ou seja, quando a diferença de preço é grande, então desabasteça. Ao esperar a perda da perda esperada da posição de câmbio, feche a posição. Se a diferença de preço continuar a se expandir, continue adicionando posições para cobrir até a perda esperada da perda de posição de câmbio. Os parâmetros importantes são: o valor da perda para fechar a posição, o comprimento da etapa de adição da diferença de preço da posição e o valor da cobertura.

A estratégia é bastante rudimentar, apenas para verificar a ideia, o bot real não está disponível.

Desta forma, uma troca perderá dinheiro, e a parte de perda se tornará a parte de lucro de outra troca (diferença de preço, pode haver perda de cobertura, ou seja, a perda é maior que o lucro).$.OverShort, $.OpenShort, estas são as funções de interface do modelo. Para executar a demonstração acima, você precisa fazer referência a esta biblioteca de classes.

O protótipo de estratégia acima é apenas a exploração mais simples, e pode haver mais detalhes a serem considerados na operação real, por exemplo, a quantidade de posições pode ser projetada para incremental.


Relacionados

Mais.