Type/to search
0
Follow
1
Followers
Pensando sobre a movimentação de ativos por meio da estratégia de hedge de contratos
Discussions
Created 2020-10-20 16:48:32  Updated 2023-09-26 20:59:29
 2
 2787

img

Pensando sobre a movimentação de ativos por meio da estratégia de hedge de contratos

Houve muitas notícias no mundo das criptomoedas recentemente, e notícias sobre exchanges também estão circulando por todo lugar. Por um tempo, todos os entusiastas de criptomoedas ficaram em pânico, preocupados com a segurança de seus ativos de blockchain. Há muitos pequenos anúncios em vários grupos de criptomoedas oferecendo descontos de 10% ou 20% em moedas de segunda mão ociosas. Há muitas pessoas que buscam diversas estratégias para "buscar uma perda constante de dinheiro e um lucro constante ao mesmo tempo". Muitos amigos das moedas também brincaram: "Se existe uma maneira estável de ganhar dinheiro, por que precisamos de uma maneira estável de perder dinheiro!"
Na verdade, as coisas que geram dinheiro de forma constante e perdem dinheiro de forma constante sãomoney printer, e não é fácil de encontrar.
Perdoe meu inglês ruim.

Entretanto, ainda há instabilidade, como por exemplo, por meio do hedge de contratos, é possível obter perdas e lucros ao mesmo tempo.

Estratégia DEMO

javascript
/*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 // 加仓价格步长 function main() { var pos1 = [] var pos2 = [] var ct = "quarter" // 例如用季度合约 exchanges[0].SetContractType(ct) exchanges[1].SetContractType(ct) var diff = 0 while (true) { var r1 = exchanges[0].Go("GetDepth") // A交易所 var r2 = exchanges[1].Go("GetDepth") // 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

img

Lógica da estratégia:
A estratégia começa inicializando as variáveis ​​de posição pos1 e pos2 como matrizes vazias. A estratégia entra no loop principal e, no início de cada loop, obtém os dados de profundidade (dados do livro de ordens) dos contratos das duas bolsas e calcula a diferença de preço. Se a diferença de preço continuar a aumentar além da "última diferença de preço mais um passo", continue a fazer hedge e a aumentar as posições. Ao manter uma posição, se a perda da primeira posição de câmbio exceder um determinado valor (por exemplo: -0,001), a posição será fechada. Esse processo é repetido repetidamente.

O princípio é na verdade muito simples, ou seja, se a diferença de preço for grande, o hedge é oposto. Espere que a exchange que você espera perder dinheiro mantenha uma perda e então feche a posição. Se o spread continuar a aumentar, continue a aumentar a posição para proteger até que a exchange que você espera perder dinheiro mantenha uma perda. Os parâmetros mais importantes são: quanta perda é necessária para fechar uma posição, o tamanho do passo da diferença de preço para adicionar posições e o valor do hedge.

A estratégia é relativamente simples e é usada apenas para verificar a ideia. Não é aplicável em negociações reais. Ainda há muitas questões que precisam ser consideradas na negociação real, como se o contrato a ser negociado é baseado em moeda ou U, se os multiplicadores de diferentes contratos nas bolsas A e B são os mesmos, etc.

Dessa forma, se uma bolsa perde dinheiro, a perda se tornará aproximadamente o lucro de outra bolsa (devido à diferença de preço, pode haver perdas de hedge, ou seja, a perda é maior que o lucro). A estratégia usa uma biblioteca de negociação de futuros.$.CoverShort,$.OpenShortEstas são as funções de interface do template. Para fazer backtest e executar o DEMO acima, você precisa referenciar esta biblioteca de classes.

O protótipo de estratégia acima é apenas a exploração mais simples. Pode haver mais detalhes a serem considerados na operação real. Por exemplo, a quantidade de aumento na posição pode ser projetada para ser incremental. Este é apenas um ponto de partida. Estratégias semelhantes devem ser capazes de ser mais otimizadas. Especialistas são bem-vindos para dar sugestões.

Related Recommendations
Comment
All comments (2)

    请尽快实装吧,要是管用我想租用,把我的游戏币提出来

    6 years ago

    作者开头其实说了,不稳定,搞不好是有可能反搬回去的。

    6 years ago
  • 1
Forums
PINE Language
Get the app
iPhone Download
© 2015 - ∞ INVENTOR PTE LTD (SG)