A maioria dos sistemas de negociação tem um número de parâmetros incorporados, parâmetros como o período de lookback, os limites de entrada e saída, e assim por diante. Os leitores do meu blog (por exemplo, aqui e aqui) e meu livro saberiam minha opinião sobre a otimização de parâmetros: eu não sou um grande fã dele. Isto é porque eu acredito que a série de tempo financeiro é demasiado não-estacionária para permitir que um diga o que era optimal no backtest é necessariamente ideal no futuro. A maioria dos comerciantes que eu conheço preferem trocar uma estratégia que é insensível a pequenas mudanças nos parâmetros, ou, alternativamente, uma estratégia sem parâmetros que é efetivamente uma média de modelos com diferentes parâmetros. Dito isto, se você só pode negociar um modelo com um conjunto específico de parâmetros, é racional perguntar como se pode escolher o melhor (ótimo) conjunto de parâmetros. Muitos modelos comerciais têm um bom número de parâmetros, e é bastante oneroso para encontrar os valores ideais de todos esses parâmetros simultaneamente. Recentemente, Ron Schoenberg publicou um artigo na Revista de Futuros que detalha uma maneira de fazer isso com apenas uma pequena quantidade de poder do computador. A técnica chave que Ron usa é o ajuste polinomial cúbico da superfície de PampL em função dos parâmetros. Ron usa a estratégia VIX RSI em Larry Connors livro Short Term Trading estratégias que funcionam como um exemplo. Esta estratégia tem 5 parâmetros a serem otimizados, mas Ron só precisa computar o PampL para 62 diferentes conjuntos de parâmetros, e todo o procedimento leva apenas 58 segundos. Embora Ron tenha confirmado que a maioria dos parâmetros que Connors escolheu estão perto de ideal, ele fez encontrar algumas surpresas: a saber, que RSI de período 3 ou 4 é significativamente mais rentável do que o 2 que Connors utilizado, pelo menos no período de backtest . Agora, para um verdadeiro teste desta otimização, seria útil se Ron executou essa otimização reter alguns dados fora da amostra e ver se esses parâmetros ainda são ótimos nesse conjunto de dados retidos. Uma vez que ele não fez isso, precisamos esperar por mais um ano para nos descobrir 11 comentários: Falando sobre dados fora da amostra, você tem uma forte opinião sobre Walk-forward testes Eu sei que Robert Pardo é um grande proponente dele Como uma ferramenta para se adaptar a mercados em mutação (isto é, não estacionários). Por outro lado você tem Dunn que comercializa o mesmo sistema com os mesmos parâmetros. Tenho também recentemente se deparar com Ralph Vince Leverage Portfolio Portfolio Space que soa como uma alternativa promissora para o processo de otimização - usando uma superfície de desempenho e drawdown -, mas apenas olhando para o lado de gestão de dinheiro das coisas (ou seja, tamanho da posição em vez de escolha de parâmetro) . A grande coisa é que ele deve permitir a otimização de vários sistemas. Você tem alguma opinião sobre este agradecimentos para as ligações úteis de qualquer maneira. A falta de generalização fora da amostra geralmente é um problema com modelos que tendem a ser super ajustados, como redes neurais. Os modelos que eu tenho olhado, variações nos modelos propostos por Connors e Álvarez em seus livros, são modelos muito simples e eu não espero que tenham quaisquer problemas fora da amostra. Eu fiz o teste para o modelo na Revista de Futuros. O modelo foi otimizado em dados de 1993 a 2003, e então eu corri o modelo em dados de 2003 a 2009. Os resultados foram semelhantes. Isso foi relatado no artigo da revista Futures. Wouldn39t isso qualificar como um teste fora do amostragem do modelo Ron, Minhas desculpas - eu não ignorar o parágrafo que mencionou o teste para a frente. Suas tabelas mostraram que os parâmetros ótimos calculados no backtest produzem bons resultados no teste fora da amostra. No entanto, você otimizou todo o conjunto de parâmetros nos dados fora da amostra e verificou se o que você escolheu no período da amostra permanece ótimo no teste direto. Vemos que Factor53 é ótimo no backtest. Mas Factor54 é ideal fora da amostra em vez disso. E quem quer dizer que, tendo em conta um período diferente de fora da amostra em 2010, Factor52 won39t ser óptima Se, portanto, eu estava negociando esta estratégia, shouldn39t eu troco 3 modelos com Factor52, 3 e 4 simultaneamente apenas para a média sobre todo o futuro Possíveis parâmetros ótimos Jez, Obrigado por mencionar o Leverage Space Portfolio. Eu não encontrei isso antes e vou estudá-lo antes de comentar. Ernie Você faz um bom ponto que o ponto ideal em um período de tempo não é o ponto ideal em outro período de tempo. Isso é claramente uma das fraquezas de qualquer experiência com dados financeiros históricos. No entanto, se o objetivo é obter os melhores números que o passado tem para oferecer no menor período de tempo, você pode vencer uma experiência estatisticamente projetada. Se estamos falando de uma abordagem de negociação quantificada, então estamos falando de obter e usar os melhores números, ou seja, os números mostrados para ser mais útil no passado. Mas como eu tenho certeza que você está ciente, um experimento projetado é mais do que sobre os melhores resultados. Cada experiência contém uma centena de perguntas e respostas, e cada experiência dá origem a perguntas que só podem ser respondidas com mais experimentação. Você poderia perder-se por um ano dando uma olhada em todos os aspectos de uma experiência experimental de 200 única. Ao analisar os spreads (calculando o coeficiente de cointegração, aplicando o teste para a reversão média e estimando a meia vida de propagação) você usa os preços do log ou os preços em dólares. Desculpe por postar um comentário falando sobre outro tópico. Oi Anon, eu uso os preços em dólar, mas eu não acho que importa muito. Ernie Apenas querendo saber que sistema de teste de volta você usa E para ajustar os dados de polinômio cúbicos você usa Matlab cs96ai, eu uso Matlab para meu backtesting. Quanto ao ajuste cúbico, você pode perguntar aos autores do artigo original que eu citei. (Você pode, claro, fazer isso em Matlab também, mas eu não realizei essa pesquisa.) Ernie Querida Ernie, Obrigado pelo livro. É realmente bom. Estou tentando implementar alguns dos programas e fazer alguns testes de volta. Eu não tenho matlab como eu descobri que é muito caro para a minha negociação inicial. Existe um outro que você recomendaria. Estou tentando programar em R, mas é muito lento agora. Você tem todos os seus exemplos no Excel, por acaso. Mais uma vez, obrigado pelo livro e eu gostei de lê-lo e tentar implementar algumas delas. Vina, Obrigado por seus elogios. Você pode ser capaz de encontrar alguns substitutos Excel (por exemplo, um leitor disse neste blog que há um teste Excel adf para stationarity em algum lugar). No entanto, muitas das estratégias são difíceis de implementar no Excel. É por isso que muitos quants usam Matlab para backtesting em vez disso. Certamente R é uma boa alternativa também. (O blogueiro convidado Paul Teetor, que você pode pesquisar neste blog, tem alguns programas de amostra R postados.) Melhor da sorte, ErnieImproving sistemas de negociação técnica usando um novo algoritmo genético baseado em MATLAB procedimento Estudos recentes nos mercados financeiros sugerem que a análise técnica pode ser Uma ferramenta muito útil na previsão da tendência. Os sistemas de negociação são amplamente utilizados para avaliação de mercado, no entanto, a otimização de parâmetros desses sistemas atraiu pouco interesse. Neste artigo, para explorar o potencial do comércio digital, apresentamos uma nova ferramenta MATLAB baseada em algoritmos genéticos, a ferramenta especializada na otimização de parâmetros de regras técnicas. Utiliza o poder de algoritmos genéticos para gerar soluções rápidas e eficientes em termos comerciais reais. A nossa ferramenta foi testada extensivamente sobre dados históricos de um fundo UBS que investe em mercados de acções emergentes através do nosso sistema técnico específico. Os resultados mostram que o nosso GATradeTool proposto supera as ferramentas de software comumente usadas, não adaptativas, com respeito à estabilidade do retorno e economia de tempo ao longo de todo o período de amostragem. No entanto, apresentamos evidências de um possível efeito de tamanho populacional na qualidade das soluções. Mercados financeiros Previsão Algoritmos genéticos Investimento Regras técnicas 1. Introdução Os comerciantes e analistas de investimento da Todayrsquos necessitam de ferramentas rápidas e eficientes num mercado financeiro implacável. Batalhas na negociação são agora principalmente travada em velocidade do computador. O desenvolvimento de novas tecnologias de software ea aparência de novos ambientes de software (por exemplo, MATLAB) fornecem a base para a resolução de problemas financeiros difíceis em tempo real. MATLABrsquos vasta built-in funcionalidade matemática e financeira, o fato de que é tanto uma linguagem de programação interpretada e compilada e sua independência plataforma torná-lo bem adaptado para o desenvolvimento de aplicações financeiras. Evidências sobre os retornos obtidos por regras técnicas, incluindo estratégias de impulso (por exemplo, 14. 15. 16. 16. 25 xA0andxA020), regras de média móvel e outros sistemas de negociação 6. 2. 9 xA0andxA024 podem apoiar a importância da análise técnica. No entanto, a maioria destes estudos ignorou a questão da otimização de parâmetros, deixando-os abertos à crítica de dados snooping ea possibilidade de viés de sobrevivência 7. 17 xA0andxA08. Tradicionalmente, os pesquisadores usaram especificação ad hoc de regras de negociação. Eles usam uma configuração popular padrão ou tentam aleatoriamente alguns parâmetros diferentes e selecionam o melhor com critérios baseados no retorno principalmente. Papadamou e Stephanides 23. implementaram uma nova caixa de ferramentas baseada em MATLAB para negociação técnica assistida por computador que incluiu um procedimento para problemas de otimização de parâmetros. No entanto, o ponto fraco de seu procedimento de otimização é o tempo: a função objetivo (por exemplo lucro) não é uma função de erro quadrático simples, mas complicada (cada iteração de otimização passa pelos dados, gera sinais de negociação, calcula lucros, etc.). Quando os conjuntos de dados são grandes e você gostaria de reoptimize seu sistema muitas vezes e você precisa de uma solução o mais rapidamente possível, em seguida, experimentar todas as soluções possíveis para obter o melhor seria uma tarefa muito tediosa. Os algoritmos genéticos (GAs) são mais adequados, uma vez que realizam pesquisas aleatórias de forma estruturada e convergem muito rapidamente em populações de soluções quase óptimas. O GA lhe dará um conjunto (população) de soluções ldquogoodrdquo. Os analistas estão interessados em obter algumas boas soluções o mais rápido possível, em vez de a melhor solução global. A melhor solução global existe, mas é altamente improvável que ela continue a ser a melhor. O objetivo deste estudo é mostrar como algoritmos genéticos, uma classe de algoritmos em computação evolutiva, podem ser empregados para melhorar o desempenho ea eficiência dos sistemas de negociação informatizados. Não é aqui o propósito de fornecer justificação teórica ou empírica para a análise técnica. Demonstramos nossa abordagem em uma tarefa de previsão específica baseada em mercados emergentes de ações. Este artigo está organizado da seguinte forma. Trabalhos anteriores são apresentados na Seção 2. O conjunto de dados e nossa metodologia são descritos na Seção 3. Os resultados empíricos são discutidos na Seção 4. Conclusões segue Seção 5. 2. Trabalhos anteriores Há um grande corpo de trabalho GA na área de ciência da computação e engenharia, mas pouco trabalho tem sido feito sobre áreas de negócios relacionados. Ultimamente, tem havido um interesse crescente no uso de GA na economia financeira, mas até agora tem havido pouca investigação sobre o comércio automatizado. Para nosso conhecimento, o primeiro artigo publicado vinculando algoritmos genéticos a investimentos foi de Bauer e Liepins 4. Bauer 5, em seu livro ldquoGenetic Algorithms and Investment strategiesrdquo, ofereceu orientação prática sobre como GAs podem ser usados para desenvolver estratégias de negociação atraentes baseadas em informações fundamentais. Estas técnicas podem ser facilmente alargadas para incluir outros tipos de informação, tais como dados técnicos e macroeconómicos, bem como os preços passados. De acordo com Allen e Karjalainen 1. o algoritmo genético é um método apropriado para descobrir regras técnicas de negociação. Fernaacutendez-Rodriacuteguez et al. 11, adotando a otimização de algoritmos genéticos em uma simples regra de negociação fornecem evidências para o uso bem-sucedido de GAs da Bolsa de Valores de Madri. Outros estudos interessantes são aqueles de Mahfoud e Mani 18 que apresentaram um novo sistema baseado em algoritmos genéticos e aplicaram-na à tarefa de prever os desempenhos futuros de estoques individuais por Neely et al. 21 e por Oussaidene et al. 22 que aplicou a programação genética à previsão de câmbio e relatou algum sucesso. Uma das complicações na otimização GA é que o usuário deve definir um conjunto de parâmetros, tais como a taxa de cruzamento, o tamanho da população ea taxa de mutação. De acordo com De Jong 10, que estudou algoritmos genéticos na otimização de funções, um bom desempenho GA requer alta probabilidade de cruzamento (inversamente proporcional ao tamanho da população) e um tamanho populacional moderado. Goldberg 12 e Markellos 19 sugerem que um conjunto de parâmetros que funciona bem em muitos problemas é um parâmetro de crossover 0,6, tamanho de população 30 e parâmetro de mutação 0,0333. Bauer 4 realizou uma série de simulações sobre problemas de otimização financeira e confirmou a validade das sugestões Goldbergrsquos. No presente estudo, realizaremos um estudo de simulação limitado, testando várias configurações de parâmetros para o sistema de negociação escolhido. Também forneceremos evidências para o GA proposto, comparando nossa ferramenta com outras ferramentas de software. Otimização de Estratégia Existem duas dificuldades, entre muitas, na execução deste script no MatlabR. O primeiro é a codificação. Minha opinião pessoal é que exige esforço hercúleo para simular estratégias comerciais não triviais (ou qualquer sistema complexo) no MatlabR e se certificar de que a simulação está correta. Não há simplesmente nenhum processo fácil ou ferramenta disponível para sistematicamente e automaticamente verificar e testar a correção dos scripts. Pior, a maioria dos quantstraders não pode codificar. Eles não sabem nada sobre testes de software. Na prática, a maioria dos quantstraders simplesmente pensa que a fantasia de que seu código está correto. Na verdade, muitos programadores no setor financeiro não podem codificar nem. (Os bons vão para GooG, MFT, AAPL8230 ou startups.) Mais importante, a segunda dificuldade, que esta discussão se concentra, é o desempenho. Eu acredito que é mais do que óbvio que, em geral, a execução de scripts MatlabR é muito lento. MatlabR executa e interpreta um script linha por linha. Para o nosso script de otimização de estratégia de negociação algorítmica, os pontos de estrangulamento são: Cada simulação de estratégia é lenta por causa do loop ao longo dos tempos (ou datas, ou carrapatos). Precisamos simular a estratégia muitas vezes em cada iteração DE. Nós executamos muitas dessas iterações como no algoritmo genético. Em outras palavras, se você tentar codificar o pseudo-código acima em MatlabR, pode demorar dias, se é que, para chegar a resultados. Se a sua estratégia de negociação funciona com dados tick-by-tick, então, é impossível. Para acelerar o processo, podemos executar o algoritmo de evolução diferencial em paralelo em uma grade. MatlabR permite paralelizar o seu código. No entanto, realisticamente, eu nunca vi qualquer quantstraders escrever código paralelo MatlabR. Mesmo que eles quisessem fazê-lo, poucos, se houver, entendiam a programação simultânea multi-threaded para obter o código correto. Além disso, podemos simplesmente nos afastar de MatlabR para algumas linguagens de programação reais, p. CCJava. O código cumprido sempre é mais rápido do que os scripts. Algo Quant aborda o problema de otimização da estratégia de negociação por Ativar a codificação fácil de uma estratégia de negociação complexa em Java. Para codificar uma estratégia, um quanttrader simplesmente reúne componentes, p. Sinais, matemática, manipuladores de eventos, da biblioteca. Otimize uma estratégia ou um portfólio executando o algoritmo de otimização de evolução diferencial em paralelo. Eu demonstro o desempenho de Algo Quant usando uma estratégia simples de cruzamento de média móvel. Esta estratégia mantém duas médias móveis, uma média rápida e uma média lenta. Quando a média de movimento rápido atravessa a média de movimento lento de baixo, entramos numa posição longa quando a média de movimento rápido atravessa a média de movimento lento de cima, entramos numa posição curta. Existem evidências teóricas e empíricas para mostrar que tanto o tamanho de janela rápido e lento mover não deve ser muito grande. Ver a conferência de nota do curso de Haksuns 6. A maioria de comerciantes escolhem os tamanhos rápidos e lentos da janela movente por 1) suposição, 2) hearsay, 3) backtesting (com alguns parâmetros mais ou menos escolhidos aleatòria) em Bloomberg. Alguns comerciantes recalibram periodicamente atualizando os parâmetros. Vamos primeiro tentar a abordagem de ouvi dizer. Uma escolha popular é (50, 200). Eu simular esta estratégia de negociação do futuro S038P 500, VFINX, de 200011 a 2011531 com os dados do Yahoo. O código fonte está aqui. Aqui está o P038L gerado usando Algo Quant. Nós temos: pnl 50.4 sharpe 0.080829 omega 1.285375 Não há razão para que (50, 200) seja o parâmetro ótimo ou que ele mesmo funcione. Intuitivamente, se atualizarmos periodicamente o par (mais flexibilidade), poderíamos potencialmente gerar um P038L melhor. Por exemplo, eu troco esta estratégia de Crossover Médio Móvel Simples usando os parâmetros ótimos Calibrados dinamicamente a cada 3 meses usando os dados nos últimos 12 meses. Para a função objetivo para determinar otimalidade, eu uso omega. O código fonte está aqui. Como esperado, esta estratégia calibrada dinamicamente gera (muito) melhor P038L do que a estratégia estática usando parâmetros adivinhados aleatoriamente. Nós temos: pnl 106.65 sharpe 0.309824 omega 2.816514 Em termos de desempenho (velocidade de computação), levou 32,5 minutos (1954877 ms) para concluir a simulação por 10 anos e meio na minha estação de trabalho (dual E5520 2.27GHz) com 12GB de memória. (Como uma nota lateral, usando o outro algoritmo de força bruta paralelo levou apenas 6,6 minutos ou 395334 ms). Nosso algoritmo paralelo de evolução diferencial mantém um conjunto de 16 conjuntos de parâmetros. Em cada uma das 80 iterações, eu executo 16 simulações em paralelo, uma em cada núcleo. A imagem mostra que meu computador está trabalhando duro, utilizando todos os seus recursos para procurar os conjuntos de parâmetros historicamente ótimos. Redoing este simulação-teste-e-escolhe o procedimento em MatlabR pôde provavelmente fazer exame dos dias, se não para sempre. Como uma declaração de exoneração de responsabilidade, não afirmo que esta estratégia SMA2Crossover calibrada dinamicamente gera alfa no futuro S038P500. Na verdade, eu só aconteceu de pegar (f 3, L 12) por acaso. Meu ponto é comparar o desempenho de Algo Quants da evolução diferencial paralela na otimização de estratégias com a de MatlabR. 5 Comentários Quant Trader em 2011-05-31 às 5:11 pmGap-on-Open estratégia de negociação rentável 5 de agosto de 2014 por Pawel Depois de mais tempo, QuantAtRisk está de volta ao negócio. Como um comerciante do algo eu fui tentado sempre para testar uma estratégia de troca do espaço-em-aberto. Havia várias razões por trás dele, mas o mais popular sempre foi omni-discutido: goodbad notícias sobre o estoque. E o que O preço das ações subiu rapidamente nos dias seguintes. Quando nos aproximamos desses padrões de preços, falamos sobre gatilhos ou eventos desencadeados. O núcleo da atividade do algoritmo é a identificação do gatilho e tomar as ações apropriadas: ir longo ou curto. É isso. Em ambos os casos, queremos ganhar dinheiro. Neste post vamos projetar as condições iniciais para a nossa estratégia de negociação gap-on-open agindo como os gatilhos e vamos backtest um cenário realista de apostas nosso dinheiro em ações que abriu mais alto no dia de negociação seguinte. Nosso objetivo é encontrar o período de retenção mais otimizado para esses negócios fechados com um lucro. Nossa estratégia pode ser backtested usando qualquer N-carteira de ativos. Aqui, por simplicidade, vamos usar um subconjunto aleatório de 10 ações (portfolio. lst) sendo parte de um Índice Dow Jones atual: AXP CSCO DIS IBM JNJ KO NKE PG UTX XOM No Matlab, buscamos os preços das ações no Google Finance Data provider acessível via Quandl8217s Matlab API (veja esta postagem para sua configuração no Matlab). Começamos a escrever o nosso código de backtesting principal da seguinte forma: Gap on Open Trading Estratégia Fetching preços das ações via Quandl e Estratégia Backtesting (c) 2014 por Pawel Lachowicz, QuantAtRisk limpar tudo fechar todos clc fnameportfolio. lst Parâmetros parâmetro 1 (anos) parm11 ndaysparm1365 ldaydatenum 2014-08-05) buscar dados de estoque Top, Thp, Tlp, Tcp, N, ntdaysFetchQuandl (fname, ndays, lday) onde usamos uma função pré-projetada de FetchQuandl para importar 4 séries de preços separados de cada stock8217s aberto (Topo ), High (Thp), low (Tlp) e close (Tcp): function Top, Thp, Tlp, Tcp, N, ntdaysFetchQuandl (fname, ndays, lday) Leia a lista de componentes do Dow Jones fileID fopen (fname ) Tmp textscan (fileID, s) fclose (fileID) componentstmp uma lista como uma matriz de células Read na lista de tickers e códigos internos de Quandl xlsread (QuandlStockCodeListUS. xlsx) quandlctext (:, 1) novamente, como uma lista em uma célula Array quandlcodetext (:, 3) correspondente Quandls Price Code buscar dados de estoque para últimos ndays date2datest R (lday, aaaa-mm-dd) de date1datestr (lday-ndays, aaaa-mm-dd) para Rop Tcp varre todos os tickers e buscar os dados de Quandl para i1: length (components) para j1: length (quandlc) if (Strcmp (componentes, quandlc)) fprintf (4.0f sn, i, quandlc) fts0 fts, headersQuandl. get (quandlcode, type, fints. Authcode, PutHereYourQuandlCode. (Fts. Fechar, 1) Tpp cp fechar preço-série opfts2mat (fts. Open, 1) Topo op preço série aberta hpfts2mat (fts. High, 1) Thp hp preço alto lpfts2mat (fts. Open, 1) Fts. Low, 1) Tlp lp baixo preço Rpc cp (2: end, 2).cp (1: fim-1,2) -1 retorno-série cp fim fim fim Nlength (componentes) ntdayslength (Tcp) Que na linha 12 especificamos o número de anos, ou seja, até onde nosso backtest deve ser estendido para trás no tempo (ou número de dias de calendário ver linha 13) a partir do dia especificado na linha 14 (último dia). Primeiro, vamos projetar a estratégia de negociação. Analisamos simultaneamente quatro séries de preços para cada estoque separadamente. Definimos o gatilho da estratégia 8217s da seguinte forma: ou seja, se um preço de abertura de ações no dia t foi maior que o preço de fechamento no dia t-1 e os preços mais baixos no dia t foi maior que o preço mais alto no dia t-1. Tendo isso, tomamos uma decisão COMPRAR LONGA Nós compramos esse estoque no dia seguinte em seu preço de mercado (preço próximo). Esta abordagem deve remover o viés de deslizamento de forma eficaz (ver mais sobre a derrapagem em negociação de ações aqui). Agora, nós funcionamos o backtest em cada estoque e cada comércio aberto. Selecionamos o segundo parâmetro (parm2) para ser um número de dias, ou seja, quanto tempo temos o estoque. No seguinte código, deixe-nos permitir a venda do estoque após 1 a 21 dias de calendário (pm fim de semana ou período de tempo de feriados públicos): matriz pré-definida para resultados de resultados de backtest para parm20: 20 cR para i1: N apenas para Um propósito de traçar de série de preço se (i1) aberto (cor azul) parcela (Top (:, 1), Top (:, 2) Tpp (:, 2), g) xlabel (Dias) ylabel (AXP Stock Prices US) fim Tbuy para t2: (T-1) dia ind2Tp (t-1) dia ind2Tpp (t-1) dia ind3Top (t, 2) op on (t) , 2) lp on (t) day detectar gatilho se (ind1ltind3) ampamp (ind2ltind4) traçando apenas para AXP se (i1) mantenha na trama (Top (t, 1), Top (t, 2), o) Um disparador tdayTop (t, 1) nextbusdatebusdate (tday, 1) encontrar próxima data de negociação TbuyTbuy nextbusdate end end Tsellbusdate (Tbuyparm2,1) Aqui, nas linhas 57 e 60 construímos matriz de tempo armazenando informações físicas naqueles dias. Agora, vamos usá-los para verificar o preço em trade8217s aberto e fechar e derivar lucro e perda para cada ação: R para k1: comprimento (Tbuy) jfind (Tbuy (k) Tcp (:, 1)) pbuyTcp (j, 2 (J) () () () () () () () () () () () () () () () () () tj (Linhas 24 a 75, ou seja, seguindo um número de ações no índice de carteira i, aqui 1 a 10), capturamos todas as negociações por ação (linhas 63-70) e calculamos um retorno composto de vários períodos (linha 72) como se Nós negociávamos esse estoque unicamente usando nosso modelo. Por exemplo, para o estoque i1 (AXP) de nosso portfólio, nosso código exibe séries de preços de 1 ano: onde os dias que atendem aos nossos critérios de trigger foram indicados por marcadores de círculo aberto. Se você agora voltar a executar o backtest fazer uma substituição suave na linha 24 agora a ser: podemos descobrir que através da execução de algumas linhas extra de código, conforme definido: figura (2) haste ((0:20), 100results) xlabel O gráfico revela que para AXP, ao longo dos últimos 251 dias (desde 4 de agosto de 2014 para trás), tivemos 16 gatilhos, portanto, 16 comércios e, surpreendentemente, independentemente do período de detenção (AXP: Compound Return) , O retorno composto de todos os negócios fechados foi altamente positivo (rentável). Este não é o caso se considerarmos, por exemplo, i4, estoque da IBM: Este resultado aponta que para diferentes períodos de detenção (e diferentes estoques, é claro), certos indicadores de negociação extra devem ser aplicados para limitar as perdas. Se trocássemos todo um portfólio usando nosso modelo gap-on-open, acabaríamos com um resultado muito animador: onde, para cada período de participação, exibimos a média de retorno sobre o estoque de 10 ações. Tendo em conta a tendência ascendente global nos mercados accionistas dos EUA entre Agosto de 2013 e 2014, esta estratégia merece ser analisada com quaisquer outras modificações (por exemplo, considerando curto ou ambos os gatilhos longos e curtos, séries temporais FX, etc.). Alguém sábio disse uma vez: Às vezes você ganha. Às vezes você aprende. Em algo trading todos nós aprendemos a ganhar. No próximo post8230 Valor Marginal em Risco para Gestores de Carteiras QUERER APRENDER MAIS SOBRE PORTFÓLIOS no MATLAB Clique aqui Sobre o Fundador Pawel Lachowicz, PhD. Analista de Risco Quantitativo do Bank of New York Mellon. Especialista em processamento de sinais digitais. Cientista De Dados. Blockchain entusiasta. Advogado de Python. Escritor e Fotógrafo. Competidor do viajante e do metro. Baseado em Wroclaw, Poland. Para consultas profissionais, não hesite em contactar-me directamente. Siga a QaR na Web
No comments:
Post a Comment