понедельник, 4 июня 2018 г.

Exemplo de sistema de comércio algorítmico


Arquitetura do sistema de comércio algorítmico.


Anteriormente, neste blog, escrevi sobre a arquitetura conceitual de um sistema de negociação algorítmico inteligente, bem como os requisitos funcionais e não funcionais de um sistema de negociação algorítmica de produção. Desde então, criei uma arquitetura de sistema que, acredito, poderia satisfazer esses requisitos arquitetônicos. Nesta publicação, descreverei a arquitetura seguindo as diretrizes dos padrões ISO / IEC / IEEE 42018 e padrão de descrição da arquitetura de engenharia de software. De acordo com este padrão, uma descrição de arquitetura deve:


Contém várias visualizações arquitetônicas padronizadas (por exemplo, em UML) e Mantenha a rastreabilidade entre decisões de design e requisitos arquitetônicos.


Definição de arquitetura de software.


Ainda não há consenso quanto ao que é uma arquitetura do sistema. No contexto deste artigo, é definido como a infra-estrutura dentro da qual os componentes do aplicativo que satisfazem os requisitos funcionais podem ser especificados, implantados e executados. Os requisitos funcionais são as funções esperadas do sistema e seus componentes. Os requisitos não funcionais são medidas através das quais a qualidade do sistema pode ser medida.


Um sistema que satisfaça plenamente seus requisitos funcionais ainda pode não atender às expectativas se os requisitos não funcionais forem deixados insatisfeitos. Para ilustrar este conceito, considere o seguinte cenário: um sistema de negociação algorítmico que você acabou de comprar / construir faz excelentes decisões de negociação, mas é completamente inoperacional com os sistemas de gestão e contabilidade de risco das organizações. Esse sistema atenderia às suas expectativas?


Arquitetura conceitual.


Uma visão conceitual descreve conceitos e mecanismos de alto nível que existem no sistema no mais alto nível de granularidade. Nesse nível, o sistema de negociação algorítmica segue uma arquitetura orientada a eventos (EDA) dividida em quatro camadas e dois aspectos arquitetônicos. Para cada camada e referência de aspecto arquiteturas e padrões são usados. Padrões arquitetônicos são estruturas comprovadas e genéricas para alcançar requisitos específicos. Os aspectos arquitetônicos são preocupações transversais que abrangem múltiplos componentes.


Arquitetura orientada a eventos - uma arquitetura que produz, detecta, consome e reage a eventos. Os eventos incluem movimentos do mercado em tempo real, eventos ou tendências complexas e eventos comerciais, e. enviando um pedido.


Este diagrama ilustra a arquitetura conceitual do sistema de negociação algorítmica.


Arquiteturas de referência.


Para usar uma analogia, uma arquitetura de referência é semelhante aos planos para uma parede de suporte de carga. Esta impressão azul pode ser reutilizada para projetos de construção múltipla independentemente do edifício que está sendo construído, pois satisfaz um conjunto de requisitos comuns. Da mesma forma, uma arquitetura de referência define um modelo contendo estruturas genéricas e mecanismos que podem ser usados ​​para construir uma arquitetura de software concreta que satisfaça requisitos específicos. A arquitetura para o sistema de negociação algorítmica usa uma arquitetura baseada em espaço (SBA) e um controlador de exibição de modelo (MVC) como referências. São também utilizadas boas práticas, como o armazenamento de dados operacionais (ODS), o padrão de transformação e carregamento de extratos (ETL) e um data warehouse (DW).


Controle de exibição de modelo - um padrão que separa a representação de informações da interação do usuário com ela. Arquitetura baseada em espaço - especifica uma infra-estrutura onde as unidades de processamento acopladas vagamente interagem entre si através de uma memória associativa compartilhada chamada espaço (mostrado abaixo).


Visão estrutural.


A visão estrutural de uma arquitetura mostra os componentes e subcomponentes do sistema de negociação algorítmica. Ele também mostra como esses componentes são implantados em infra-estrutura física. Os diagramas UML utilizados nesta visão incluem diagramas de componentes e diagramas de implantação. Abaixo está a galeria dos diagramas de implantação do sistema de negociação algorítmico geral e as unidades de processamento na arquitetura de referência SBA, bem como diagramas de componentes relacionados para cada uma das camadas.


Diagrama de componentes de processamento de comerciantes / eventos automatizados Fonte de dados e diagrama de componente de camada de pré-processamento Diagrama de componente de interface de usuário baseado em MVC.


Táticas arquitetônicas.


De acordo com o instituto de engenharia de software, uma tática arquitetônica é um meio de satisfazer um requisito de qualidade, manipulando algum aspecto de um modelo de atributo de qualidade através de decisões de design arquitetônico. Um exemplo simples usado na arquitetura do sistema de negociação algorítmica é 'manipular' um armazenamento de dados operacional (ODS) com um componente de consulta contínua. Este componente analisaria continuamente o ODS para identificar e extrair eventos complexos. As seguintes táticas são usadas na arquitetura:


O padrão do disruptor nas filas de eventos e pedidos Memória compartilhada para as filas de eventos e pedidos Linguagem de consulta contínua (CQL) na filtragem de dados ODS com o padrão de design do filtro em dados recebidos Algoritmos de evitação de congestionamentos em todas as conexões de entrada e saída Gerenciamento de filas ativas (AQM ) e notificação de congestionamento explícito Recursos de computação de mercadorias com capacidade de atualização (escalável) Redundância ativa para todos os pontos de falha únicos Indicação e estruturas de persistência otimizadas no ODS Programe backup de dados regulares e scripts de limpeza para ODS Histórico de transações em todos os bancos de dados Súmrios para todos Ordens para detectar falhas Anotar eventos com timestamps para ignorar eventos "obsoletos". Regras de validação de pedidos, por exemplo, quantidades de comércio máximo Componentes de comerciante automatizado usam um banco de dados em memória para análise Autenticação em dois estágios para interfaces de usuário conectando-se à ATs Criptografia em interfaces de usuário e conexões ao padrão de design ATs Observer para que o MVC gerencie visualizações.


A lista acima é apenas algumas decisões de design que identifiquei durante o projeto da arquitetura. Não é uma lista completa de táticas. À medida que o sistema está sendo desenvolvido, táticas adicionais devem ser empregadas em múltiplos níveis de granularidade para atender aos requisitos funcionais e não funcionais. Abaixo estão três diagramas que descrevem o padrão de design do disruptor, o padrão de design do filtro e o componente de consulta contínua.


Visão comportamental.


Essa visão de uma arquitetura mostra como os componentes e camadas devem interagir um com o outro. Isso é útil ao criar cenários para testar projetos de arquitetura e para entender o sistema de ponta a ponta. Essa visão consiste em diagramas de seqüência e diagramas de atividades. Diagramas de atividades que mostram o processo interno do sistema de negociação algorítmica e como os comerciantes devem interagir com o sistema de negociação algorítmica são mostrados abaixo.


Tecnologias e estruturas.


O passo final na concepção de uma arquitetura de software é identificar potenciais tecnologias e estruturas que poderiam ser utilizadas para realizar a arquitetura. Como princípio geral, é melhor aproveitar as tecnologias existentes, desde que satisfaçam adequadamente os requisitos funcionais e não funcionais. Uma estrutura é uma arquitetura de referência realizada, e. JBoss é uma estrutura que realiza a arquitetura de referência JEE. As seguintes tecnologias e frameworks são interessantes e devem ser consideradas na implementação de um sistema de negociação algorítmico:


CUDA - NVidia tem uma série de produtos que suportam modelagem de finanças computacionais de alto desempenho. Pode-se conseguir até 50x melhorias no desempenho ao executar simulações Monte Carlo na GPU em vez da CPU. Rio Apache - Rio é um kit de ferramentas usado para desenvolver sistemas distribuídos. Ele foi usado como uma estrutura para a construção de aplicativos com base no padrão SBA Apache Hadoop - no caso de registro invasivo ser um requisito, então o uso do Hadoop oferece uma solução interessante para o problema dos grandes dados. O Hadoop pode ser implantado em um ambiente em cluster que suporta tecnologias CUDA. AlgoTrader - uma plataforma de negociação algorítmica de código aberto. O AlgoTrader poderia ser implantado no lugar dos componentes do comerciante automatizado. FIX Engine - um aplicativo autônomo que aceita os protocolos do Financial Information Exchange (FIX), incluindo FIX, FAST e FIXatdl.


Embora não seja uma tecnologia ou uma estrutura, os componentes devem ser criados com uma interface de programação de aplicativos (API) para melhorar a interoperabilidade do sistema e seus componentes.


Conclusão.


A arquitetura proposta foi projetada para satisfazer requisitos muito genéricos identificados para sistemas de negociação algorítmica. Geralmente, os sistemas de negociação algorítmica são complicados por três fatores que variam de acordo com cada implementação:


Dependências em sistemas empresariais e de intercâmbio externos Requisitos não funcionais desafiadores e restrições arquitetônicas em evolução.


Por conseguinte, a arquitetura de software proposta deve ser adaptada caso a caso para satisfazer requisitos organizacionais e regulatórios específicos, bem como para superar restrições regionais. A arquitetura do sistema de negociação algorítmica deve ser vista como apenas um ponto de referência para indivíduos e organizações que desejam projetar seus próprios sistemas de negociação algorítmica.


Para uma cópia completa e fontes usadas, baixe uma cópia do meu relatório. Obrigado.


História anterior.


Requisitos do sistema de negociação algorítmica.


Próxima História.


Otimização de portfólio usando otimização de enxertia de partículas.


Excelente visão geral, e um bom começo na arquitetura. Sua conclusão foi adequada, e apontou por que os sistemas de software de negociação algorítmica requerem back-testing e ajustes constantes para mantê-los relevantes. Boa leitura!


1 de fevereiro de 2018.


Quando os dados de commodities ou renda fixa são imprecisos ou lentos em receber, os modelos podem ter dificuldade em calcular especialmente no espaço de um evento Black Swann.


Muito obrigado por este artigo. Estive pensando em AI em finanças desde o final da década de 90 e, finalmente, as tecnologias e as APIs estão comumente disponíveis. Seu artigo e blog são uma ótima ajuda para fazer esses primeiros passos para tornar realidade os sonhos dos anos anteriores. Muito obrigado e boa sorte em seus novos empreendimentos!


Mantenha-me atualizado no seu progresso. Estou muito interessado. Obrigado.


Envie um comentário.


Cancelar resposta.


Siga a Turing Finance.


Turing Finance Mailing List.


Amigos da Turing Finance.


Quantocracy é o melhor agregador de blog de finanças quantitativas com links para novas análises postadas todos os dias.


NMRQL é o fundo hedge quantitativo de que sou parte. Usamos a aprendizagem de máquinas para tentar vencer o mercado.


Arquitetura do sistema de comércio algorítmico.


Anteriormente, neste blog, escrevi sobre a arquitetura conceitual de um sistema de negociação algorítmico inteligente, bem como os requisitos funcionais e não funcionais de um sistema de negociação algorítmica de produção. Desde então, criei uma arquitetura de sistema que, acredito, poderia satisfazer esses requisitos arquitetônicos. Nesta publicação, descreverei a arquitetura seguindo as diretrizes dos padrões ISO / IEC / IEEE 42018 e padrão de descrição da arquitetura de engenharia de software. De acordo com este padrão, uma descrição de arquitetura deve:


Contém várias visualizações arquitetônicas padronizadas (por exemplo, em UML) e Mantenha a rastreabilidade entre decisões de design e requisitos arquitetônicos.


Definição de arquitetura de software.


Ainda não há consenso quanto ao que é uma arquitetura do sistema. No contexto deste artigo, é definido como a infra-estrutura dentro da qual os componentes do aplicativo que satisfazem os requisitos funcionais podem ser especificados, implantados e executados. Os requisitos funcionais são as funções esperadas do sistema e seus componentes. Os requisitos não funcionais são medidas através das quais a qualidade do sistema pode ser medida.


Um sistema que satisfaça plenamente seus requisitos funcionais ainda pode não atender às expectativas se os requisitos não funcionais forem deixados insatisfeitos. Para ilustrar este conceito, considere o seguinte cenário: um sistema de negociação algorítmico que você acabou de comprar / construir faz excelentes decisões de negociação, mas é completamente inoperacional com os sistemas de gestão e contabilidade de risco das organizações. Esse sistema atenderia às suas expectativas?


Arquitetura conceitual.


Uma visão conceitual descreve conceitos e mecanismos de alto nível que existem no sistema no mais alto nível de granularidade. Nesse nível, o sistema de negociação algorítmica segue uma arquitetura orientada a eventos (EDA) dividida em quatro camadas e dois aspectos arquitetônicos. Para cada camada e referência de aspecto arquiteturas e padrões são usados. Padrões arquitetônicos são estruturas comprovadas e genéricas para alcançar requisitos específicos. Os aspectos arquitetônicos são preocupações transversais que abrangem múltiplos componentes.


Arquitetura orientada a eventos - uma arquitetura que produz, detecta, consome e reage a eventos. Os eventos incluem movimentos do mercado em tempo real, eventos ou tendências complexas e eventos comerciais, e. enviando um pedido.


Este diagrama ilustra a arquitetura conceitual do sistema de negociação algorítmica.


Arquiteturas de referência.


Para usar uma analogia, uma arquitetura de referência é semelhante aos planos para uma parede de suporte de carga. Esta impressão azul pode ser reutilizada para projetos de construção múltipla independentemente do edifício que está sendo construído, pois satisfaz um conjunto de requisitos comuns. Da mesma forma, uma arquitetura de referência define um modelo contendo estruturas genéricas e mecanismos que podem ser usados ​​para construir uma arquitetura de software concreta que satisfaça requisitos específicos. A arquitetura para o sistema de negociação algorítmica usa uma arquitetura baseada em espaço (SBA) e um controlador de exibição de modelo (MVC) como referências. São também utilizadas boas práticas, como o armazenamento de dados operacionais (ODS), o padrão de transformação e carregamento de extratos (ETL) e um data warehouse (DW).


Controle de exibição de modelo - um padrão que separa a representação de informações da interação do usuário com ela. Arquitetura baseada em espaço - especifica uma infra-estrutura onde as unidades de processamento acopladas vagamente interagem entre si através de uma memória associativa compartilhada chamada espaço (mostrado abaixo).


Visão estrutural.


A visão estrutural de uma arquitetura mostra os componentes e subcomponentes do sistema de negociação algorítmica. Ele também mostra como esses componentes são implantados em infra-estrutura física. Os diagramas UML utilizados nesta visão incluem diagramas de componentes e diagramas de implantação. Abaixo está a galeria dos diagramas de implantação do sistema de negociação algorítmico geral e as unidades de processamento na arquitetura de referência SBA, bem como diagramas de componentes relacionados para cada uma das camadas.


Diagrama de componentes de processamento de comerciantes / eventos automatizados Fonte de dados e diagrama de componente de camada de pré-processamento Diagrama de componente de interface de usuário baseado em MVC.


Táticas arquitetônicas.


De acordo com o instituto de engenharia de software, uma tática arquitetônica é um meio de satisfazer um requisito de qualidade, manipulando algum aspecto de um modelo de atributo de qualidade através de decisões de design arquitetônico. Um exemplo simples usado na arquitetura do sistema de negociação algorítmica é 'manipular' um armazenamento de dados operacional (ODS) com um componente de consulta contínua. Este componente analisaria continuamente o ODS para identificar e extrair eventos complexos. As seguintes táticas são usadas na arquitetura:


O padrão do disruptor nas filas de eventos e pedidos Memória compartilhada para as filas de eventos e pedidos Linguagem de consulta contínua (CQL) na filtragem de dados ODS com o padrão de design do filtro em dados recebidos Algoritmos de evitação de congestionamentos em todas as conexões de entrada e saída Gerenciamento de filas ativas (AQM ) e notificação de congestionamento explícito Recursos de computação de mercadorias com capacidade de atualização (escalável) Redundância ativa para todos os pontos de falha únicos Indicação e estruturas de persistência otimizadas no ODS Programe backup de dados regulares e scripts de limpeza para ODS Histórico de transações em todos os bancos de dados Súmrios para todos Ordens para detectar falhas Anotar eventos com timestamps para ignorar eventos "obsoletos". Regras de validação de pedidos, por exemplo, quantidades de comércio máximo Componentes de comerciante automatizado usam um banco de dados em memória para análise Autenticação em dois estágios para interfaces de usuário conectando-se à ATs Criptografia em interfaces de usuário e conexões ao padrão de design ATs Observer para que o MVC gerencie visualizações.


A lista acima é apenas algumas decisões de design que identifiquei durante o projeto da arquitetura. Não é uma lista completa de táticas. À medida que o sistema está sendo desenvolvido, táticas adicionais devem ser empregadas em múltiplos níveis de granularidade para atender aos requisitos funcionais e não funcionais. Abaixo estão três diagramas que descrevem o padrão de design do disruptor, o padrão de design do filtro e o componente de consulta contínua.


Visão comportamental.


Essa visão de uma arquitetura mostra como os componentes e camadas devem interagir um com o outro. Isso é útil ao criar cenários para testar projetos de arquitetura e para entender o sistema de ponta a ponta. Essa visão consiste em diagramas de seqüência e diagramas de atividades. Diagramas de atividades que mostram o processo interno do sistema de negociação algorítmica e como os comerciantes devem interagir com o sistema de negociação algorítmica são mostrados abaixo.


Tecnologias e estruturas.


O passo final na concepção de uma arquitetura de software é identificar potenciais tecnologias e estruturas que poderiam ser utilizadas para realizar a arquitetura. Como princípio geral, é melhor aproveitar as tecnologias existentes, desde que satisfaçam adequadamente os requisitos funcionais e não funcionais. Uma estrutura é uma arquitetura de referência realizada, e. JBoss é uma estrutura que realiza a arquitetura de referência JEE. As seguintes tecnologias e frameworks são interessantes e devem ser consideradas na implementação de um sistema de negociação algorítmico:


CUDA - NVidia tem uma série de produtos que suportam modelagem de finanças computacionais de alto desempenho. Pode-se conseguir até 50x melhorias no desempenho ao executar simulações Monte Carlo na GPU em vez da CPU. Rio Apache - Rio é um kit de ferramentas usado para desenvolver sistemas distribuídos. Ele foi usado como uma estrutura para a construção de aplicativos com base no padrão SBA Apache Hadoop - no caso de registro invasivo ser um requisito, então o uso do Hadoop oferece uma solução interessante para o problema dos grandes dados. O Hadoop pode ser implantado em um ambiente em cluster que suporta tecnologias CUDA. AlgoTrader - uma plataforma de negociação algorítmica de código aberto. O AlgoTrader poderia ser implantado no lugar dos componentes do comerciante automatizado. FIX Engine - um aplicativo autônomo que aceita os protocolos do Financial Information Exchange (FIX), incluindo FIX, FAST e FIXatdl.


Embora não seja uma tecnologia ou uma estrutura, os componentes devem ser criados com uma interface de programação de aplicativos (API) para melhorar a interoperabilidade do sistema e seus componentes.


Conclusão.


A arquitetura proposta foi projetada para satisfazer requisitos muito genéricos identificados para sistemas de negociação algorítmica. Geralmente, os sistemas de negociação algorítmica são complicados por três fatores que variam de acordo com cada implementação:


Dependências em sistemas empresariais e de intercâmbio externos Requisitos não funcionais desafiadores e restrições arquitetônicas em evolução.


Por conseguinte, a arquitetura de software proposta deve ser adaptada caso a caso para satisfazer requisitos organizacionais e regulatórios específicos, bem como para superar restrições regionais. A arquitetura do sistema de negociação algorítmica deve ser vista como apenas um ponto de referência para indivíduos e organizações que desejam projetar seus próprios sistemas de negociação algorítmica.


Para uma cópia completa e fontes usadas, baixe uma cópia do meu relatório. Obrigado.


História anterior.


Requisitos do sistema de negociação algorítmica.


Próxima História.


Otimização de portfólio usando otimização de enxertia de partículas.


Excelente visão geral, e um bom começo na arquitetura. Sua conclusão foi adequada, e apontou por que os sistemas de software de negociação algorítmica requerem back-testing e ajustes constantes para mantê-los relevantes. Boa leitura!


1 de fevereiro de 2018.


Quando os dados de commodities ou renda fixa são imprecisos ou lentos em receber, os modelos podem ter dificuldade em calcular especialmente no espaço de um evento Black Swann.


Muito obrigado por este artigo. Estive pensando em AI em finanças desde o final da década de 90 e, finalmente, as tecnologias e as APIs estão comumente disponíveis. Seu artigo e blog são uma ótima ajuda para fazer esses primeiros passos para tornar realidade os sonhos dos anos anteriores. Muito obrigado e boa sorte em seus novos empreendimentos!


Mantenha-me atualizado no seu progresso. Estou muito interessado. Obrigado.


Envie um comentário.


Cancelar resposta.


Siga a Turing Finance.


Turing Finance Mailing List.


Amigos da Turing Finance.


Quantocracy é o melhor agregador de blog de finanças quantitativas com links para novas análises postadas todos os dias.


NMRQL é o fundo hedge quantitativo de que sou parte. Usamos a aprendizagem de máquinas para tentar vencer o mercado.


Arquitetura do sistema de comércio algorítmico.


Anteriormente, neste blog, escrevi sobre a arquitetura conceitual de um sistema de negociação algorítmico inteligente, bem como os requisitos funcionais e não funcionais de um sistema de negociação algorítmica de produção. Desde então, criei uma arquitetura de sistema que, acredito, poderia satisfazer esses requisitos arquitetônicos. Nesta publicação, descreverei a arquitetura seguindo as diretrizes dos padrões ISO / IEC / IEEE 42018 e padrão de descrição da arquitetura de engenharia de software. De acordo com este padrão, uma descrição de arquitetura deve:


Contém várias visualizações arquitetônicas padronizadas (por exemplo, em UML) e Mantenha a rastreabilidade entre decisões de design e requisitos arquitetônicos.


Definição de arquitetura de software.


Ainda não há consenso quanto ao que é uma arquitetura do sistema. No contexto deste artigo, é definido como a infra-estrutura dentro da qual os componentes do aplicativo que satisfazem os requisitos funcionais podem ser especificados, implantados e executados. Os requisitos funcionais são as funções esperadas do sistema e seus componentes. Os requisitos não funcionais são medidas através das quais a qualidade do sistema pode ser medida.


Um sistema que satisfaça plenamente seus requisitos funcionais ainda pode não atender às expectativas se os requisitos não funcionais forem deixados insatisfeitos. Para ilustrar este conceito, considere o seguinte cenário: um sistema de negociação algorítmico que você acabou de comprar / construir faz excelentes decisões de negociação, mas é completamente inoperacional com os sistemas de gestão e contabilidade de risco das organizações. Esse sistema atenderia às suas expectativas?


Arquitetura conceitual.


Uma visão conceitual descreve conceitos e mecanismos de alto nível que existem no sistema no mais alto nível de granularidade. Nesse nível, o sistema de negociação algorítmica segue uma arquitetura orientada a eventos (EDA) dividida em quatro camadas e dois aspectos arquitetônicos. Para cada camada e referência de aspecto arquiteturas e padrões são usados. Padrões arquitetônicos são estruturas comprovadas e genéricas para alcançar requisitos específicos. Os aspectos arquitetônicos são preocupações transversais que abrangem múltiplos componentes.


Arquitetura orientada a eventos - uma arquitetura que produz, detecta, consome e reage a eventos. Os eventos incluem movimentos do mercado em tempo real, eventos ou tendências complexas e eventos comerciais, e. enviando um pedido.


Este diagrama ilustra a arquitetura conceitual do sistema de negociação algorítmica.


Arquiteturas de referência.


Para usar uma analogia, uma arquitetura de referência é semelhante aos planos para uma parede de suporte de carga. Esta impressão azul pode ser reutilizada para projetos de construção múltipla independentemente do edifício que está sendo construído, pois satisfaz um conjunto de requisitos comuns. Da mesma forma, uma arquitetura de referência define um modelo contendo estruturas genéricas e mecanismos que podem ser usados ​​para construir uma arquitetura de software concreta que satisfaça requisitos específicos. A arquitetura para o sistema de negociação algorítmica usa uma arquitetura baseada em espaço (SBA) e um controlador de exibição de modelo (MVC) como referências. São também utilizadas boas práticas, como o armazenamento de dados operacionais (ODS), o padrão de transformação e carregamento de extratos (ETL) e um data warehouse (DW).


Controle de exibição de modelo - um padrão que separa a representação de informações da interação do usuário com ela. Arquitetura baseada em espaço - especifica uma infra-estrutura onde as unidades de processamento acopladas vagamente interagem entre si através de uma memória associativa compartilhada chamada espaço (mostrado abaixo).


Visão estrutural.


A visão estrutural de uma arquitetura mostra os componentes e subcomponentes do sistema de negociação algorítmica. Ele também mostra como esses componentes são implantados em infra-estrutura física. Os diagramas UML utilizados nesta visão incluem diagramas de componentes e diagramas de implantação. Abaixo está a galeria dos diagramas de implantação do sistema de negociação algorítmico geral e as unidades de processamento na arquitetura de referência SBA, bem como diagramas de componentes relacionados para cada uma das camadas.


Diagrama de componentes de processamento de comerciantes / eventos automatizados Fonte de dados e diagrama de componente de camada de pré-processamento Diagrama de componente de interface de usuário baseado em MVC.


Táticas arquitetônicas.


De acordo com o instituto de engenharia de software, uma tática arquitetônica é um meio de satisfazer um requisito de qualidade, manipulando algum aspecto de um modelo de atributo de qualidade através de decisões de design arquitetônico. Um exemplo simples usado na arquitetura do sistema de negociação algorítmica é 'manipular' um armazenamento de dados operacional (ODS) com um componente de consulta contínua. Este componente analisaria continuamente o ODS para identificar e extrair eventos complexos. As seguintes táticas são usadas na arquitetura:


O padrão do disruptor nas filas de eventos e pedidos Memória compartilhada para as filas de eventos e pedidos Linguagem de consulta contínua (CQL) na filtragem de dados ODS com o padrão de design do filtro em dados recebidos Algoritmos de evitação de congestionamentos em todas as conexões de entrada e saída Gerenciamento de filas ativas (AQM ) e notificação de congestionamento explícito Recursos de computação de mercadorias com capacidade de atualização (escalável) Redundância ativa para todos os pontos de falha únicos Indicação e estruturas de persistência otimizadas no ODS Programe backup de dados regulares e scripts de limpeza para ODS Histórico de transações em todos os bancos de dados Súmrios para todos Ordens para detectar falhas Anotar eventos com timestamps para ignorar eventos "obsoletos". Regras de validação de pedidos, por exemplo, quantidades de comércio máximo Componentes de comerciante automatizado usam um banco de dados em memória para análise Autenticação em dois estágios para interfaces de usuário conectando-se à ATs Criptografia em interfaces de usuário e conexões ao padrão de design ATs Observer para que o MVC gerencie visualizações.


A lista acima é apenas algumas decisões de design que identifiquei durante o projeto da arquitetura. Não é uma lista completa de táticas. À medida que o sistema está sendo desenvolvido, táticas adicionais devem ser empregadas em múltiplos níveis de granularidade para atender aos requisitos funcionais e não funcionais. Abaixo estão três diagramas que descrevem o padrão de design do disruptor, o padrão de design do filtro e o componente de consulta contínua.


Visão comportamental.


Essa visão de uma arquitetura mostra como os componentes e camadas devem interagir um com o outro. Isso é útil ao criar cenários para testar projetos de arquitetura e para entender o sistema de ponta a ponta. Essa visão consiste em diagramas de seqüência e diagramas de atividades. Diagramas de atividades que mostram o processo interno do sistema de negociação algorítmica e como os comerciantes devem interagir com o sistema de negociação algorítmica são mostrados abaixo.


Tecnologias e estruturas.


O passo final na concepção de uma arquitetura de software é identificar potenciais tecnologias e estruturas que poderiam ser utilizadas para realizar a arquitetura. Como princípio geral, é melhor aproveitar as tecnologias existentes, desde que satisfaçam adequadamente os requisitos funcionais e não funcionais. Uma estrutura é uma arquitetura de referência realizada, e. JBoss é uma estrutura que realiza a arquitetura de referência JEE. As seguintes tecnologias e frameworks são interessantes e devem ser consideradas na implementação de um sistema de negociação algorítmico:


CUDA - NVidia tem uma série de produtos que suportam modelagem de finanças computacionais de alto desempenho. Pode-se conseguir até 50x melhorias no desempenho ao executar simulações Monte Carlo na GPU em vez da CPU. Rio Apache - Rio é um kit de ferramentas usado para desenvolver sistemas distribuídos. Ele foi usado como uma estrutura para a construção de aplicativos com base no padrão SBA Apache Hadoop - no caso de registro invasivo ser um requisito, então o uso do Hadoop oferece uma solução interessante para o problema dos grandes dados. O Hadoop pode ser implantado em um ambiente em cluster que suporta tecnologias CUDA. AlgoTrader - uma plataforma de negociação algorítmica de código aberto. O AlgoTrader poderia ser implantado no lugar dos componentes do comerciante automatizado. FIX Engine - um aplicativo autônomo que aceita os protocolos do Financial Information Exchange (FIX), incluindo FIX, FAST e FIXatdl.


Embora não seja uma tecnologia ou uma estrutura, os componentes devem ser criados com uma interface de programação de aplicativos (API) para melhorar a interoperabilidade do sistema e seus componentes.


Conclusão.


A arquitetura proposta foi projetada para satisfazer requisitos muito genéricos identificados para sistemas de negociação algorítmica. Geralmente, os sistemas de negociação algorítmica são complicados por três fatores que variam de acordo com cada implementação:


Dependências em sistemas empresariais e de intercâmbio externos Requisitos não funcionais desafiadores e restrições arquitetônicas em evolução.


Por conseguinte, a arquitetura de software proposta deve ser adaptada caso a caso para satisfazer requisitos organizacionais e regulatórios específicos, bem como para superar restrições regionais. A arquitetura do sistema de negociação algorítmica deve ser vista como apenas um ponto de referência para indivíduos e organizações que desejam projetar seus próprios sistemas de negociação algorítmica.


Para uma cópia completa e fontes usadas, baixe uma cópia do meu relatório. Obrigado.


História anterior.


Requisitos do sistema de negociação algorítmica.


Próxima História.


Otimização de portfólio usando otimização de enxertia de partículas.


Excelente visão geral, e um bom começo na arquitetura. Sua conclusão foi adequada, e apontou por que os sistemas de software de negociação algorítmica requerem back-testing e ajustes constantes para mantê-los relevantes. Boa leitura!


1 de fevereiro de 2018.


Quando os dados de commodities ou renda fixa são imprecisos ou lentos em receber, os modelos podem ter dificuldade em calcular especialmente no espaço de um evento Black Swann.


Muito obrigado por este artigo. Estive pensando em AI em finanças desde o final da década de 90 e, finalmente, as tecnologias e as APIs estão comumente disponíveis. Seu artigo e blog são uma ótima ajuda para fazer esses primeiros passos para tornar realidade os sonhos dos anos anteriores. Muito obrigado e boa sorte em seus novos empreendimentos!


Mantenha-me atualizado no seu progresso. Estou muito interessado. Obrigado.


Envie um comentário.


Cancelar resposta.


Siga a Turing Finance.


Turing Finance Mailing List.


Amigos da Turing Finance.


Quantocracy é o melhor agregador de blog de finanças quantitativas com links para novas análises postadas todos os dias.


NMRQL é o fundo hedge quantitativo de que sou parte. Usamos a aprendizagem de máquinas para tentar vencer o mercado.


Sistemas Inteligentes de Negociação Algorítmica.


O comércio algorítmico é o uso de algoritmos de computador para tomar decisões comerciais, enviar ordens e gerenciar essas ordens após a submissão. Os sistemas de negociação algorítmica são melhor compreendidos usando uma arquitetura conceitual simples que consiste em três componentes que lidam com diferentes aspectos do sistema de negociação algorítmica, nomeadamente o manipulador de dados, o manipulador de estratégia e o manipulador de execução comercial. Esses componentes mapeiam um por um com a mencionada definição de negociação algorítmica. Neste artigo, estendemos essa arquitetura para descrever como se poderia fazer construção de sistemas de negociação algorítmicos mais inteligentes.


Sistema de negociação algorítmica conceitual.


O que significa para um sistema ser mais inteligente? No contexto da negociação algorítmica, mediremos a inteligência pelo grau em que o sistema é auto-adaptado e autoconsciente. Mas antes de chegar a isso, vamos elaborar os três componentes na arquitetura conceitual do sistema de negociação algorítmica.


Componente de dados.


Os sistemas de negociação algorítmica podem usar dados estruturados, dados não estruturados ou ambos. Os dados são estruturados se organizados de acordo com alguma estrutura pré-determinada. Os exemplos incluem planilhas, arquivos CSV, arquivos JSON, XML, bancos de dados e estruturas de dados. Os dados relacionados ao mercado, como os preços entre os dias, os preços no final do dia e os volumes comerciais, geralmente estão disponíveis em um formato estruturado. Os dados financeiros econômicos e de empresas também estão disponíveis em um formato estruturado. Duas boas fontes para dados financeiros estruturados são Quandl e Morningstar.


Os dados não são estruturados se não estiverem organizados de acordo com as estruturas pré-determinadas. Os exemplos incluem notícias, mídias sociais, vídeos e áudio. Este tipo de dados é inerentemente mais complexo para processar e, muitas vezes, requer técnicas de análise de dados e de mineração de dados para analisá-lo. O uso geral de notícias e dados de redes sociais como o Twitter e o Facebook na negociação deu origem a ferramentas mais poderosas que podem ter sentido de dados não estruturados. Muitas dessas ferramentas utilizam a inteligência artificial e, em particular, as redes neurais.


Modelo Componente.


Um modelo é a representação do mundo exterior, como é visto pelo sistema de negociação algorítmica. Os modelos financeiros geralmente representam como o sistema de negociação algorítmica acredita que os mercados funcionam. O objetivo final de qualquer modelo é usá-lo para fazer inferências sobre o mundo, ou, neste caso, os mercados. A coisa mais importante a lembrar aqui é a citação de George E. P Box "todos os modelos são essencialmente errados, mas alguns são úteis".


Os modelos podem ser construídos usando uma série de metodologias e técnicas diferentes, mas, fundamentalmente, eles são essencialmente fazendo uma coisa: reduzir um sistema complexo em um conjunto de regras complexas e quantificáveis ​​que descrevem o comportamento desse sistema em diferentes cenários. Algumas abordagens incluem, mas não estão limitadas a, modelos matemáticos, sistemas de lógica simbólica e fuzzy, árvores de decisão, conjuntos de regras de indução e redes neurais.


Modelos matemáticos.


O uso de modelos matemáticos para descrever o comportamento dos mercados é chamado de financiamento quantitativo. A maioria dos modelos de financiamento quantitativo desencadeia as premissas inerentes de que os preços de mercado (e os retornos) evoluem ao longo do tempo de acordo com um processo estocástico, ou seja, os mercados são aleatórios. Esta foi uma suposição muito útil que é o cerne de quase todos os modelos de preços de derivativos e alguns outros modelos de avaliação de segurança.


Essencialmente, a maioria dos modelos quantitativos argumentam que os retornos de qualquer segurança são conduzidos por um ou mais fatores de risco de mercado aleatórios. O grau em que os retornos são afetados por esses fatores de risco é chamado de sensibilidade. Por exemplo, os retornos de uma carteira bem diversificada podem ser impulsionados pelo movimento de taxas de juros de curto prazo, várias taxas de câmbio e os retornos no mercado de ações em geral. Esses fatores podem ser medidos historicamente e usados ​​para calibrar um modelo que simula o que esses fatores de risco poderiam fazer e, por extensão, quais os retornos do portfólio. Para mais informações, veja Random Walks Down Wall Street.


Caminhos de preços simulados Monte Carlo para ativos subjacentes.


Modelos lógicos simbólicos e difusos.


A lógica simbólica é uma forma de raciocínio que essencialmente envolve a avaliação de predicados (declarações lógicas construídas a partir de operadores lógicos como AND, OR e XOR) tanto para o verdadeiro quanto para o falso. A lógica difusa relaxa a restrição binária verdadeira ou falsa e permite que qualquer predicado dado pertença ao conjunto de predicados verdadeiros e ou falsos em diferentes graus. Isso é definido em termos de funções de associação definida.


No contexto dos mercados financeiros, os insumos nesses sistemas podem incluir indicadores que devem correlacionar-se com os retornos de qualquer segurança. Esses indicadores podem ser quantitativos, técnicos, fundamentais ou de outra natureza. Por exemplo, um sistema de lógica difusa pode inferir de dados históricos que, se a média móvel ponderada exponencialmente de cinco dias for maior ou igual à média móvel ponderada exponencialmente de dez dias, então há uma probabilidade de sessenta e cinco por cento de que o estoque aumentará no preço nos próximos cinco dias.


Uma abordagem de mineração de dados para identificar essas regras a partir de um determinado conjunto de dados é chamada de indução de regras. Isso é muito semelhante à indução de uma árvore de decisão, exceto que os resultados são geralmente mais legíveis por humanos.


Modelos de árvore de decisão.


As árvores de decisão são semelhantes às regras de indução, exceto que as regras são estruturas na forma de uma árvore (geralmente binária). Na ciência da computação, uma árvore binária é uma estrutura de dados da árvore em que cada nó possui no máximo duas crianças, que são referidas como a criança esquerda e a criança certa. Nesse caso, cada nó representa uma regra de decisão (ou limite de decisão) e cada nó filho é ou outro limite de decisão ou um nó terminal que indica uma saída.


Existem dois tipos de árvores de decisão: árvores de classificação e árvores de regressão. As árvores de classificação contêm classes em suas saídas (por exemplo, comprar, manter ou vender), enquanto as árvores de regressão contêm valores de resultado para uma variável particular (por exemplo, -2,5%, 0%, + 2,5%, etc.). A natureza dos dados utilizados para treinar a árvore de decisão determinará o tipo de árvore de decisão produzida. Algoritmos utilizados para produzir árvores de decisão incluem C4.5 e Programação Genética.


Tal como acontece com a indução de regras, os insumos em um modelo de árvore de decisão podem incluir quantidades para um dado conjunto de fatores fundamentais, técnicos ou estatísticos que se acredita que geram os retornos dos títulos.


Modelos de Rede Neural.


As redes neurais são quase certamente o modelo de aprendizagem de máquinas mais popular disponível para comerciantes algorítmicos. As redes neurais consistem em camadas de nós interligados entre entradas e saídas. Os nós individuais são chamados perceptrons e se assemelham a uma regressão linear múltipla, exceto que eles alimentam algo chamado função de ativação, que pode ou não ser não linear. Nas redes neurais não recorrentes, os perceptrons são dispostos em camadas e as camadas estão conectadas com outra. Existem três tipos de camadas, a camada de entrada, a (s) camada (s) oculta (s) e a camada de saída. A camada de entrada receberia as entradas normalizadas que seriam os fatores esperados para gerar os retornos da segurança e a camada de saída poderia conter as classificações de compra, retenção, venda ou resultados prováveis ​​de valor real, como os retornos binários. As camadas ocultas, essencialmente, ajustam as ponderações dessas entradas até o erro da rede neural (como ela é executada em um backtest) é minimizado. Uma interpretação disso é que as camadas ocultas extraem recursos salientes nos dados que têm poder preditivo em relação às saídas. Para uma explicação muito mais detalhada das redes neurais, consulte este artigo.


Além desses modelos, existem vários outros modelos de tomada de decisão que podem ser utilizados no contexto da negociação algorítmica (e dos mercados em geral) para fazer previsões quanto à direção dos preços de segurança ou, para leitores quantitativos, fazer previsões em relação à probabilidade de qualquer movimento em um preço de títulos.


A escolha do modelo tem um efeito direto sobre o desempenho do sistema de negociação algorítmica. O uso de modelos múltiplos (conjuntos) foi mostrado para melhorar a precisão da predição, mas aumentará a complexidade da implementação. O modelo é o cérebro do sistema de comércio algorítmico. Para tornar o sistema de negociação algorítmico mais inteligente, o sistema deve armazenar dados relativos a todos os erros cometidos historicamente e deve adaptar seus modelos internos de acordo com essas mudanças. Em certo sentido, isso constituirá autoconsciência (de erros) e auto-adaptação (calibração contínua do modelo). Dito isto, isso certamente não é um término!


Componente de Execução.


O componente de execução é responsável por colocar as negociações que o modelo identifica. Este componente precisa atender aos requisitos funcionais e não funcionais dos sistemas de negociação algorítmica. Por exemplo, a velocidade da execução, a frequência na qual as negociações são feitas, o período durante o qual os negócios são mantidos e o método pelo qual as ordens comerciais são encaminhadas para a troca deve ser suficiente. Qualquer implementação do sistema de negociação algorítmica deve ser capaz de satisfazer esses requisitos. Neste artigo, proponho uma arquitetura aberta para sistemas de negociação algorítmica, que acredito satisfazer muitos dos requisitos.


Monitor Component.


A inteligência artificial aprende a usar funções objetivas. As funções objetivas são geralmente funções matemáticas que quantificam o desempenho do sistema de negociação algorítmico. No contexto das finanças, as medidas de retorno ajustado ao risco incluem a relação Treynor, a relação Sharpe e a razão Sortino. O componente modelo no sistema de comércio algorítmico seria "solicitado" para maximizar uma ou mais dessas quantidades. O desafio com isso é que os mercados são dinâmicos. Em outras palavras, os modelos, a lógica ou as redes neurais que funcionaram antes podem parar de trabalhar ao longo do tempo. Para combater isso, o sistema de comércio algorítmico deve treinar os modelos com informações sobre os próprios modelos. Esse tipo de autoconsciência permite que os modelos se adaptem a ambientes em mudança. Penso nessa auto-adaptação como uma forma de calibração contínua do modelo para combater as mudanças no regime de mercado.


Conclusão.


O comércio de algoritmos tornou-se muito popular ao longo da última década. Agora, é responsável pela maioria dos negócios que são colocados através de trocas globais e tem sido atribuído ao sucesso de alguns dos hedge funds de melhor desempenho do mundo, principalmente o das Tecnologias do Renascimento. Dito isto, ainda há uma grande confusão e misnomers quanto ao que é Algorithmic Trading e como isso afeta as pessoas no mundo real. Até certo ponto, o mesmo pode ser dito para Inteligência Artificial.


Muitas vezes, a pesquisa sobre esses tópicos é focada puramente no desempenho e esquecemos que é igualmente importante que pesquisadores e profissionais criem modelos conceituais e teóricos mais fortes e mais rigorosos sobre os quais possamos promover o campo nos próximos anos. Quer nos agrada ou não, os algoritmos dão forma ao nosso mundo moderno e nossa dependência deles nos dá a obrigação moral de buscar continuamente compreendê-los e melhorar. Eu deixo você com um video intitulado "Como os Algoritmos moldam nosso mundo" por Kevin Slavin.


Como os algoritmos dão forma ao nosso mundo.


História anterior.


Usando a Programação Genética para evoluir Estratégias de Negociação.


Próxima História.


Imperfeição perfeita, modelos baseados em agentes.


26 de setembro de 2018.


Eu escrevi algum software GA básico que negocia o mercado de ações de forma lucrativa. É código aberto - código disponível no github. Mais informações aqui - genotick.


26 de setembro de 2018.


Obrigado por compartilhar, os resultados parecem bastante promissores :). Eu não me importaria de escrever um comentário nesse momento se você estiver aberto à idéia?


20 de outubro de 2018.


Certo. Estou lentamente adicionando mais ajuda ao programa e algumas informações disponíveis lá. Se você precisar de mais ajuda / explicação, me avise melhor via email.


Envie um comentário.


Cancelar resposta.


Siga a Turing Finance.


Turing Finance Mailing List.


Amigos da Turing Finance.


Quantocracy é o melhor agregador de blog de finanças quantitativas com links para novas análises postadas todos os dias.


NMRQL é o fundo hedge quantitativo de que sou parte. Usamos a aprendizagem de máquinas para tentar vencer o mercado.


Forex Algorithmic Trading: um conto prático para engenheiros.


Como você pode saber, o mercado cambial (Forex, ou FX) é usado para negociação entre pares de moedas. Mas você pode não estar ciente de que é o mercado mais líquido do mundo.


Alguns anos atrás, impulsionados pela minha curiosidade, fiz os primeiros passos no mundo da negociação algorítmica Forex criando uma conta demo e jogando simulações (com dinheiro falso) na plataforma de negociação Meta Trader 4.


Depois de uma semana de "negociação", quase dobrava meu dinheiro. Estimulado pela minha própria negociação algorítmica bem sucedida, cavei e, eventualmente, me inscrevi para vários fóruns de FX. Logo, passava horas lendo sobre sistemas de negociação algorítmica (conjuntos de regras que determinam se você deve comprar ou vender), indicadores personalizados, modos de mercado e muito mais.


Meu primeiro cliente.


Por volta dessa época, por acaso, ouvi dizer que alguém estava tentando encontrar um desenvolvedor de software para automatizar um sistema comercial simples. Isso estava de volta aos dias da faculdade quando eu estava aprendendo sobre programação simultânea em Java (threads, semáforos e todo esse lixo). Eu pensei que este sistema automatizado não poderia ser muito mais complicado do que o meu curso avançado de ciências de dados funcionar, então eu perguntei sobre o trabalho e entrou a bordo.


O cliente queria um software de negociação algorítmica construído com o MQL4, uma linguagem de programação funcional usada pela plataforma Meta Trader 4 para realizar ações relacionadas a estoque.


O papel da plataforma de negociação (Meta Trader 4, neste caso) é fornecer uma conexão com um corretor Forex. O corretor fornece uma plataforma com informações em tempo real sobre o mercado e executa suas ordens de compra / venda. Para leitores que não estão familiarizados com o comércio de Forex, aqui estão as informações fornecidas pelo feed de dados:


Através do Meta Trader 4, você pode acessar todos esses dados com funções internas, acessíveis em vários prazos: a cada minuto (M1), a cada cinco minutos (M5), M15, M30, a cada hora (H1), H4, D1, W1, MN .


O movimento do preço atual é chamado de tiquetaque. Em outras palavras, um tiquetaque é uma alteração no preço de lance ou pedido para um par de moedas. Durante os mercados ativos, pode haver vários carrapatos por segundo. Durante os mercados lentos, pode haver minutos sem um tiquetaque. O tiquetaque é o batimento cardíaco de um robô de mercado de moeda.


Quando você faz um pedido através dessa plataforma, você compra ou vende um determinado volume de uma determinada moeda. Você também define os limites stop-loss e take-profit. O limite de stop-loss é a quantidade máxima de pips (variações de preço) que você pode perder antes de desistir de um comércio. O limite de lucro obtido é a quantidade de pips que você irá acumular a seu favor antes de descontar.


As especificações de negociação algorítmica do cliente eram simples: eles queriam um robô Forex com base em dois indicadores. Para o fundo, os indicadores são muito úteis ao tentar definir um estado de mercado e tomar decisões comerciais, já que eles são baseados em dados passados ​​(por exemplo, valor de preço mais alto nos últimos n dias). Muitos vieram integrados ao Meta Trader 4. No entanto, os indicadores de que meu cliente estava interessado vieram de um sistema de comércio personalizado.


Eles queriam trocar todas as vezes que dois desses indicadores personalizados se cruzassem, e apenas em certo ângulo.


À medida que eu resolvi as mãos, eu aprendi que os programas MQL4 têm a seguinte estrutura:


A função de início é o coração de cada programa MQL4, uma vez que é executado sempre que o mercado se move (ergo, esta função será executada uma vez por marca). Este é o caso, independentemente do prazo que você está usando. Por exemplo, você poderia estar operando no cronograma H1 (uma hora), mas a função inicial executaria muitos milhares de vezes por período de tempo.


Para contornar isso, forcei a função a executar uma vez por unidade de período:


Obtendo os valores dos indicadores:


A lógica de decisão, incluindo a interseção dos indicadores e seus ângulos:


Enviando os pedidos:


Se você estiver interessado, você pode encontrar o código completo e executável no GitHub.


Backtesting.


Uma vez que eu construí meu sistema de negociação algorítmica, eu queria saber: 1) se estava se comportando adequadamente e 2) se a estratégia de negociação Forex fosse usada.


Backtesting (às vezes escrito "back-testing") é o processo de testar um sistema particular (automatizado ou não) sob os eventos do passado. Em outras palavras, você testa seu sistema usando o passado como um proxy para o presente.


MT4 vem com uma ferramenta aceitável para backtesting uma estratégia de negociação Forex (hoje em dia, existem mais ferramentas profissionais que oferecem maior funcionalidade). Para começar, você configura seus prazos e executa seu programa sob uma simulação; A ferramenta irá simular cada tico sabendo que, para cada unidade, ele deve abrir a certo preço, fechar a um determinado preço e alcançar altos e baixos especificados.


Depois de comparar as ações do programa com preços históricos, você terá um bom senso se está ou não executando corretamente.


Do backtesting, eu chequei a taxa de retorno do robô FX para alguns intervalos de tempo aleatórios; Escusado será dizer que sabia que o meu cliente não iria ficar rico com isso - os indicadores que ele havia escolhido, juntamente com a lógica da decisão, não eram lucrativos. Como amostra, aqui estão os resultados da execução do programa na janela M15 para 164 operações:


Observe que nosso equilíbrio (a linha azul) termina abaixo do seu ponto de partida.


Otimização de parâmetros e suas mentiras.


Embora o backtesting me tenha deixado cauteloso com a utilidade desse robô FX, fiquei intrigado quando comecei a brincar com seus parâmetros externos e notei grandes diferenças na relação de retorno geral. Esta ciência particular é conhecida como otimização de parâmetros.


Eu fiz alguns testes difíceis para tentar inferir o significado dos parâmetros externos na Razão de retorno e surgiu algo como isto:


Você pode pensar (como eu fiz) que você deve usar o Parâmetro A. Mas a decisão não é tão direta como pode aparecer. Especificamente, observe a imprevisibilidade do Parâmetro A: para valores de erro pequenos, seu retorno muda drasticamente. Em outras palavras, o Parâmetro A é muito provável que a previsão excessiva de resultados futuros, uma vez que qualquer incerteza, qualquer alteração no total resultará em um desempenho pior.


Mas, de fato, o futuro é incerto! E o retorno do Parâmetro A também é incerto. A melhor escolha, de fato, é confiar na imprevisibilidade. Muitas vezes, um parâmetro com um retorno máximo mais baixo, mas uma previsibilidade superior (menor flutuação) será preferível a um parâmetro com alto retorno, mas uma previsibilidade fraca.


O único que você pode ter certeza é que você não conhece o futuro do mercado, e pensar que você sabe como o mercado vai atuar com base em dados passados ​​é um erro. Por sua vez, você deve reconhecer essa imprevisibilidade em suas previsões Forex.


Isso não significa necessariamente que devemos usar o Parâmetro B, porque mesmo os retornos mais baixos do Parâmetro A funcionam melhor do que o Parâmetro B; Isso é apenas para mostrar que os Parâmetros de Otimização podem resultar em testes que exageram os resultados futuros prováveis, e esse pensamento não é óbvio.


Considerações globais de comércio de algoritmo Forex.


Desde essa primeira experiência de negociação de Forex algorítmica, construí vários sistemas de negociação automatizados para clientes e posso dizer que há espaço para explorar e continuar a análise de Forex a ser feito. Por exemplo, recentemente construí um sistema baseado em encontrar os chamados movimentos de "Big Fish"; isto é, grandes variações de pips em pequenas e minúsculas unidades de tempo. Este é um assunto que me fascina.


Construir o seu próprio sistema de simulação FX é uma excelente opção para aprender mais sobre o comércio de Forex e as possibilidades são infinitas. Por exemplo, você poderia tentar decifrar a distribuição de probabilidade das variações de preços em função da volatilidade em um mercado (EUR / USD, por exemplo), e talvez criar um modelo de simulação de Monte Carlo usando a distribuição por estado de volatilidade, usando qualquer grau de precisão que você deseja. Vou deixar isso como um exercício para o leitor ansioso.


O mundo Forex pode ser esmagador às vezes, mas espero que este artigo tenha dado alguns pontos sobre como começar em sua própria estratégia de negociação Forex.


Leitura adicional.


Hoje em dia, existe um vasto conjunto de ferramentas para construir, testar e melhorar as Automatizações do Sistema de Negociação: Trading Blox para testes, NinjaTrader para negociação, OCaml para programação, para citar alguns.


Eu li extensivamente sobre o mundo misterioso que é o mercado de moeda. Aqui estão alguns write-ups que eu recomendo para programadores e leitores entusiasmados:


Compreendendo o básico.


Sobre o que Forex é negociado?


O comércio Forex (ou FX) está comprando e vendendo por meio de pares de moedas (por exemplo, USD vs. EUR) no mercado de câmbio.


Como o Forex ganha dinheiro?


Os corretores de Forex ganham dinheiro através de comissões e taxas. Os comerciantes de Forex ganham (ou perdem) o dinheiro com base em seu tempo: se eles conseguirem vender alto o suficiente em comparação com quando eles compraram, eles podem lucrar.


O que há para testar uma estratégia de negociação?


Backtesting é o processo de testar uma estratégia ou sistema específico usando os eventos do passado.


O que é o comércio algorítmico?


O comércio algorítmico é quando um robô / programa usa um conjunto de regras que dizem quando comprar ou vender.

Комментариев нет:

Отправить комментарий