Pca Negociação Estratégias


Associação de Crédito de Produção - PCA DEFINIÇÃO da Associação de Crédito de Produção - PCA Instrumento federal criado pelo Congresso através da Lei de Crédito Agrícola de 1933 para fornecer crédito de curto e médio prazo para agricultores, pecuaristas e residentes rurais. O crédito foi estendido para que os beneficiários pudessem comprar moradia, realizar atividades de marketing, comprar equipamentos agrícolas e pecuária e operar negócios relacionados a fazendas. Na época, o crédito não estava disponível ou estava disponível apenas a taxas de juros proibitivamente altas por causa da Grande Depressão. As terras agrícolas e as commodities não valiam tanto, e os bancos já tinham muitos empréstimos agrícolas em seus livros. As associações de crédito à produção podem fazer ou garantir empréstimos cujas condições não excedam sete, 10 ou 15 anos, dependendo das políticas dos bancos de financiamento. O empréstimo deve ser amortizado em 15 ou menos anos, e qualquer refinanciamento pode não estender o prazo do empréstimo mais de 15 anos a partir da data do empréstimo original. BREAKING DOWN Associação de Crédito à Produção - PCA A Farm Credit System, uma empresa patrocinada pelo governo, criada em 1916, fornece financiamento e serviços financeiros relacionados à agricultura e inclui várias organizações de crédito. Além das associações de crédito à produção, estas incluem associações de crédito agrícola, bancos de crédito agrícola, bancos de cooperativas, bancos de crédito agrícola, bancos de crédito intermediários federais, associações federais de bancos de terras e associações federais de crédito à terra. Os PCAs obtêm seu financiamento dos bancos de crédito agrícola e possuem seus ativos de empréstimo. O Sistema de Crédito Agrícola aumenta o dinheiro vendendo títulos de dívida para investidores nos EUA e no exterior. Sobre esta revista O Jornal de Estratégias de Investimento é dedicado ao tratamento rigoroso de estratégias de investimento modernas indo muito além das abordagens clássicas em ambos os seus instrumentos e metodologias. Ao fornecer uma representação equilibrada de pesquisas acadêmicas, buy-side e sell-side, o Journal promove a polinização cruzada de idéias entre pesquisadores e profissionais, alcançando um nexo único de academia e indústria por um lado, e modelos teóricos e aplicados sobre o de outros. O Jornal contém artigos de pesquisa em profundidade, bem como artigos de discussão sobre assuntos técnicos e de mercado e visa equipar a comunidade de investimento global com pesquisa prática e de ponta para entender e implementar estratégias modernas de investimento. Com foco em importantes estratégias de investimento, técnicas e gerenciamento contemporâneos, a revista considera trabalhos sobre as seguintes áreas: Estratégias Fundamentais. Incluindo macro fundamental, equidade fundamental ou seleção de crédito Estratégias de Valor Relativo. Estimativa e investimento na valorização relativa de títulos relacionados, tanto de baunilha quanto de derivativos Estratégias Táticas. Estratégias baseadas na previsão e investimento em padrões de comportamento do mercado, como impulso ou reversão média, e estratégias táticas de alocação de ativos. Estratégias Orientadas a Eventos: estratégias baseadas na previsão de probabilidade de eventos que movem o mercado ou reações de mercado a tais eventos Estratégias de Negociação Algorítmicas. Modelos de microestrutura de mercado, liquidez e impacto no mercado e execução algorítmica de negócios e estratégias de mercado Estratégias de Investimento Principais. Estratégias de investimento para títulos ilíquidos e principal propriedade ou financiamento de ativos reais e negócios Gestão de Carteira e Alocação de Ativos. Modelos para otimização de portfólio, controle de risco, atribuição de desempenho e alocação de ativos Métodos Econométricos e Estatísticos. Com aplicações a estratégias de investimento O Journal of Investment Strategies foi selecionado para cobertura no Thomson Reuters Emerging Sources Citation Index. Este artigo estuda as medidas de centralidade (risco de interconexão) e seu valor agregado em um quadro de otimização de carteira ativa. Neste artigo, os autores investigam como os custos de transação de taxa fixa afetam o reequilíbrio da carteira. Os autores propõem um quadro analítico para medir as oportunidades de investimento e alocar o risco ao longo do tempo com base na distância Mahalanobis. Neste artigo, os autores fornecem algoritmos completos e código fonte para a construção de modelos de risco estatístico. Este artigo propõe a utilização de um mecanismo de otimização no processo de construção da carteira de superposição monetária. Os autores deste artigo derivam uma estratégia de negociação ideal que marca o preço de fechamento em uma estrutura de otimização de variância média. Os autores deste trabalho pretendem desmistificar as carteiras selecionadas pela otimização robusta, observando-se a limitação das carteiras nos casos de incertezas grandes e pequenas nos retornos médios. Os autores deste trabalho analisam uma carteira de peso igual de exposições de fatores de risco de classe cross-asset global. Os autores deste artigo fornecem um algoritmo completo e código fonte para a construção de modelos de risco multifatorial em geral, por meio de qualquer combinação de fatores de estilo, componentes principais e / ou fatores da indústria. Este artigo usa a estrutura fracionária de estratégias de Kelly para mostrar que carteiras ótimas com estoques de baixo beta geram maior riqueza mediana e menor risco de déficit intra-horizonte. Os autores deste trabalho aplicam uma abordagem prospectiva para o problema de otimização da carteira de variância mínima para uma seleção de 100 ações. Este artigo investiga as causas da anomalia de qualidade explorando duas explicações potenciais - a visão de risco ea visão comportamental. Este artigo investiga o projeto ótimo de fundos que proporcionam proteção de capital em um prazo específico. Este artigo estuda o problema da negociação ótima usando preditores alfa gerais com custos lineares e impacto temporário. Este artigo projeta um portfólio ótimo de fatores não-constrangidos em um conjunto de todas as carteiras viáveis ​​usando erro de rastreamento como uma medida de distância. Este artigo analisa dados empíricos para 4000 carteiras de negociação real com prazos de detenção de cerca de 0,7-19 dias de negociação. Este artigo deriva fórmulas explícitas para a curva de negociação de deficiência de implementação ótima com impacto de mercado linear e não-linear. Os autores deste trabalho propõem um método de seleção de ações baseado em um método de seleção de variáveis ​​usado com PCA em estatísticas multivariadas. Este artigo compara dezasseis estratégias distintas de seleção de países dentro de uma amostra de setenta e oito países entre 1999-2015. Este artigo identifica uma série de ineficiências estruturais no mercado de capitais de pequena capitalização nos Estados Unidos que podem ser exploradas para gerar estratégias alfa. Melhor Estratégias 5: Um Sistema de Aprendizagem Automática de Curto Prazo É tempo para a 5ª e última parte da série Build Better Strategies. Na parte 3 discutimos o processo de desenvolvimento de um sistema baseado em modelos e, consequentemente, concluímos a série com o desenvolvimento de um sistema de mineração de dados. Os princípios de mineração de dados e aprendizado de máquina têm sido o tópico da parte 4. Para o nosso exemplo de curto prazo de negociação usamos um algoritmo de aprendizado profundo. Um auto-codificador empilhado, mas funcionará da mesma maneira com muitos outros algoritmos de aprendizado de máquina. Com ferramentas de software today8217s, apenas cerca de 20 linhas de código são necessários para uma estratégia de aprendizagem da máquina. Vou tentar explicar todas as etapas em detalhes. Nosso exemplo será um projeto de pesquisa para uma experiência de aprendizagem mecânica para responder a duas perguntas. Um algoritmo mais complexo, como mais neurônios e aprendizagem mais profunda, produz uma melhor previsão E os movimentos de preço de curto prazo são previsíveis pela história de preços de curto prazo A última pergunta surgiu devido ao meu ceticismo sobre a negociação de ações de preço na parte anterior Desta série. Eu tenho vários e-mails perguntando sobre o sistema 8220trading geradores8221 ou ferramentas de ação de preço semelhantes que são elogiados em alguns sites. Não há provas concretas de que essas ferramentas produziram algum lucro (exceto para seus fornecedores), mas isso significa que todos eles são lixo. Nosso experimento é simples: coletamos informações das últimas velas de uma curva de preços, alimentamo-lo em uma rede neural de aprendizado profundo e usamo-lo para prever as próximas velas. Minha hipótese é que algumas velas não contêm qualquer informação preditiva útil. Naturalmente, um resultado não-preditivo da experiência não significou que I8217m direito, desde que eu poderia ter usado parâmetros errados ou preparado os dados mal. Mas um resultado preditivo seria uma dica que I8217m errado e negociação de ação de preço pode realmente ser rentável. Aprendizagem da estratégia de aprendizagem da máquina Etapa 1: A variável alvo Para recapitular a parte anterior. Um algoritmo de aprendizado supervisionado é treinado com um conjunto de recursos para prever uma variável alvo. Portanto, a primeira coisa a determinar é o que esta variável alvo deve ser. Um alvo popular, usado em a maioria de papéis, é o sinal do retorno do preço na barra seguinte. Mais adequado para a previsão, uma vez que menos suscetível a aleatoriedade, é a diferença de preço para um horizonte de previsão mais distante. Como 3 bares a partir de agora, ou mesmo dia na próxima semana. Como quase tudo nos sistemas de negociação, o horizonte de previsão é um compromisso entre os efeitos de aleatoriedade (menos barras são piores) e previsibilidade (menos barras são melhores). Às vezes você não está interessado em prever diretamente o preço, mas na previsão de algum outro parâmetro 8211, como a perna atual de um indicador Zigzag 8211, que de outra forma só poderia ser determinado em retrospectiva. Ou você quer saber se uma certa ineficiência de mercado estará presente na próxima vez, especialmente quando você está usando a aprendizagem de máquina não diretamente para negociação, mas para filtrar negócios em um sistema baseado em modelo. Ou você quer prever algo inteiramente diferente, por exemplo a probabilidade de um choque de mercado amanhã. Tudo isso é mais fácil de prever do que o popular retorno de amanhã. Em nosso experimento de ação de preço, usaremos o retorno de um comércio de ação de preço de curto prazo como variável de destino. Uma vez que o alvo é determinado, o próximo passo é selecionar os recursos. Etapa 2: Os recursos Uma curva de preços é o pior caso para qualquer algoritmo de aprendizagem da máquina. Não somente carrega pouco sinal e principalmente ruído. Também é nonstationary ea relação do signalnoise muda todo o tempo. A proporção exata de sinal e ruído depende do que é significado com 8220signal8221, mas normalmente é muito baixo para qualquer máquina conhecida algoritmo de aprendizagem para produzir qualquer coisa útil. Portanto, devemos derivar características da curva de preços que contêm mais sinal e menos ruído. Sinal, nesse contexto, é qualquer informação que pode ser usada para prever o alvo, seja qual for. Todo o resto é ruído. Assim, selecionar os recursos é crítico para o sucesso, muito mais crítico do que decidir qual algoritmo de aprendizagem da máquina você vai usar. Há duas abordagens para selecionar recursos. O primeiro e mais comum é extrair tanta informação da curva de preços quanto possível. Como você não sabe onde as informações estão ocultas, basta gerar uma coleção de indicadores com uma ampla gama de parâmetros e espero que pelo menos alguns deles contenham as informações que o algoritmo precisa. Esta é a abordagem que você normalmente encontra na literatura. O problema deste método: Algum algoritmo de aprendizagem de máquina é confundido facilmente por predictors nonpredictive. Assim, ele não vai fazer apenas para lançar 150 indicadores. Você precisa de algum algoritmo de pré-seleção que determine qual deles carrega informações úteis e que pode ser omitido. Sem reduzir os recursos desta forma para talvez oito ou dez, mesmo o mais profundo algoritmo de aprendizagem won8217t produzir qualquer coisa útil. A outra abordagem, normalmente para experiências e pesquisas, está usando apenas informações limitadas da curva de preços. Este é o caso aqui: Uma vez que queremos examinar a negociação de ação de preço, nós só usamos os últimos preços como insumos, e deve descartar todo o resto da curva. Isso tem a vantagem de que não precisamos de nenhum algoritmo de pré-seleção, já que o número de recursos é limitado de qualquer maneira. Aqui estão as duas funções de previsão simples que usamos em nossa experiência (em C): As duas funções são supostamente para levar a informação necessária para a ação de preço: per-bar movimento e volatilidade. A função de mudança é a diferença do preço atual para o preço de n barras antes, em relação ao preço atual. A função range é a distância total-baixa das últimas n velas, também em relação ao preço atual. E a função de escala centra e comprime os valores para a faixa de -100, portanto, dividi-los por 100 para obtê-los normalizado para -1. Lembramos que a normalização é necessária para algoritmos de aprendizagem de máquina. Etapa 3: Pré-seleção de preditores de pré-processamento Quando você selecionou um grande número de indicadores ou outros sinais como recursos para o seu algoritmo, você deve determinar quais deles são úteis e quais não. Há muitos métodos para reduzir o número de recursos, por exemplo: Determine as correlações entre os sinais. Remova aqueles com uma correlação forte a outros sinais, desde que não contribuem à informação. Compare o conteúdo de informação de sinais diretamente, com algoritmos como entropia de informação ou árvores de decisão. Determinar o conteúdo da informação indiretamente, comparando os sinais com sinais aleatórios existem algumas bibliotecas de software para isso, como o pacote R Boruta. Use um algoritmo como Análise de Componentes Principais (PCA) para gerar um novo conjunto de sinais com dimensionalidade reduzida. Use otimização genética para determinar os sinais mais importantes apenas pelos resultados mais rentáveis ​​do processo de previsão. Ótimo para ajuste de curva se você quiser publicar resultados impressionantes em um papel de pesquisa. Para a nossa experiência, não é necessário pré-selecionar ou pré-processar os recursos, mas você pode encontrar informações úteis sobre isso nos artigos (1), (2) e (3) listados no final da página. Passo 4: Selecione o algoritmo de aprendizado da máquina R oferece muitos pacotes ML diferentes, e qualquer um deles oferece muitos algoritmos diferentes com muitos parâmetros diferentes. Mesmo se você já decidiu sobre o método 8211 aqui, profunda aprendizagem 8211 você ainda tem a escolha entre diferentes abordagens e diferentes pacotes R. A maioria é bastante nova, e você pode encontrar muitas informações empíricas que ajuda a sua decisão. Você tem que experimentar todos eles e ganhar experiência com diferentes métodos. Para a nossa experiência, escolhemos o pacote Deepnet, que é provavelmente a biblioteca de aprendizagem mais simples e fácil de usar. Isso mantém nosso código curto. We8217re usando seu algoritmo Stacked Autoencoder (SAE) para pré-treinar a rede. Deepnet também oferece uma máquina restrita Boltzmann (RBM) para o pré-treinamento, mas eu não poderia obter bons resultados a partir dele. Existem outros e mais complexos pacotes de aprendizagem profunda para R, assim você pode gastar muito tempo verificando todos eles. Como funciona o pré-treinamento é facilmente explicado, mas por que ele funciona é uma questão diferente. Quanto ao meu conhecimento, ninguém ainda chegou a uma sólida prova matemática de que ele funciona em tudo. De qualquer forma, imagine uma grande rede neural com muitas camadas ocultas: Treinar a rede significa configurar os pesos de conexão entre os neurônios. O método usual é backpropagation de erro. Mas verifica-se que as camadas mais escondidas que você tem, o pior que funciona. Os termos de erro backpropagated ficam menores e menores de camada para camada, fazendo com que as primeiras camadas da rede para aprender quase nada. O que significa que o resultado previsto torna-se cada vez mais dependente do estado inicial aleatório dos pesos. Isso limitou severamente a complexidade das redes neurais baseadas em camadas e, portanto, as tarefas que elas podem resolver. Pelo menos até 10 anos atrás. Em 2006, os cientistas em Toronto publicaram pela primeira vez a ideia de pré-treinar os pesos com um algoritmo de aprendizagem não supervisionado, uma máquina Boltzmann restrita. Este revelou um conceito revolucionário. Ele impulsionou o desenvolvimento da inteligência artificial e permitiu todos os tipos de novas aplicações de máquinas Go-playing para auto-condução carros. No caso de um auto-codificador empilhado, ele funciona dessa maneira: Selecione a camada oculta para treinar comece com a primeira camada oculta. Conecte suas saídas a uma camada de saída temporária que tem a mesma estrutura que a camada de entrada network8217s. Alimente a rede com as amostras de treinamento, mas sem os alvos. Treiná-lo de modo que a primeira camada oculta reproduza o sinal de entrada 8211 as características 8211 em suas saídas o mais exatamente possível. O restante da rede é ignorado. Durante o treinamento, aplique um termo de penalidade 8216weight8217 de modo que sejam utilizados poucos pesos de conexão possível para reproduzir o sinal. Agora, alimente as saídas da camada escondida treinada para as entradas da próxima camada oculta não treinada e repita o processo de treinamento para que o sinal de entrada seja agora reproduzido nas saídas da próxima camada. Repita esse processo até que todas as camadas ocultas sejam treinadas. Nós temos agora uma rede de 8216parse8217 com muito poucas conexões de camada que podem reproduzir os sinais de entrada. Agora treine a rede com backpropagation para aprender a variável alvo, usando os pesos pré-treinados das camadas ocultas como ponto de partida. A esperança é que o processo de pré-treino não supervisionado produz uma abstração de ruído interno reduzida dos sinais de entrada que podem ser usados ​​para facilitar o aprendizado do alvo. E isso realmente parece funcionar. Ninguém sabe realmente porquê, mas várias teorias tentam explicar esse fenômeno. Etapa 5: Gerar um conjunto de dados de teste Primeiro precisamos produzir um conjunto de dados com recursos e alvos para que possamos testar nosso processo de previsão e testar parâmetros. As características devem ser baseadas nos mesmos dados de preço que na negociação ao vivo, e para o alvo devemos simular um comércio de curto prazo. Então, faz sentido gerar os dados não com R, mas com a nossa plataforma de negociação, que é de qualquer maneira muito mais rápido. Here8217s um pequeno script Zorro para isso, DeepSignals. c: We8217re gerando 2 anos de dados com recursos calculados por nossas funções de mudança e alcance acima definido. Nosso alvo é o retorno de um comércio com 3 barras de tempo de vida. Os custos de negociação são definidos para zero, então neste caso o retorno é equivalente à diferença de preço em 3 barras no futuro. A função adviseLong é descrita no manual do Zorro, é uma poderosa função que controla automaticamente o treinamento e a previsão e permite usar qualquer algoritmo de aprendizado baseado em R, como se fosse um simples indicador. Em nosso código, a função usa o retorno de comércio seguinte como alvo e as variações de preço e intervalos das últimas 4 barras como características. O sinalizador SIGNALS informa que não deve treinar os dados, mas exportá-los para um arquivo. csv. A bandeira BALANCED garante que recebemos tantos resultados positivos quanto negativos, o que é importante para a maioria dos algoritmos de aprendizado de máquina. Execute o script no modo de trem com o nosso activo de teste habitual EURUSD seleccionado. Ele gera um arquivo de planilha chamado DeepSignalsEURUSDL. csv que contém os recursos nas primeiras 8 colunas eo retorno de comércio na última coluna. Passo 6: Calibrar o algoritmo Algoritmos complexos de aprendizado de máquina têm muitos parâmetros para ajustar. Alguns deles oferecem grandes oportunidades para ajustar a curva do algoritmo para publicações. Ainda assim, devemos calibrar parâmetros já que o algoritmo raramente funciona bem com suas configurações padrão. Para isso, here8217s um script R que lê o conjunto de dados criado anteriormente e processa-lo com o algoritmo de aprendizagem profunda (DeepSignal. r): We8217ve definido três funções neural. train. Neural. predict. E neural. init para treinamento, previsão e inicialização da rede neural. Os nomes das funções não são arbitrários, mas siga a convenção usada pela função Zorro8217s aconselhar (NEURAL.). Não importa agora, mas importará mais tarde quando usarmos o mesmo roteiro de R para treinar e trocar a estratégia de aprendizagem profunda. Uma quarta função, TestOOS. É usado para testes fora da amostra da nossa configuração. A função neural. init semeia o gerador aleatório R com um valor fixo (365 é o meu número pessoal de sorte). Caso contrário, obteríamos um resultado ligeiramente diferente a qualquer momento, uma vez que a rede neural é inicializada com pesos aleatórios. Também cria uma lista R global denominada 8220Models8221. A maioria dos tipos de variáveis ​​R don8217t precisam ser criados de antemão, alguns fazem (don8217t perguntam por quê). O operador 8216ltlt-8216 é para acessar uma variável global de dentro de uma função. A função neural. train toma como entrada um número de modelo eo conjunto de dados a ser treinado. O número do modelo identifica o modelo treinado na lista 8220 Models 8221. Uma lista não é realmente necessária para este teste, mas precisamos dela para estratégias mais complexas que treinam mais de um modelo. A matriz que contém os recursos eo alvo é passada para a função como segundo parâmetro. Se os dados XY não são uma matriz adequada, o que acontece com freqüência em R, dependendo de como você gerou, ele é convertido em um. Em seguida, ele é dividido em recursos (X) eo alvo (Y), e, finalmente, o alvo é convertido em 1 para um resultado comercial positivo e 0 para um resultado negativo. Os parâmetros de rede são então configurados. Alguns são óbvios, outros são livres para brincar com: A estrutura da rede é dada pelo vetor oculto: c (50,100,50) define 3 camadas ocultas, a primeira com 50, segunda com 100 e terceira com 50 neurônios. That8217s o parâmetro que we8217ll mais tarde modificar para determinar se mais profundo é melhor. A função de ativação converte a soma dos valores de entrada do neurônio para a saída do neurônio mais freqüentemente usado são sigmóides que satura a 0 ou 1, ou tanh que satura a -1 ou 1. Nós usamos tanh aqui, pois nossos sinais também estão na faixa de -1 . A saída da rede é uma função sigmóide uma vez que queremos uma previsão na faixa de 0..1. Mas a saída SAE deve ser 8220linear8221 para que o Autoencodificador Empilhado possa reproduzir os sinais de entrada analógica nas saídas. A taxa de aprendizagem controla o tamanho do passo para a descida do gradiente no treinamento uma taxa mais baixa significa passos mais finos e possivelmente uma previsão mais precisa, mas um tempo de treinamento mais longo. Momentum adiciona uma fração do passo anterior ao atual. Impede que a descida de gradiente fique presa em um minúsculo local mínimo ou ponto de sela. A escala de taxa de aprendizagem é um fator de multiplicação para mudar a taxa de aprendizagem após cada iteração (não tenho certeza para o que isso é bom, mas pode haver tarefas onde uma menor taxa de aprendizagem em épocas mais elevadas melhora a formação). Uma época é uma iteração de treinamento em todo o conjunto de dados. O treinamento cessará quando o número de épocas for atingido. Mais épocas significam uma melhor previsão, mas um treinamento mais longo. O tamanho do lote é um número de amostras aleatórias 8211 um mini lote 8211 retirado do conjunto de dados para um único treino. Dividir os dados em mini lotes acelera o treinamento, pois o gradiente de peso é calculado a partir de menos amostras. Quanto maior for o tamanho do lote, melhor será o treinamento, mas mais tempo levará. O abandono é um número de neurônios selecionados aleatoriamente que são desativados durante um mini-lote. Desta forma, a rede aprende apenas com uma parte de seus neurônios. Isso parece uma idéia estranha, mas pode efetivamente reduzir overfitting. Todos esses parâmetros são comuns para redes neurais. Brincar com eles e verificar o seu efeito sobre o resultado eo tempo de formação. Corretamente calibrar uma rede neural não é trivial e pode ser o tópico de outro artigo. Os parâmetros são armazenados no modelo juntamente com a matriz de pesos de conexão treinados. Assim, eles não precisam ser dados novamente na função de predição, neural. predict. Ele leva o modelo e um vetor X de recursos, executa-lo através das camadas e retorna a saída de rede, o alvo previsto Y. Comparado com o treinamento, a predição é muito rápida, uma vez que só precisa de um par de mil multiplicações. Se X foi um vetor de linha, ele é transposto e dessa forma convertido em um vetor de coluna, caso contrário a função nn. predict won8217t aceitá-lo. Use o RStudio ou algum ambiente semelhante para trabalhar convenientemente com R. Edite o caminho para os dados. csv no arquivo acima, instale-os, instale os pacotes R necessários (deepnet, e1071 e caret) e chame a função TestOOS do comando linha. Se tudo funcionar, ele deve imprimir algo parecido: TestOOS lê primeiro o nosso conjunto de dados da pasta Zorro8217s Data. Ele divide os dados em 80 para treinamento (XY. tr) e 20 para testes fora da amostra (XY. ts). O conjunto de treinamento é treinado e o resultado é armazenado na lista Modelos no índice 1. O conjunto de teste é dividido em características (X) e alvos (Y). Y é convertido em binário 0 ou 1 e armazenado em Y. ob. Nosso vetor de alvos observados. Nós então prever os alvos a partir do conjunto de teste, convertê-los novamente para binário 0 ou 1 e armazená-los em Y. pr. Para comparar a observação com a predição, usamos a função confusionMatrix do pacote caret. Uma matriz de confusão de um classificador binário é simplesmente uma matriz 22152 que informa quantos 08217s e quantos 18217s foram previstos incorretamente e corretamente. Muitas métricas são derivadas da matriz e impressas nas linhas acima. O mais importante neste momento é a precisão de predição 62. Isso pode sugerir que eu bateu preço ação negociação um pouco prematuramente. Mas é claro que o 62 poderia ter sido apenas sorte. Vamos ver isso mais tarde quando executamos um teste WFO. Um conselho final: os pacotes de R são ocasionalmente atualizados, com a possível conseqüência de que o código R anterior de repente pode funcionar de forma diferente, ou não. Isso realmente acontece, então teste cuidadosamente após qualquer atualização. Etapa 7: A estratégia Agora que we8217ve testou nosso algoritmo e obteve alguma precisão de previsão acima de 50 com um conjunto de dados de teste, podemos finalmente codificar nossa estratégia de aprendizado de máquina. De fato, já codificamos a maior parte dele, devemos apenas adicionar algumas linhas ao script Zorro acima que exportou o conjunto de dados. Este é o roteiro final para treinamento, testes e (teoricamente) negociação do sistema (DeepLearn. c): We8217re usando um ciclo WFO de um ano, dividido em um treinamento de 90 e um período de teste de 10 fora da amostra. Você pode perguntar por que eu usei anteriormente dados de dois anos8217 e uma divisão diferente, 8020, para calibrar a rede na etapa 5. Isso é para usar dados compostos diferentes para calibrar e para testar frente a frente. Se usarmos exatamente os mesmos dados, a calibração pode superá-lo e comprometer o teste. Os parâmetros WFO selecionados significam que o sistema é treinado com cerca de 225 dias de dados, seguido de um teste de 25 dias ou período comercial sem treinamento. Na literatura você às vezes encontra recomendações para treinar um sistema de aprendizado de máquina depois de qualquer negociação, ou pelo menos qualquer dia. Mas isso não faz muito sentido para mim. Quando você usou quase 1 ano8217s dados para treinar um sistema, obviamente não pode deteriorar-se após um único dia. Ou se ele fez, e só produziu resultados de teste positivo com a reciclagem diária, eu suspeitava fortemente que os resultados são artefatos por algum erro de codificação. Treinar uma rede profunda leva realmente muito tempo, no nosso caso cerca de 10 minutos para uma rede com 3 camadas ocultas e 200 neurônios. Uma vez que este é repetido em qualquer ciclo WFO, o uso de vários núcleos é recomendado para o treinamento de muitos ciclos em paralelo. A variável NumCores em -1 ativa todos os núcleos de CPU, exceto um. Múltiplos núcleos só estão disponíveis no Zorro S, portanto, um teste completo com todos os ciclos WFO pode levar várias horas com a versão gratuita. No roteiro, agora treinamos comércios longos e curtos. Para isso, temos de permitir hedging no modo Training, uma vez que posições longas e curtas estão abertas ao mesmo tempo. A entrada de uma posição depende agora do valor de retorno da função de aconselhamento, que por sua vez chama o neural. train ou a função neural. predict do script R. Portanto, estamos aqui entrando em posições quando a rede neural prevê um resultado acima de 0,5. O script R agora é controlado pelo script Zorro (para isso deve ter o mesmo nome, NeuralLearn. r. Somente com extensão diferente). É idêntico ao nosso script R acima desde we8217re usando os mesmos parâmetros de rede. Somente uma função adicional é necessária para suportar um teste WFO: A função neural. save armazena a lista de modelos 8211 que agora contém 2 modelos para longos e para operações curtas 8211 após cada treino executado na pasta de dados Zorro8217s. Uma vez que os modelos são armazenados para uso posterior, não precisamos treiná-los novamente para testes repetidos. Esta é a curva de equidade de WFO gerada com o script acima (EURUSD, sem custos de negociação): Embora nem todos os ciclos WFO obter um resultado positivo, parece que há algum efeito preditivo. A curva é equivalente a um retorno anual de 89, conseguido com uma 50-100-50 estrutura de camada oculta. Verificaremos na próxima etapa como diferentes estruturas de rede afetam o resultado. Desde o neural. init. Neural. train. Neural. predict. E as funções neural. save são chamadas automaticamente por funções de Zorro8217s adviseLongadviseShort, lá são nenhumas funções de R diretamente chamadas no certificado de Zorro. Assim, o script pode permanecer inalterado quando se utiliza um método de aprendizagem de máquina diferente. Somente o script DeepLearn. r deve ser modificado ea rede neural, por exemplo, substituída por uma máquina de vetores de suporte. Para negociar tal sistema de aprendizagem de máquina ao vivo em um VPS, certifique-se de que R também está instalado no VPS, os pacotes R necessários estão instalados eo caminho para o terminal R configurado no arquivo ini Zorro8217s. Caso contrário, você receberá uma mensagem de erro ao iniciar a estratégia. Passo 8: A experiência Se o nosso objetivo tinha sido o desenvolvimento de uma estratégia, os próximos passos seriam a verificação da realidade, gestão de risco e dinheiro, e preparando-se para negociação ao vivo tal como descrito no modelo de desenvolvimento de estratégia baseada. Mas para o nosso experimento vamos agora executar uma série de testes, com o número de neurônios por camada aumentada de 10 para 100 em 3 etapas e 1, 2 ou 3 camadas ocultas (deepnet não suporta mais de 3). Assim, examinamos as seguintes 9 estruturas de rede: c (10), c (10,10), c (10,10,10), c (30), c (30,30), c (30,30,30 ), C (100), c (100, 100), c (100, 100, 100). Para esta experiência você precisa de uma tarde, mesmo com um PC rápido e no modo de núcleo múltiplo. Aqui estão os resultados (razão SR Sharpe, linearidade da inclinação R2): vemos que uma rede simples com apenas 10 neurônios em uma única camada oculta não funciona bem para a previsão de curto prazo. A complexidade da rede melhora claramente o desempenho, contudo apenas até certo ponto. Um bom resultado para o nosso sistema já é alcançado com 3 camadas x 30 neurônios. Ainda mais neurônios não podem ajudar muito e às vezes até produzem um pior resultado. Isso não é uma surpresa real, pois para processar apenas 8 entradas, 300 neurônios provavelmente não podem fazer um trabalho melhor do que 100. Conclusão Nosso objetivo era determinar se algumas velas podem ter poder preditivo e como os resultados são afetados pela complexidade do algoritmo . Os resultados parecem sugerir que os movimentos de preços a curto prazo podem de fato ser previstos às vezes, analisando as mudanças e os intervalos das últimas 4 velas. A previsão não é muito precisa 8282 na faixa de 58..60, ea maioria dos sistemas da série de teste tornam-se não rentáveis ​​quando os custos de negociação estão incluídos. Ainda, eu tenho que reconsiderar minha opinião sobre a troca da ação do preço. O fato de que a previsão melhora com a complexidade da rede é um argumento especialmente convincente para a previsão de preços a curto prazo. Seria interessante investigar a estabilidade a longo prazo dos padrões preditivos de preços. Para isso, tivemos que executar outra série de experimentos e modificar o período de treinamento (WFOPeriod no script acima) e os 90 ISOOS split. Isso leva mais tempo, já que precisamos usar mais dados históricos. Eu fiz alguns testes e encontrei até agora que um ano parece ser realmente um bom período de treinamento. O sistema deteriora-se com períodos mais longos do que alguns anos. Padrões preditivos de preços, pelo menos de EURUSD, têm uma vida útil limitada. Onde podemos ir a partir daqui Há uma infinidade de possibilidades, por exemplo: Use as entradas de mais velas e processá-las com redes muito maiores com milhares de neurônios. Use sobreamostragem para expandir os dados de treinamento. A previsão sempre melhora com mais amostras de treinamento. Comprimir séries temporais f. i. Com análise de espectro e analisar não as velas, mas sua representação de freqüência com métodos de aprendizagem de máquina. Use entradas de muitas velas 8211, tais como, 100 8211 e pré-processo velas adjacentes com camadas de rede convolucional unidimensional. Use redes recorrentes. Especialmente LSTM poderia ser muito interessante para analisar a série de tempo 8211 e como a meu conhecimento, foram usados ​​raramente para a predição financeira até agora. Use um conjunto de redes neurais para previsão, como Aronson8217s 8220oracles8221 e 8220comitees8221. Artigos I8217ve adicionou os scripts C e R ao repositório de scripts 2016. Você precisa tanto na pasta Estratégia Zorro8217s. Zorro versão 1.474 e R versão 3.2.5 (64 bits) foi usado para a experiência, mas também deve trabalhar com outras versões. Os resultados abaixo foram gerados pela versão revisada de DeepSignals. r 8211 apenas a mudança foi o uso da rede LSTM do pacote rnn no CRAN. Os autores do pacote consideram sua implementação de LSTM como 8220experimental8221 e não acham que ela ainda está aprendendo corretamente, então espero mais melhorias para chegar lá. (Passaram idades tentando realizar o elemento LSTM usando o pacote mxnet mas desistiram como couldn8217t descobrir o formato correto de entrada quando usando vários recursos de treinamento.) Publicarão resultados de WFO completa quando eu tiver terminado a versão LSTM de DeepLearn. r Matriz de Confusão e Estatísticas Referência Previsão 0 1 0 1641 1167 1 1225 1701 Precisão. 0,5828 95 CI. (0.5699, 0.5956) Nenhuma informação Rate. 0,5002 P-Value Acc gt NIR. Lt2e-16 Kappa. 0.1657 Mcnemar039s Teste P-Value. 0.2438 Sensibilidade. 0,5726 Especificidade. 0.5931 Valor Pos Pred. 0.5844 Valor Negativo Pred. 0.5813 Prevalência. 0,4998 Taxa de Detecção. 0,2862 Prevalência de Detecção. 0,4897 Precisão equilibrada. 0.5828 039Positive039 Classe. 0 Resultados do teste WFO abaixo. Novamente, apenas a mudança para arquivos originais foi o uso de LSTM em R, em vez de DNNSAE. Walk-Forward Test DeepLearnLSTMV4 EURUSD Conta simulada AssetsFix Período de bargura 1 hora (média 87 min) Período de simulação 15.05.2014-07.06.2016 (12486 bar) Período de teste 04.05.2015-07.06.2016 (6649 bar) Período de reflexão 100 bars (4 Dias) Ciclos de teste da WFO 11 x 604 barras (5 semanas) Ciclos de treinamento 12 x 5439 barras (46 semanas) Ciclos de Monte Carlo 200 Deslocamento assumido 0,0 seg Espalhamento 0,0 pips (rolo 0,000.00) Contratos por lote 1000,0 Bruto winloss 3628 -3235 5199p) Lucro médio 360year, 30month, 1.38day Drawdown máximo -134 34 (MAE -134 34) Tempo de inatividade total 95 (TAE 95) Tempo de inatividade máximo 5 semanas a partir de agosto de 2015 Max margem aberta 40 Max risco aberto 35 Volume de comércio 5710964 (5212652ano ) Transaction costs 0.00 spr, 0.00 slp, 0.00 rol Capital required 262 Number of trades 6787 (6195year, 120week, 25day) Percent winning 57.6 Max winloss 16 -14 Avg trade profit 0.06 0.8p (12.3p -14.8p) Avg trade slippage 0.00 0.0p (0.0p -0.0p) Avg trade bars 1 (1 -2) Max trade bars 3 (3 hours) Time in market 177 Max open trades 3 Ma x loss streak 17 (uncorrelated 11) Annual return 137 Profit factor 1.12 (PRR 1.08) Sharpe ratio 1.79 Kelly criterion 2.34 R2 coefficient 0.435 Ulcer index 13.3 Prediction error 152 Confidence level AR DDMax Capital 10 143 128 252 20 129 144 278 30 117 161 306 40 107 179 336 50 101 190 355 60 92 213 392 70 85 232 425 80 77 257 466 90 64 314 559 95 53 383 675 100 42 495 859 Portfolio analysis OptF ProF WinLoss Wgt Cycles EURUSD .219 1.12 39072880 100.0 XXX EURUSD:L .302 1.17 18301658 65.0 EURUSD:S .145 1.08 20771222 35.0 Interesting For a still experimental LSTM implementation that result looks not bad. Could you help me answering some questions I have few question below: 1.I want to test Commission mode. If I use interactive broker, I should set Commission . in normal case. 2.If I press the 8220trade8221 button, I see the log the script will use DeepLearnEURUSD. ml. So real trade it will use DeepLearnEURUSD. ml to get the model to trade And use neural. predict function to trade 3.If I use the slow computer to train the data , I should move DeepLearnEURUSD. ml to the trade computer I test the real trade on my interactive brokers and press the result button. Can I use Commission0.60 to train the neural and get the real result Thank you. Result button will show the message below: Trade Trend EURUSD Bar period 2 min (avg 2 min) Trade period 02.11.2016-02.11.2016 Spread 0.5 pips (roll -0.020.01) Commission 0.60 Contracts per lot 1000.0 Commission should be normally not set up in the script, but entered in the broker specific asset list. Otherwise you had to change the script every time when you want to test it with a different broker or account. IB has different lot sizes and commissions, so you need to add the command to the script when you want to test it for an IB account. Yes, DeepLearnEURUSD. ml is the model for live trading, and you need to copy it to the trade computer. Dear jcl Do I write assetList(AssetsIB. csv) in the right place So below code8217s result includes Commission I test the result with Commission that seems pretty good. Annual 93 3177p function run() StartDate 20140601 BarPeriod 60 1 hour LookBack 100 WFOPeriod 25224 1 year DataSplit 90 NumCores -1 use all CPU cores but one assetList(8220AssetsIB. csv8221) set(RULES) Spread RollLong RollShort Commission Slippage 0 LifeTime 3 if(Train) Hedge 2 if(adviseLong(NEURALBALANCED,0, change(1),change(2),change(3),change(4), range(1),range(2),range(3),range(4)) gt 0.5) enterLong() if(adviseShort() gt 0.5) enterShort() Problem 1: I run the DeepLearn. c in the IB paper trade. The code 8220LifeTime 3 prediction horizon8221 seems to close the position that you open after 3 bars(3 hours). But I can8217t see it close the position on third bar close. I see the logs below: Closing prohibited 8211 check NFA flag EURUSD::L4202 Can8217t close 11.10995 at 09:10:51 Problem 2: In my IB paper trade, it the default order size is 1k on EURUSD. How to change the order size in paper trade Thank you very much. IB is an NFA compliant broker. You can not close trades on NFA accounts. You must set the NFA flag for opening a reverse position instead. And you must enable trading costs, otherwise including the commission has no effect. I don8217t think that you get a positive result with trading costs. Those account issues are not related to machine learning, and are better asked on the Zorro forum. Or even better, read the Zorro manual where all this is explained. Just search for 8220NFA8221. I do some experiment to change the neural8217s parameter with commission. The code is below: function run() StartDate 20140601 BarPeriod 60 1 hour LookBack 100 WFOPeriod 25224 1 year DataSplit 90 NumCores -1 use all CPU cores but one assetList(8220AssetsIB. csv8221) set(RULES) Spread RollLong RollShort Slippage 0 LifeTime 3 if(Train) Hedge 2 if(adviseLong(NEURALBALANCED,0, change(1),change(3),change(5),change(7),change(9), range(1),range(3),range(5),range(7),range(9)) gt 0.7) enterLong() if(adviseShort() gt 0.7) enterShort() I get the result with commission that Annual Return is about 23. But I don8217t complete understand the zorro8217s setting and zorro8217s report. Obrigado. The result: Annual 23 661p Walk-Forward Test DeepLearn EURUSD Simulated account AssetsIB. csv Bar period 1 hour (avg 86 min) Simulation period 15.05.2014-09.09.2016 (14075 bars) Test period 23.04.2015-09.09.2016 (8404 bars) Lookback period 100 bars (4 days) WFO test cycles 14 x 600 bars (5 weeks) Training cycles 15 x 5401 bars (46 weeks) Monte Carlo cycles 200 Simulation mode Realistic (slippage 0.0 sec) Spread 0.0 pips (roll 0.000.00) Commission 0.50 Contracts per lot 20000.0 Gross winloss 24331 -22685 (914p) Average profit 1190year, 99month, 4.58day Max drawdown -1871 114 (MAE -1912 116) Total down time 92 (TAE 41) Max down time 18 weeks from Dec 2015 Max open margin 2483 Max open risk 836 Trade volume 26162350 (18916130year) Transaction costs 0.00 spr, 0.00 slp, 0.00 rol, -1306 com Capital required 5239 Number of trades 1306 (945year, 19week, 4day) Percent winning 52.5 Max winloss 375 -535 Avg trade profit 1.26 0.7p (19.7p -20.3p) Avg trade slippage 0.00 0.0p (0.0p -0.0p) Avg tra de bars 2 (2 -3) Max trade bars 3 (3 hours) Time in market 46 Max open trades 3 Max loss streak 19 (uncorrelated 10) Annual return 23 Profit factor 1.07 (PRR 0.99) Sharpe ratio 0.56 Kelly criterion 1.39 R2 coefficient 0.000 Ulcer index 20.8 Confidence level AR DDMax Capital 10 29 1134 4153 20 27 1320 4427 30 26 1476 4656 40 24 1649 4911 50 23 1767 5085 60 22 1914 5301 70 21 2245 5789 80 19 2535 6216 90 16 3341 7403 95 15 3690 7917 100 12 4850 9625 Portfolio analysis OptF ProF WinLoss Wgt Cycles EURUSD .256 1.07 685621 100.0 XXXXXXXXXXXX EURUSD:L .476 1.16 294278 94.5 EURUSD:S .026 1.01 391343 5.5

Comments

Popular posts from this blog

Transaksi Swap Forex Trading

Technical Analysis Forex Trading

Trendline Trading Forex Pdf