De negociação quantitativa para gestão de ativos - Desenvolvimento de estratégias CTA para o retorno absoluto

Autora:Lydia., Criado: 2023-02-07 09:58:41, Atualizado: 2023-09-18 20:25:11

img

De negociação quantitativa para gestão de ativos - Desenvolvimento de estratégias CTA para o retorno absoluto

Prefácio

Por que devo fazer este curso?

O que você ganha ao fazer este curso? Em primeiro lugar, este curso é baseado em linguagens de programação JavaScript e Python. A linguagem é apenas uma tecnologia. Finalmente, devemos aplicar essa tecnologia em uma indústria. O comércio quantitativo é uma indústria emergente, que atualmente está em um estágio de rápido desenvolvimento e tem uma grande demanda por talentos.

Com o aprendizado sistemático deste curso, você pode ter uma compreensão mais profunda do campo da negociação quantitativa. Se você é um estudante que se prepara para entrar no campo da negociação quantitativa, também o ajudará. Se você é um entusiasta de investimento em ações ou futuros, então a negociação quantitativa pode ajudar sua negociação subjetiva. Desenvolvendo estratégias de negociação, você pode obter lucros no mercado financeiro e também ampliar os canais e plataformas para seu investimento e gerenciamento financeiro.

Antes disso, deixe-me falar sobre a minha experiência pessoal de negociação. Eu não sou um especialista em finanças, eu estudei estatística. No início, eu comecei a negociar ações subjetivamente em meus dias de escola. Mais tarde, eu me tornei um praticante de negociação quantitativa de fundos de private equity domésticos, principalmente envolvido em pesquisa de estratégia e desenvolvimento de estratégia.

Eu tenho negociado neste círculo por mais de dez anos, e desenvolvi vários tipos de estratégias. Minha filosofia de investimento é: o controle de risco está acima de tudo e se concentra em retornos absolutos. O tópico do nosso tópico é: da negociação quantitativa à gestão de ativos - desenvolvimento de estratégia CTA para retornos absolutos.

1. Futures estratégia CTA lógica de ganhar dinheiro

1.1 Compreensão dos futuros CTA

Alguém pode perguntar o que é o CTA? O que é exatamente o CTA? O CTA é chamado de consultores de negociação de commodities em países estrangeiros e gerente de investimentos na China. O CTA tradicional é coletar os fundos da maioria dos investidores, em seguida, confiá-los a instituições de investimento profissionais e, finalmente, investir em futuros de índices de ações, futuros de commodities e futuros de títulos do tesouro através de consultores de negociação (nomeadamente CTA).

Mas, na verdade, com o contínuo desenvolvimento e expansão do mercado global de futuros, o conceito de CTA também está se expandindo, e seu escopo está muito além dos futuros tradicionais. Ele pode investir não apenas no mercado de futuros, mas também no mercado de taxas de juros, no mercado de ações, no mercado de câmbio e no mercado de opções.

Na década de 1980, a tecnologia de negociação eletrônica não estava madura. Naquela época, a maioria dos comerciantes julgava a tendência futura dos futuros de commodities desenhando indicadores técnicos manualmente, como índice William, KDJ, RSI, MACD, CCI, etc. Mais tarde, os comerciantes criaram um fundo especial CTA para ajudar os clientes a gerenciar ativos.

Mudanças no tamanho do fundo de gestão da CTA

img

Em bilhões de dólares

Com a ascensão da negociação quantitativa, a escala dos fundos globais CTA aumentou de US $ 130,6 bilhões em 2005 para mais de US $ 300 bilhões em 2015.

O índice Barclay CTA é um benchmark representativo da indústria para os consultores globais de commodity trading. Desde o final de 1979 até o final de 2016, o retorno acumulado do índice Barclay CTA Fund foi de até 28,95 vezes, o retorno anualizado foi de 9,59%, a taxa Sharp foi de 0,37, e a retirada máxima foi de 15,66%.

Como mostrado no círculo vermelho abaixo, durante o mercado de ações global de 2000 a 2002 e a crise global de subprime em 2008, o índice do fundo Barclay CTA não só não caiu, mas também alcançou retornos positivos. Quando o mercado de ações e o mercado de títulos estavam em crise, o CTA poderia fornecer retornos fortes. Além disso, podemos ver que o nível de lucro do índice CTA de commodities Barclay desde 1980 foi mais forte do que o S&P 500, e a retirada também é muito menor do que o S&P 500.

img

O desenvolvimento da CTA na China só ocorreu nos últimos dez anos, mas o ímpeto é muito forte. Isso se deve principalmente ao ambiente de negociação relativamente aberto de futuros de commodities domésticos, ao baixo limiar de fundos de negociação, ao uso do sistema de margem para negociar posições longas e curtas, aos baixos custos de transação, à estrutura técnica mais avançada da bolsa em comparação com ações e ao sistema de negociação mais fácil.

Desde 2010, os fundos CTA existem principalmente na forma de fundos privados. Com a abertura gradual do escopo de investimento da conta especial do fundo nas políticas domésticas, os fundos CTA começaram a existir na forma de conta especial do fundo. Seu modo de operação mais transparente e aberto também se tornou uma ferramenta necessária para mais investidores alocarem ativos.

As estratégias de CTA também são mais adequadas para comerciantes individuais do que outras estratégias de negociação em termos de facilidade de entrada, limite de capital, execução de estratégias de negociação e conectividade de API. Os contratos futuros domésticos são muito pequenos. Por exemplo, milhares de yuans podem ser negociados com milhares de yuans de milho ou soja, e quase não há limite de capital. Além disso, porque algumas estratégias de CTA vêm da análise técnica tradicional, é relativamente fácil em comparação com outras estratégias.

O processo de design da estratégia CTA também é relativamente simples. Primeiro, os dados históricos são processados inicialmente e, em seguida, inseridos no modelo quantitativo. O modelo quantitativo inclui a estratégia de negociação formada por modelagem matemática, design de programação e outras ferramentas, e o sinal de negociação é gerado por cálculo e análise desses dados.

1.2 Tipo de estratégia de CTA de futuros

Do ponto de vista da estratégia de negociação, a estratégia CTA também é diversificada: pode ser uma estratégia de tendência ou uma estratégia de arbitragem; pode ser uma estratégia de médio e longo prazo de longo período, ou uma estratégia de curto prazo intradiário; A lógica da estratégia pode ser baseada em análise técnica ou análise fundamental; Pode ser uma transação subjetiva ou uma transação de sistema.

A estratégia CTA tem diferentes métodos de classificação. De acordo com o método de transação, pode ser dividida em transação subjetiva e transação de sistema. O desenvolvimento da estratégia CTA estrangeira é relativamente avançado, e a estratégia CTA de transação de sistema está próxima de 100%. De acordo com o método de análise, pode ser dividida em análise básica e análise técnica. De acordo com a fonte de renda, pode ser dividida em negociação de tendência e negociação oscilante.

Em geral, a estratégia CTA representa cerca de 70% do total do mercado de negociação, a estratégia de tendência representa cerca de 25% e a estratégia de contra-tendência ou inversão de tendência representa cerca de 5%.

Estratégia de criação de mercado de alta frequência

Atualmente, existem duas principais estratégias de negociação de alta frequência no mercado: uma é a estratégia de criação de mercado de alta frequência, a outra é a estratégia de arbitragem de alta frequência. A estratégia de criação de mercado é fornecer liquidez no mercado de negociação. Ou seja, no mercado de negociação com um market maker, se alguém quiser negociar, o market maker deve garantir que sua ordem possa ser negociada. Se houver liquidez insuficiente no mercado e a ordem não puder ser negociada, o market maker deve comprar ou vender a ordem da contraparte.

Estratégia de arbitragem de alta frequência

A arbitragem de alta frequência refere-se à negociação de duas ações altamente correlacionadas ou ETF e carteira ETF. De acordo com o método de cálculo do ETF, o preço esperado de um ETF pode ser calculado da mesma forma. O preço do índice ETF pode subtrair o preço esperado do ETF para obter uma diferença de preço. Normalmente, a diferença de preço será executada em um canal de preço. Se a diferença de preço atravessar os canais superior e inferior, você pode negociar a diferença de preço, esperar o retorno da diferença de preço e ganhar renda com isso.

Estratégia intradiária

Em sentido literal, enquanto não houver posição durante a noite, pode ser chamada de estratégia de negociação intra-diária. Devido ao curto período de detenção da negociação intradiária, geralmente é impossível obter lucros imediatamente após entrar no mercado e depois sair do mercado rapidamente. Portanto, este modo de negociação carrega baixo risco de mercado. No entanto, porque o mercado muda rapidamente em um curto período de tempo, a estratégia intra-diária geralmente tem requisitos mais altos para os traders.

Estratégia a médio e longo prazo

Em teoria, quanto maior o período de detenção, maior a capacidade estratégica e menor a relação risco-retorno. Especialmente em transações institucionais, devido à capacidade limitada de estratégias de curto prazo, grandes fundos não podem entrar e sair do mercado em um curto período de tempo, estratégias mais de longo prazo serão alocadas. Geralmente, o período de posição é de vários dias e meses, ou até mais.

Dados da estratégia do CTA

Em geral, a estratégia CTA é estudada com dados de minutos, horas e diários, que incluem: preço de abertura, preço mais alto, preço mais baixo, preço de fechamento, volume de negociação, etc. Apenas algumas estratégias CTA usarão dados Tick, como preço de compra, preço de venda, volume de compra, volume de venda e outros dados detalhados em dados L2.

Quanto à ideia básica da estratégia CTA, a primeira coisa que pensamos é baseada em indicadores técnicos tradicionais, porque existem muitos materiais de referência pública nesta área, e a lógica é geralmente simples, a maioria dos quais baseia-se em princípios estatísticos.

Existem também alguns modelos clássicos de negociação no mercado, que também podem ser utilizados como referência e melhorados, incluindo: combinação de médias móveis múltiplas, DualThrust, R-Breaker, método de negociação Turtle, método de negociação grid, etc.

Todos esses são estratégias de negociação baseadas em análise técnica tradicional. O processo é extrair fatores ou condições de negociação com vantagens de probabilidade de acordo com dados históricos e conceitos de negociação corretos, e assumir que o mercado ainda terá tais leis no futuro. Finalmente, a estratégia de negociação é realizada por código e negociação totalmente automática.

A maior vantagem da estratégia CTA é que não importa se o mercado atual está subindo ou caindo, ele pode obter retornos absolutos, especialmente quando o mercado está mudando rapidamente, ou a tendência do mercado é obviamente suave, a vantagem da estratégia é óbvia, em suma, se há uma tendência, há um ganho.

1.3 Princípio de lucro da estratégia CTA de futuros

A estratégia de futuros CTA é rentável principalmente devido aos seguintes pontos:

    1. Há reflexividade na tendência de preços, que sempre continua no caminho da tendência. Quando os investidores observam que o preço sobe, eles vão seguir a tendência e comprar, resultando em um aumento adicional no preço. O mesmo vale para a queda do preço. Porque os investidores são mais irracionais, às vezes podemos ver que o preço sobe anormalmente e cai anormalmente.
    1. Cada investidor tem uma tolerância assimétrica para a relação lucro/perda e uma tolerância diferente para o risco.
    1. A formação do preço é determinada pela transação. É verdade que a transação é impulsionada por pessoas, mas a natureza humana é difícil de mudar. Esta é a razão pela qual o padrão fixo irá se repetir. A estratégia é eficaz no backtesting de dados históricos, o que indica que também pode ser eficaz no futuro.

Além disso, a característica de negociação do rastreamento de tendências é perder uma pequena quantidade de dinheiro quando não há mercado e fazer uma grande fortuna quando o mercado vem. No entanto, as pessoas que fizeram negociação sabem que o mercado é volátil a maior parte do tempo, e apenas em um pequeno período de tempo é o mercado de tendências. Portanto, a estratégia de rastreamento de tendências tem uma baixa taxa de ganho na negociação, mas o lucro e perda geral de cada transação é relativamente grande.

Como a estratégia de rastreamento de tendências é instável em termos de renda, muitas instituições de investimento usarão várias variedades e estratégias para construir um portfólio, que também será configurado com uma certa quantidade de estratégias de reversão.

Correlação entre o CTA e os activos tradicionais

img

Em teoria, várias estratégias com estilos diferentes ou correlação relativamente baixa, às vezes, o mesmo e às vezes diferentes sinais de negociação ao mesmo tempo, quando confrontados com várias mudanças nos preços do mercado.

A partir do ponto de vista acima, pode-se concluir que é melhor desenvolver várias sub-estratégias moderadas do que desenvolver uma estratégia principal. Como controlar essas estratégias? Aqui podemos aprender com o algoritmo de floresta aleatória no aprendizado de máquina. A floresta aleatória não é um algoritmo independente, é uma estrutura de decisão contendo várias árvores de decisão. É equivalente à estratégia principal acima da sub-estratégia da árvore de decisão. O aglomerado de subestratégias é organizado e controlado através da estratégia principal.

Em seguida, precisamos projetar uma estratégia principal. Podemos avaliar a liquidez, rentabilidade e estabilidade de cada variedade em todo o mercado de futuros de commodities para selecionar o portfólio de variedades de futuros de commodities com baixa volatilidade de ganhos, e depois conduzir uma triagem neutra do setor, reduzir ainda mais a volatilidade geral através da dispersão do setor do portfólio e, finalmente, construir o portfólio de multi-variedade de futuros de commodities real através da correspondência de valor de mercado para negociação.

Cada variedade também pode ser configurada com estratégias de múltiplos parâmetros, e pode selecionar a combinação de parâmetros com bom desempenho no backtest. Quando a tendência do mercado é óbvia, as estratégias de múltiplos parâmetros geralmente funcionam de forma consistente, o que equivale a adicionar posições; Quando o mercado está em uma situação volátil, o desempenho de vários conjuntos de estratégias de parâmetros geralmente será inconsistente, de modo que eles possam cobrir riscos indo longos ou curtos, respectivamente, o que equivale a reduzir posições. Isso pode reduzir ainda mais a taxa máxima de backtest da carteira, mantendo a taxa geral de retorno inalterada.

2. Exemplo clássico de estratégia de CTA de futuros

Newton disse uma vez: Se vejo mais longe do que os outros, é porque estou nos ombros de gigantes.

As estratégias de CTA disponíveis publicamente no mercado incluem a estratégia SMA, a estratégia de bandas de Bollinger, as regras de negociação de tartaruga, a estratégia de impulso, a estratégia de arbitragem, etc. As estratégias de negociação quantitativas têm uma característica, ou seja, elas falharão lentamente uma vez que sejam tornadas públicas.

2.1 Análise dos elementos fundamentais dos futuros (inventário, diferença de base, preço)

A análise fundamental não precisa se preocupar com a tendência de preço a curto prazo. Acredita-se que o valor será refletido no preço em última análise. Trata-se mais de analisar os fatores por trás do preço para determinar quanto vale a variedade. Geralmente, o método de análise de cima para baixo é adotado: a partir de fatores macro, fatores de variedade e outros fatores.

img

Podemos ver no gráfico acima que há muitos fatores que afetam os preços das commodities, e esses dados estão mudando constantemente.

Na verdade, a análise fundamental de futuros de commodities não é para analisar todos os fatores.

Macrofatores

Os dados macroeconômicos são complexos e mutáveis. Todos os dias, a cada momento, existem muitos dados econômicos publicados, da política nacional, bancos centrais, bancos de investimento, oficiais e não oficiais. Além da crise política e econômica, a macroanálise é um bom material para conversar, mas não prático.

Fator de variedade

Na análise fundamental, a análise de variedade é principalmente para analisar prêmio e desconto, relação oferta e demanda, estoque de commodities, lucro industrial, etc. Pode-se dizer que dominar a análise de fatores de variedade de futuros de commodities pode julgar a maior parte da tendência do mercado.

Como os amigos que fizeram futuros sabem, os futuros de commodities domésticos podem ser simplesmente divididos em produtos industriais e produtos agrícolas. Os métodos de análise de produtos industriais e produtos agrícolas são diferentes. Vamos elaborar sobre os dois aspectos da oferta e da demanda. Nos produtos industriais, a oferta é relativamente estável. A menos que haja um grande avanço tecnológico, a capacidade de produção provavelmente não mudará significativamente em um curto período de tempo. Portanto, o principal fator que afeta o preço dos produtos industriais é a demanda. A demanda por produtos agrícolas é relativamente estável. A longo prazo, a demanda por produtos agrícolas muda, mas a curto prazo, a demanda por produtos agrícolas tende a ser estável, portanto, o principal fator que afeta o preço dos produtos agrícolas é a oferta.

Portanto, de acordo com as leis da economia, é a relação entre oferta e demanda que determina o preço dos bens em última análise. Em teoria, enquanto os dados de oferta e demanda podem ser obtidos, o preço futuro dos bens pode ser determinado. Para produtos industriais, os dados de oferta são fáceis de obter, mas é difícil obter os dados de demanda. Para produtos agrícolas, os dados de demanda são fáceis de obter e é difícil obter os dados de oferta.

De fato, podemos subtrair ainda mais. O resultado mútuo da oferta e da demanda no mercado econômico é o estoque. Podemos julgar a força da relação entre a oferta e a demanda do mercado por meio de dados de estoque. Se o estoque de uma mercadoria for muito alto, isso significa que a oferta do mercado é maior que a demanda, e o preço da mercadoria diminuirá na premissa de que as condições externas permaneçam inalteradas. Se o estoque de uma mercadoria for muito baixo, isso significa que a demanda do mercado é maior que a oferta, e o preço da mercadoria aumentará na premissa de que as condições externas permaneçam inalteradas.

Além de analisar o estoque de commodities, também precisamos analisar a diferença de preço entre o mercado spot e o mercado de futuros, que também é chamado de diferença de base. Se o preço de futuros for maior que o preço spot, chamamos de prêmio de futuros; Se o preço de futuros for menor que o preço spot, chamamos de desconto de futuros. De acordo com o sistema de entrega de futuros, na data de entrega de futuros, o preço de futuros deve ser igual ao preço spot.

Independentemente do prêmio ou desconto, devido às restrições do sistema de entrega de futuros, o preço dos futuros na data de entrega deve ser igual ao preço ao instante em teoria.

De acordo com o princípio acima, podemos usar o estoque e a diferença de base para determinar os preços futuros de futuros ao mesmo tempo. Se o estoque de uma mercadoria for baixo, e se o preço de futuros for muito menor do que o preço spot, podemos julgar que a demanda do mercado spot é maior do que a oferta, e a probabilidade de o preço spot aumentar no futuro é grande; Também devido ao sistema de entrega de futuros, à medida que a data de entrega se aproxima, o preço dos futuros aumentará e será igual ao preço spot. A probabilidade de o preço dos futuros aumentar é maior no futuro.

Finalmente, julgamos a direção provável do preço futuro através da diferença de estoque e base, mas não há um ponto preciso de compra e venda, por isso precisamos cooperar com a análise técnica para dar um sinal claro de entrada e saída.

2.2 Regras de comércio de tartarugas

Quando se trata de estratégias de negociação, temos que falar sobre as regras de negociação de tartaruga representativas. A regra de negociação de tartaruga vem do experimento mais famoso da história da negociação. Richard Dennis, um especulador de commodities, quer saber se grandes comerciantes nascem ou são treinados. Para este fim, em 1983, ele recrutou 13 pessoas e ensinou-lhes os conceitos básicos de negociação de futuros, bem como seus próprios métodos e princípios de negociação. Esses alunos foram chamados de turtles.

Em quatro anos, as Tartarugas alcançaram uma média anual de juros compostos de 80%. Dennis provou que, com um sistema e regras simples, pessoas com pouca ou nenhuma experiência de negociação podem se tornar excelentes comerciantes. No entanto, algumas tartarugas vendem regras de negociação de tartarugas no site para obter lucro.

Depois que a verdade saiu, as pessoas descobriram que as regras de negociação da Tartaruga adotaram o canal Donchian otimizado e usaram indicadores ATR para gerenciamento de posição.

Princípios fundamentais da tartaruga

  • Dominar vantagens: encontrar uma estratégia de negociação com expectativas positivas, porque a longo prazo, pode criar retornos positivos.
  • Gerenciar o risco: controlar o risco e manter a sua posição, caso contrário, pode não esperar um dia para obter lucros.
  • Perseverança: Somente aplicando sua estratégia de forma inabalável, você pode realmente alcançar resultados sistemáticos.
  • Simples e claros: A longo prazo, os sistemas simples têm mais vitalidade do que os sistemas complexos.

Então, agora, vamos ver o que as regras de negociação da Tartaruga dizem.

  1. Mercado - o que comprar e vender, essencialmente em quais mercados negociar. Tartarugas são comerciantes de futuros. Eles escolhem os mercados com grande volume de negociação e alta liquidez apenas. Porque escolher os mercados com negociação inativa aumentará o deslizamento extra de entrada e saída, e também perderá muitas oportunidades de tendência.
  2. O tamanho da posição - quanto comprar ou vender é uma parte muito importante de toda a estratégia, que geralmente é ignorada ou tratada erroneamente pela maioria das pessoas. A regra de negociação da tartaruga adota ATR, ou seja, o índice de volatilidade real média, para calcular a posição aberta, aumentar o sinal de posição e o sinal de stop loss. Este é um projeto muito engenhoso. A intenção original é ajustar o tamanho da posição através da volatilidade absoluta do mercado. Quando a volatilidade do mercado é forte, reduza a posição e quando a volatilidade do mercado é fraca, aumenta a posição. Primeiro define uma unidade cuja fórmula é: (ativos totais * 1%) / ATR. A posição inicial é 1 unidade. Mesmo se o declínio da variedade naquele dia atingir o nível de ATR, a perda naquele dia pode ser controlada dentro de 1% do ativo total. Se o preço da unidade subir 0,5, a posição longa aumentará suas posições em 1 unidade, até 4 unidades.
  3. Entrada no mercado - A entrada do mercado da Tartaruga é baseada no canal Donchian. Quando o preço sobe acima do preço mais alto das primeiras linhas de 20 ou 55 K, ele entrará no mercado para ir longo. Quando o preço cai abaixo do preço mais baixo das primeiras linhas de 20 ou 55 K, ele entrará no mercado para ficar curto. Quando o sinal aparecer, entre no mercado para negociar, sem esperar o fechamento ou a próxima linha K.
  4. Stop loss - No longo prazo, as transações que não param a perda não terão sucesso, mas a maioria dos traders está segurando posições perdedoras e tentando arriscar para esperar que o mercado volte. As regras da tartaruga estipulam quando se retirar da posição de perda estritamente. Se você mantiver ordens de posição longa e o preço cair 2 unidades, a posição longa é fechada com um stop loss. Se você mantiver uma ordem de posição curta e o preço subir 2 unidades, a posição curta será fechada com um stop loss.
  5. Stop profit - Nas regras da Turtle, stop profit significa perder muitos lucros flutuantes, o que também é uma parte inaceitável para muitos traders.

Assim, podemos ver que, embora as regras de negociação Turtle parecem muito simples, na verdade, ele formou um sentido real do protótipo do sistema de negociação. ele abrange todos os aspectos de um sistema de negociação completa, não deixando espaço para os comerciantes para tomar decisões imaginativas subjetivas, o que apenas faz as vantagens de operação programada do sistema jogar, incluindo: regras de entrada e saída, gestão de fundos e controle de risco, etc.

A maior vantagem do método de negociação de tartaruga é nos ajudar a estabelecer um conjunto de métodos de negociação eficazes. É uma combinação de abertura de lote, stop profits dinâmicos e stop loss, e a estratégia de tendência seguinte do mercado, especialmente o uso do valor ATR e o conceito de gestão de posição, que vale muito a pena aprender. Claro, também tem um problema comum com a estratégia de rastreamento de tendência, ou seja, lucro flutuante e retorno. É provável que todos os lucros flutuantes obtidos com a compra dos vencedores sejam retirados devido à onda seguinte de quedas acentuadas. É muito forte na tendência geral, e não tão bom quanto esperado no mercado volátil.

3. Desenvolver a estratégia de CTA de futuros na prática

3.1 Desenvolvimento de uma estratégia de tendências da CTA baseada no MyLanguage

No final do século passado, um método de negociação muito surpreendente começou a prevalecer no campo do investimento financeiro nos Estados Unidos. Após milhares de pessoas praticarem, as pessoas descobriram que esse método tem eficácia e grande valor prático. Ao mesmo tempo, ele foi reconhecido por muitos especialistas em investimento e comerciantes profissionais. Até agora, ele pode ser aplicado a quase todos os campos de investimento financeiro perfeitamente, seja câmbio, ouro, ações, futuros, petróleo bruto ou índice e bônus, que é o método de operação do caos.

A palavra caos refere-se à descrição do estado caótico do universo originalmente. Sua idéia é que o resultado é inevitável, mas porque o conhecimento existente não pode calcular o resultado, porque o próprio cálculo também está mudando o resultado, o resultado máximo ou mínimo pode aparecer finalmente, mas não há resultado inevitável. Isso é muito semelhante ao mercado de negociação. Os participantes também mudam o mercado quando analisam o mercado e compram e vendem. O mercado tem variabilidade eterna. Quando os participantes entendem a nova forma do mercado, o mercado também entende que é reconhecido pelos participantes, então a variação ocorre. E ele tenderá a mudar na direção desconhecida dos participantes. Ele tem sabedoria suficiente para impedir que os participantes pegem suas regras de mudança, ou seja, o mercado não é estável e a compreensão do passado do mercado não pode representar o futuro.

O método de operação do caos é um conjunto completo de ideias de investimento, estratégias de negociação e sinais de entrada e saída, inventado por Bill Williams. Atualmente, muitos investidores no mundo adotam a operação do caos para participar de transações de mercado. Como o desenvolvimento do mercado financeiro da China está atrasado e a teoria do caos também é uma idéia relativamente nova, há poucas pessoas estudando métodos de operação do caos na China.

Como o nome sugere, a base teórica do método de operação do caos é a teoria do caos, que foi proposta pelo meteorologista Edward Lorenz. Foi uma das maiores descobertas científicas no final do século XX. Ele apresentou o famoso "efeito borboleta". Bill Williams aplicou a teoria do caos ao campo do investimento financeiro de forma criativa, combinando com geometria fractal, dinâmica não linear e outras disciplinas, e criou uma série de indicadores de análise técnica muito eficazes.

Todo o método de operação do Caos é composto por cinco dimensões principais (indicadores técnicos):

  • Alligador

  • O Fractal

  • O Impulso

  • Aceleração

  • A linha de equilíbrio

img

O Alligator é um conjunto de linhas de equilíbrio usando geometria fractal e dinâmica não linear. Sua essência é estender a média móvel ponderada exponencialmente, que é uma espécie de linha média, mas seu método de cálculo é um pouco mais complicado do que a linha média comum. Em seguida, vamos ver como definir o Alligator no MyLanguage:

// Parameters
N1:=11;
N2:=21;

// Defining the price median
N3:=N1+N2;
N4:=N2+N3;
HL:=(H+L)/2;

// Alligator
Y^^SMA(REF(HL,N3),N4,1);
R:=SMA(REF(HL,N2),N3,1);
G:=SMA(REF(HL,N1),N2,1);

Primeiro, definimos 2 parâmetros externos N1 e N2, e então calcular a média HL do preço mais alto e o preço mais baixo de acordo com os parâmetros externos, e então calcular a média HL com parâmetros diferentes.

No método de operação do caos, um conceito de fractal é definido vividamente. Podemos fazer uma analogia: abra a palma da mão, com os dedos virados para cima, o dedo médio é o fractal superior, o dedo mindinho esquerdo e o dedo anelar, e o dedo indicador direito e o polegar, respectivamente, representam a linha K sem alta recorde. Um fractal básico é composto por essas cinco linhas K. Então você pode definir o fractal com o seguinte código:

// Fractal
TOP_N:=BARSLAST(REF(H,2)=HHV(H,5))+2;
BOTTOM_N:=BARSLAST(REF(L,2)=LLV(L,5))+2;

TOP:=REF(H,TOP_N);
BOTTOM:=REF(L,BOTTOM_N);

MAX_YRG^^MAX(MAX(Y,R),G); 
MIN_YRG^^MIN(MIN(Y,R),G); 

TOP_FRACTAL^^VALUEWHEN(H>=MAX_YRG,TOP);
BOTTOM_FRACTAL^^VALUEWHEN(L<=MIN_YRG,BOTTOM);

Depois de calcular o índice de crocodilo e fractal, podemos escrever uma estratégia de operação de caos simples baseada nessas duas condições e usar um grupo de linhas médias móveis ponderadas exponencialmente como o preço de referência para calcular o índice de crocodilo e fractal.

// If there are no current long position orders and the closing price rises above the upper fractal and the upper fractal is above the alligator, open a long position.
BKVOL=0 AND C>=TOP_FRACTAL AND TOP_FRACTAL>MAX_YRG,BPK(1);
// If there are no current short position orders and the closing price falls below the lower fractal and the lower fractal is below the alligator, open a short position.
SKVOL=0 AND C<=BOTTOM_FRACTAL AND BOTTOM_FRACTAL<MIN_YRG,SPK(1);

// Long positions are closed if the closing price falls below the jaws of the alligator.
C<Y,SP(BKVOL);
// Short positions are closed if the closing price rises above the jaws of the alligator.
C>Y,BP(SKVOL);

Para facilitar a compreensão, escrevi os comentários detalhados diretamente no código.

  • Posição de abertura longa: se não houver ordens de posição longa no momento, e o preço de encerramento subir abaixo do fractal superior, e o fractal superior estiver acima do crocodilo.
  • Posição de abertura curta: se não houver ordens de posição curta no momento, e o preço de encerramento cair abaixo do fractal inferior, e o fractal inferior estiver abaixo do crocodilo.
  • Posição de fechamento longa: se o preço de fechamento cair abaixo do queixo de jacaré.
  • Posição de encerramento curta: se o preço de encerramento subir acima do queixo de jacaré.

Em seguida, vamos ver como realmente são os resultados deste backtest de estratégia de operação de caos simples. A fim de tornar o backtest mais próximo do ambiente real do mercado, a comissão é definida em duas vezes a taxa de câmbio, e as posições de abertura e fechamento estão sujeitas a um ponto de deslizamento de dois saltos cada. O tipo de dados do backtest é o índice de rebar, e o tipo de negociação é a força principal do rebar contínua, com uma posição de abertura fixa de 1 lote. A seguir está o relatório preliminar do desempenho do backtest no nível de 1 hora.

img

A partir da curva de capital e dos dados de desempenho do backtest, a estratégia teve um bom desempenho e a curva geral de capital foi constantemente ascendente. No entanto, desde o final de 2016, as características do mercado das variedades de barras de reforço mudaram, da tendência unilateral de alta volatilidade para a tendência de volatilidade ampla.

Em uma palavra, a essência do método de operação do caos é encontrar um ponto de virada, sem se preocupar com como o mercado vai ou se é verdadeiro ou falso ruptura.

3.2 Desenvolvimento de uma estratégia de arbitragem da CTA baseada na linguagem JavaScript

George Soros apresentou uma importante proposição em A Alquimia das Finanças escrito em 1987: Eu acredito que os preços de mercado estão sempre errados no sentido de que eles apresentam uma visão tendenciosa do futuro. Ele acreditava que a hipótese de eficiência de mercado é apenas uma hipótese teórica. Na verdade, os participantes do mercado nem sempre são racionais, e em cada momento, os participantes não podem obter completamente e interpretar objetivamente todas as informações. Além disso, mesmo que seja a mesma informação, o feedback de todos é diferente. Ou seja, o preço em si já contém as expectativas erradas dos participantes do mercado, então, em essência, o preço de mercado está sempre errado. Esta pode ser a fonte de lucro dos arbitrageiros.

De acordo com os princípios acima, podemos saber que em um mercado de futuros ineficaz, a razão pela qual o impacto do mercado em contratos de entrega em períodos diferentes nem sempre é sincrônico e o preço não é completamente eficaz.

Como os futuros de commodities, a moeda digital também tem uma carteira de contratos de arbitragem de período cruzado. Por exemplo, na bolsa OKEX, há: ETC semana atual, ETC próxima semana, ETC trimestre. Por exemplo, suponha que a diferença de preço entre a semana atual de ETC e o trimestre de ETC permaneça em torno de 5 por um longo tempo. Se a diferença de preço atingir 7 em um dia, esperamos que a diferença de preço volte a 5 no futuro. Então podemos vender ETC naquela semana e comprar ETC trimestre ao mesmo tempo para diminuir a diferença de preço, e vice-versa.

Embora essa diferença de preço exista, há muitas incertezas na arbitragem manual devido a operações manuais demoradas, pouca precisão e o impacto das mudanças de preço. O charme da arbitragem quantitativa reside na captura de oportunidades de arbitragem através de modelos quantitativos e na formulação de estratégias de negociação de arbitragem, bem como na colocação de ordens de negociação automaticamente nas bolsas através de algoritmos programados, de modo a capturar oportunidades de forma rápida e precisa e obter lucros de forma eficiente e estável.

Este curso irá ensinar-lhe como usar a plataforma de negociação FMZ Quant e o contrato de futuros ETC na troca OKEX para demonstrar como capturar as oportunidades de arbitragem instantâneas, aproveitar os lucros que podem ser vistos a cada vez, e cobrir os riscos que podem ser encontrados na negociação de moeda digital com uma estratégia de arbitragem simples.

Criar uma estratégia de arbitragem interperíodo para a moeda digitalDificuldade: Normal

Ambiente estratégico

  • Objeto da transação: Ether Classic (ETC)
  • Dados de diferença: ETC semana corrente - ETC trimestre (omitir teste de cointegração)
  • Período de transacção: 5 minutos
  • Período de transacção: 5 minutos
  • Tipo de transação: período cruzado do mesmo tipo

Estratégia lógica

  • Condições para abertura de posições com corrida longa a diferença de preço: se a conta corrente não tem posições e a diferença de preço é menor do que o limite inferior da bola, então vá longo a diferença de preço. isto é, comprar posições de abertura ETC para a semana, vender posições de abertura ETC para o trimestre.
  • Condições para abertura de posições com abertura curta da diferença de preço: se não houver posição na conta corrente, e a diferença de preço for maior que o limite superior da bola, então vá curto da diferença de preço. ou seja, venda de posições de abertura ETC para a semana, compra de posições de abertura ETC para o trimestre.
  • Condições para fechar posições com longo prazo a diferença de preço: se a conta corrente mantém ordens longas de ETC na semana em curso e mantém ordens curtas de ETC no trimestre, e a diferença de preço é maior que o limite médio da bola, então feche longo prazo a diferença de preço. Ou seja, venda posições de fechamento ETC para a semana, compre posições de fechamento ETC para o trimestre.
  • Condições para fechar posições com curto da diferença de preço: se a conta corrente mantém ordens de curto de ETC na semana em curso e mantém ordens de longo de ETC no trimestre, e a diferença de preço é menor que o limite médio da bola, então feche curto a diferença de preço. Ou seja, compre posições de fechamento ETC para a semana, venda posições de fechamento ETC para o trimestre.

O acima é uma simples descrição lógica da estratégia de arbitragem de período cruzado de moeda digital. Então, como implementar nossas ideias no programa?

function Data() {}  // Basic data function
Data.prototype.mp = function () {}  // Position function
Data.prototype.boll = function () {}  // Indicator function
Data.prototype.trade = function () {}  // Order placement function
Data.prototype.cancelOrders = function () {}  // Order withdrawal function
Data.prototype.isEven = function () {}  // Processing single contract function
Data.prototype.drawingChart = function () {}  // Drawing function

function onTick() {
    var data = new Data(tradeTypeA, tradeTypeB);  // Create a basic data object
    var accountStocks = data.accountData.Stocks;  // Account balance
    var boll = data.boll(dataLength, timeCycle);  // Calculate the technical indicators of boll
    data.trade();  // Calculate trading conditions to place an order
    data.cancelOrders();  // Cancel orders
    data.drawingChart(boll);  // Drawing
    data.isEven();  // Processing of holding individual contract
}

//Entry function
function main() {
    while (true) {  // Enter the polling mode
        onTick();  // Execute onTick function
        Sleep(500);  // Sleep for 0.5 seconds
    }
}

Imagine como é o nosso processo de negociação na negociação de supervisão. Não há diferença essencial nas transações do sistema. Não é nada mais do que adquirir dados, calcular dados, colocar uma transação de ordem e processar após a colocação de uma ordem. O mesmo é verdade no programa. Primeiro, o programa executará a função principal na linha 20, que é uma convenção. Quando o programa concluir o pré-processamento da estratégia de negociação (se houver), entrará no modo de loop infinito, ou seja, no modo de votação. No modo de votação, a função onTick será executada repetidamente.

Em seguida, na função onTick, é o nosso processo de negociação na transação subjetiva: primeiro, obter os dados de preço básicos, em seguida, obter o saldo da conta, em seguida, calcular o índice, em seguida, calcular as condições de negociação e colocar a ordem, e, finalmente, o processamento após a colocação da ordem, incluindo cancelamento da ordem, desenho e processamento de um único contrato.

O quadro estratégico pode ser facilmente configurado de acordo com a ideia estratégica e o processo de transacção.

  • Preprocessamento antes da transacção.
  • Obter e calcular dados.
  • Faça uma encomenda e trate disso mais tarde.

Em seguida, precisamos preencher o código de detalhes necessário no quadro estratégico de acordo com o processo real de transação e os detalhes da transação.

I. Pré-processamento antes da transacção

1. Declare as variáveis globais necessárias no escopo global.

  • Declarar um objeto de gráfico para o gráfico de configuração
var chart = {}
  • Chamar a função Chart e inicializar o gráfico
var ObjChart = Chart ( chart )
  • Declarar uma matriz vazia para armazenar séries de diferença de preço
var bars = []
  • Declarar uma variável de carimbo de tempo para os dados do histórico do registro
var oldTime = 0

2. Configurar os parâmetros externos da estratégia.

var tradeTypeA = "this_week"; // Arbitrage A Contract
var tradeTypeB = "quarter"; // Arbitrage B Contract
var dataLength = 10; // Indicator period length
var timeCycle = 1; // K-line period
var name = "ETC"; // Currencies
var unit = 1; // Order quantity

3. Definir a função de processamento de dados

  • Função básica de dados: dados Crie um construtor, Data, e defina suas propriedades internas, incluindo: dados de conta, dados de posição, carimbo de data de linha K, preço de compra/venda do contrato de arbitragem A/B e diferença de preço de arbitragem positiva/negativa.
function Data(tradeTypeA, tradeTypeB) { // Pass in arbitrage A contract and arbitrage B contract
    this.accountData = _C(exchange.GetAccount); // Get account information
    this.positionData = _C(exchange.GetPosition); // Get position information
    var recordsData = _C(exchange.GetRecords); // Get K-line data
    exchange.SetContractType(tradeTypeA); // Subscription arbitrage A contract
    var depthDataA = _C(exchange.GetDepth); // Depth data of arbitrage A contract
    exchange.SetContractType(tradeTypeB); // Subscription arbitrage B contract
    var depthDataB = _C(exchange.GetDepth); // Depth data of arbitrage B contract
    this.time = recordsData[recordsData.length - 1].Time; // Time of obtaining the latest data
    this.askA = depthDataA.Asks[0].Price; // Sell one price of Arbitrage A contract
    this.bidA = depthDataA.Bids[0].Price; // Buy one price of Arbitrage A contract
    this.askB = depthDataB.Asks[0].Price; // Sell one price of Arbitrage B contract
    this.bidB = depthDataB.Bids[0].Price; // Buy one price of Arbitrage B contract
    // Positive arbitrage price differences (Sell one price of contract A - Buy one price of contract B)
    this.basb = depthDataA.Asks[0].Price - depthDataB.Bids[0].Price;
    // Negative arbitrage price differences (Buy one price of contract A - Sell one price of contract B)
    this.sabb = depthDataA.Bids[0].Price - depthDataB.Asks[0].Price;
}
  • Obter a função de posição: mp ()) Atravesse toda a matriz de posições e retorne a quantidade de posição do contrato e direção especificados.
Data.prototype.mp = function (tradeType, type) {
    var positionData = this.positionData; // Get position information
    for (var i = 0; i < positionData.length; i++) {
        if (positionData[i].ContractType == tradeType) {
            if (positionData[i].Type == type) {
                if (positionData[i].Amount > 0) {
                    return positionData[i].Amount;
                }
            }
        }
    }
    return false;
}
  • Função da linha K e do indicador: boll() Uma nova sequência de linhas K é sintetizada de acordo com os dados de diferença de preço de arbitragem positiva/negativa.
Data.prototype.boll = function (num, timeCycle) {
    var self = {}; // Temporary objects
    // Median value of positive arbitrage price difference and negative arbitrage price difference
    self.Close = (this.basb + this.sabb) / 2;
    if (this.timeA == this.timeB) {
        self.Time = this.time;
    } // Compare two depth data timestamps
    if (this.time - oldTime > timeCycle * 60000) {
        bars.push(self);
        oldTime = this.time;
    } // Pass in the price difference data object into the K-line array according to the specified time period
    if (bars.length > num * 2) {
        bars.shift(); // Control the length of the K-line array
    } else {
        return;
    }
    var boll = TA.BOLL(bars, num, 2); // Call the boll indicator in the talib library
    return {
        up: boll[0][boll[0].length - 1], // boll indicator upper track
        middle: boll[1][boll[1].length - 1], // boll indicator middle track
        down: boll[2][boll[2].length - 1] // boll indicator down track
    } // Return a processed boll indicator data
}
  • Função de ordem: comércio Passar no nome do contrato da ordem e tipo de ordem, em seguida, colocar a ordem com contrapartida, e retornar o resultado após a colocação da ordem.
Data.prototype.trade = function (tradeType, type) {
    exchange.SetContractType(tradeType); // Resubscribe to a contract before placing an order
    var askPrice, bidPrice;
    if (tradeType == tradeTypeA) { // If the order is placed in contract A
        askPrice = this.askA; // set askPrice
        bidPrice = this.bidA; // set bidPrice
    } else if (tradeType == tradeTypeB) { // If the order is placed in contract B
        askPrice = this.askB; // set askPrice
        bidPrice = this.bidB; // set bidPrice
    }
    switch (type) { // Match order placement mode
        case "buy":
            exchange.SetDirection(type); // Set order placement mode
            return exchange.Buy(askPrice, unit);
        case "sell":
            exchange.SetDirection(type); // Set order placement mode
            return exchange.Sell(bidPrice, unit);
        case "closebuy":
            exchange.SetDirection(type); // Set order placement mode
            return exchange.Sell(bidPrice, unit);
        case "closesell":
            exchange.SetDirection(type); // Set order placement mode
            return exchange.Buy(askPrice, unit);
        default:
            return false;
    }
}
  • Cancelar encomendas Função: cancelar encomendas Obtenha uma matriz de todas as ordens pendentes e cancele-as uma a uma. Além disso, false é devolvido se houver uma ordem não preenchida, e true é devolvido se não houver uma ordem não preenchida.
Data.prototype.cancelOrders = function () {
    Sleep(500); // Delay before cancellation, because some exchanges, you know what I mean
    var orders = _C(exchange.GetOrders); // Get an array of unfilled orders
    if (orders.length > 0) { // If there are unfilled orders
        for (var i = 0; i < orders.length; i++) { // Iterate through the array of unfilled orders
            exchange.CancelOrder(orders[i].Id); // Cancel unfilled orders one by one
            Sleep(500); // Delay 0.5 seconds
        }
        return false; // Return false if an unfilled order is cancelled
    }
    return true; // Return true if there are no unfilled orders
}
  • Manutenção de um único contrato: isEven ((() No caso de uma única etapa na transação de arbitragem, vamos simplesmente fechar todas as posições.
Data.prototype.isEven = function () {
    var positionData = this.positionData; // Get position information
    var type = null; // Switch position direction
    // If the remaining 2 of the position array length is not equal to 0 or the position array length is not equal to 2
    if (positionData.length % 2 != 0 || positionData.length != 2) {
        for (var i = 0; i < positionData.length; i++) { // Iterate through the position array
            if (positionData[i].Type == 0) { // If it is a long order
                type = 10; // Set order parameters
            } else if (positionData[i].Type == 1) { // If it is a short order
                type = -10; // Set order parameters
            }
            // Close all positions
            this.trade(positionData[i].ContractType, type, positionData[i].Amount);
        }
    }
}
  • Função de desenho: desenho Chamando o método ObjChart Add (), desenhe os dados de mercado e os dados de indicadores necessários no gráfico: pista superior, pista média, pista inferior, diferença de preço de arbitragem positiva/negativa.
Data.prototype.drawingChart = function (boll) {
    var nowTime = new Date().getTime();
    ObjChart.add([0, [nowTime, boll.up]]);
    ObjChart.add([1, [nowTime, boll.middle]]);
    ObjChart.add([2, [nowTime, boll.down]]);
    ObjChart.add([3

Relacionados

Mais.