Obter através da App Store Leia esta publicação em nosso aplicativo!
Personalizando a nova estratégia de negociação em R usando o quantmod.
Eu quero criar um novo indicador de TA personalizado para o símbolo de estoque em R. Mas não tenho idéia de como converter minha estratégia condicional SQL em função autodefinida R e adicioná-la ao ChartSeries em R.
A questão está listada no seguinte código como a explicação.
Pergunta: Como posso reescrever o código abaixo para torná-lo disponível como uma função em R?
Eu não acho que você precisa de sql neste caso.
Não tenho certeza do que REF significa, mas tenho certeza que você pode fazer isso sozinho.
Este é o resultado (eu não consigo carregar a foto, mas você vê um gráfico com linhas horizontais onde o sinal eq 1)
Use a função como um wrapper para sqldf () no pacote sqldf. O argumento para sqldf () será uma declaração seletiva no quadro de dados que possui os dados.
Um bom tutorial para isso pode ser encontrado em Burns Statistics.
Estratégia comercial Sql
Obter através da App Store Leia esta publicação em nosso aplicativo!
Qual é a estratégia de indexação ideal para o SQL Server?
Um amigo e eu estamos trabalhando em um novo projeto que está usando o SQL Server. No SQL que realizei projetos anteriores, eu sempre coloquei índices em qualquer campo que seja usado em um JOIN ou um WHERE.
Meu amigo os adicionou apenas quando houve uma necessidade de desempenho para eles. A idéia é que há um custo para manter os índices e você quer ter certeza de que vale a pena pagar esse custo. É justo dizer que algumas das consultas não serão usadas com freqüência, e também que algumas tabelas serão adicionadas de forma mais ativa do que outras.
Eu, portanto, estou procurando conselhos sobre o que é a "melhor prática" para os índices de banco de dados. O que funciona bem para você?
Minha preferência pessoal é para a abordagem pró-ativa: com base em suas consultas, adicione índices onde necessário. Como você diz, em campos que estão envolvidos em JOINs ou WHEREs. Todo índice acelera as consultas de leitura, mas retarda as gravações (como todas as escritas precisam atualizar o índice). Assim, para a tabela intensiva em gravação, outras soluções (data-warehousing, replication.) Podem ser necessárias.
A outra abordagem, adicionando apenas índices onde o desempenho os exige, só é válida se você fizer um monitoramento ativo, mas mesmo assim tem algumas desvantagens:
Você terá que adicionar um índice a uma tabela que está sofrendo problemas de desempenho. Enquanto o índice está sendo adicionado, sua tabela está bloqueada - e é uma tabela muito usada! Muitas vezes, ao testar, os dados de teste são várias ordens de magnitude menores que os dados reais na aplicação. Os gargalos correm o risco de serem negligenciados.
Eu tentaria seguir estas diretrizes:
sempre tem uma boa chave primária / clustering - tipicamente uma IDENTIDADE INT - evite GUID ou grande composto PK / CK. Um bom e cuidadosamente escolhido PK / CK irá percorrer um longo caminho para ajudar no desempenho global. Para entender completamente o porquê, leia todas as postagens de blog da Kimberly Tripp sobre as escolhas principais de cluster.
indexe sempre todas as colunas da chave estrangeira - separadamente ou em conjunto com outras colunas que fazem sentido; Isso ajuda com o desempenho do JOIN.
além disso: menos é mais! Somente adicione índices se você precisar: assistir o sistema, perfilar sua carga de dados, ver qual é o desempenho, afinar, medir novamente. Se um índice ajudar - mantê-lo; Se um índice não for usado - jogue-o.
use o DMV à mão (o índice faltante DMV e os índices não utilizados do DMV) para ter uma idéia de quais índices podem ajudar e quais não estão sendo utilizados.
Você quer colocá-los apenas nessas colunas ou grupos de colunas que tenham muitas consultas contra eles. Você pode obter muitas estatísticas do SQL Server para ver quais consultas estão sendo executadas contra suas tabelas, e o SQL Server irá mesmo sugerir índices onde você não as possui.
Aqui está um bom link com algumas informações úteis e outros links para boas informações. Lista de verificação do índice SQL Server e dicas.
Não há uma resposta fácil para sua pergunta. Tudo se resume ao uso das tabelas. O monitoramento do uso da tabela indicará o que fazer.
selecione * de sys. dm_db_missing_index_details.
Conheça as suas visualizações de gerenciamento dinâmico.
também ... o que homedude está dizendo sobre "índices cobertos", certifique-se de que você entenda a diferença entre índices cobertos (SQL 2000) e índices com a cláusula INCLUDE (SQL 2005 e mais recente)
Um índice é melhor colocado em um valor tão único quanto possível. Por exemplo, é inútil colocar um índice em uma coluna onde 50% dessa coluna é o valor 'A', e outros 50% da coluna têm um valor 'B'.
Dessa forma, a tabela digitalizará pelo menos 50% dos registros antes de selecionar os valores certos.
Portanto, a melhor prática é colocar um índice nas colunas mais exclusivas e somente as colunas que são usadas para selecionar consultas.
exemplo: se você fosse criar uma seleção para um "Login" típico, você colocaria um índice na coluna "Nome de usuário", pois você se certifica de que o nome de usuário é exclusivo.
Ao criar índices, siga estas diretrizes:
Use índices em tabelas com inúmeras linhas, em colunas que são usadas na cláusula WHERE de consultas ou em associações de tabela e em colunas usadas nas consultas ORDER BY e GROUP BY. Evite os índices raramente utilizados em colunas atualizadas com freqüência. Além disso, evite ter muitos índices em uma tabela que é freqüentemente atualizada. Caso contrário, você aumenta desnecessariamente os tempos de inserção e atualização das suas consultas. Para melhorar o desempenho, minimize a largura total das colunas indexadas. Use índices agrupados e não agrupados adequadamente. Compreenda o objetivo de cada um e escolha o tipo correto para seu cenário. Use um índice de cobertura para reduzir o tempo de execução da consulta das instruções usadas com freqüência. Um índice de cobertura é um índice não agrupado que possui todas as colunas que entram em uma cláusula WHERE e na seleção da coluna de consulta.
QuantStart.
Junte-se ao portal de membros privados da Quantcademy que atende à comunidade de comerciantes de varejo de varejo em rápido crescimento. Você encontrará um grupo bem informado de mentalistas quant pronto para responder suas perguntas comerciais mais importantes.
Confira meu ebook sobre o comércio de quant, onde eu ensino você como criar estratégias de negociação sistemáticas lucrativas com ferramentas Python, desde o início.
Dê uma olhada no meu novo ebook sobre estratégias de negociação avançadas usando análise de séries temporais, aprendizado de máquina e estatísticas bayesianas, com Python e R.
Por Michael Halls-Moore em 19 de abril de 2013.
Neste artigo, quero apresentar-lhe os métodos pelos quais eu próprio identifico estratégias de negociação algorítmicas rentáveis. Nosso objetivo hoje é entender em detalhes como encontrar, avaliar e selecionar esses sistemas. Vou explicar como as estratégias de identificação são tanto sobre preferências pessoais quanto sobre o desempenho da estratégia, como determinar o tipo e a quantidade de dados históricos para o teste, como avaliar de forma imparcial uma estratégia de negociação e, finalmente, como avançar para a fase de backtesting e implementação estratégica.
Identificando suas próprias preferências pessoais para negociação.
Para ser um comerciante bem sucedido - de forma discricionária ou algorítmica - é necessário fazer-se algumas perguntas honestas. O Trading oferece a você a capacidade de perder dinheiro em uma taxa alarmante, por isso é necessário "conhecer você mesmo" tanto quanto é necessário entender a estratégia escolhida.
Eu diria que a consideração mais importante na negociação é estar ciente de sua própria personalidade. O comércio e o comércio algorítmico em particular, requer um grau significativo de disciplina, paciência e desapego emocional. Como você está deixando um algoritmo executar sua negociação para você, é necessário ser resolvido para não interferir com a estratégia quando está sendo executado. Isso pode ser extremamente difícil, especialmente em períodos de redução prolongada. No entanto, muitas estratégias que mostraram ser altamente rentáveis em um backtest podem ser arruinadas por uma simples interferência. Compreenda que se você deseja entrar no mundo da negociação algorítmica, você será testado emocionalmente e, para ser bem-sucedido, é necessário trabalhar com essas dificuldades!
A próxima consideração é uma das vezes. Você tem um emprego a tempo inteiro? Você trabalha a tempo parcial? Você trabalha em casa ou tem uma longa viagem diária? Essas perguntas ajudarão a determinar a freqüência da estratégia que você deve procurar. Para aqueles de você no emprego a tempo inteiro, uma estratégia de futuros intradiária pode não ser apropriada (pelo menos até que seja totalmente automatizada!). Suas restrições de tempo também ditarão a metodologia da estratégia. Se sua estratégia é freqüentemente negociada e dependente de feeds de notícias caras (como um terminal da Bloomberg), você terá claramente que ser realista sobre sua capacidade de executar com sucesso durante o escritório! Para aqueles de vocês com muito tempo, ou as habilidades para automatizar sua estratégia, você pode querer examinar uma estratégia mais técnica de negociação de alta freqüência (HFT).
Minha opinião é que é necessário realizar pesquisas contínuas sobre suas estratégias de negociação para manter um portfólio consistentemente lucrativo. Poucas estratégias permanecem "sob o radar" para sempre. Assim, uma parte importante do tempo atribuído à negociação será na realização de pesquisas em andamento. Pergunte a si mesmo se você está preparado para fazer isso, pois pode ser a diferença entre uma forte rentabilidade ou um declínio lento em relação a perdas.
Você também precisa considerar seu capital de negociação. O valor mínimo ideal geralmente aceito para uma estratégia quantitativa é de 50,000 USD (aproximadamente £ 35,000 para nós no Reino Unido). Se eu estivesse começando de novo, eu começaria com uma quantidade maior, provavelmente mais perto de 100,000 USD (aproximadamente £ 70,000). Isso ocorre porque os custos de transação podem ser extremamente caros para estratégias de média a alta freqüência e é necessário ter capital suficiente para absorvê-los em tempos de redução. Se você está considerando começar com menos de 10.000 USD, então você precisará se restringir a estratégias de baixa freqüência, negociando em um ou dois ativos, já que os custos de transação irão comer rapidamente em seus retornos. Interactive Brokers, que é um dos corretores mais amigáveis para aqueles com habilidades de programação, devido à sua API, tem uma conta de varejo mínima de 10.000 USD.
A habilidade de programação é um fator importante na criação de uma estratégia de negociação algorítmica automatizada. Estar bem informado em uma linguagem de programação como C ++, Java, C #, Python ou R permitirá que você crie o sistema de armazenamento de dados, o sistema de backtest e o sistema de execução de ponta a ponta. Isso tem uma série de vantagens, cujo chefe é a capacidade de estar completamente atento a todos os aspectos da infra-estrutura comercial. Também permite que você explore as estratégias de freqüência mais alta, pois você terá o controle total da sua "pilha de tecnologia". Embora isso signifique que você possa testar seu próprio software e eliminar erros, também significa mais tempo gasto na codificação de infra-estrutura e menos na implementação de estratégias, pelo menos na parte anterior da sua carreira de trading. Você pode achar que você está confortável negociando no Excel ou MATLAB e pode terceirizar o desenvolvimento de outros componentes. Eu não recomendaria isso no entanto, especialmente para aqueles que negociavam em alta freqüência.
Você precisa se perguntar o que você espera alcançar por meio de negociação algorítmica. Você está interessado em um rendimento regular, pelo qual você espera obter lucros de sua conta de negociação? Ou, você está interessado em um ganho de capital a longo prazo e pode se negociar sem a necessidade de retirar fundos? A dependência de renda determinará a freqüência de sua estratégia. As retiradas de renda mais regulares exigirão uma estratégia de negociação de maior freqüência com menor volatilidade (ou seja, uma proporção Sharpe mais alta). Os comerciantes de longo prazo podem pagar uma frequência comercial mais tranquila.
Finalmente, não se ilude com a noção de tornar-se extremamente rico num curto espaço de tempo! O comércio de Algo não é um esquema rápido e rápido - se alguma coisa pode ser um esquema rápido e rápido. É preciso disciplina, pesquisa, diligência e paciência importantes para serem bem-sucedidos no comércio algorítmico. Pode levar meses, senão anos, gerar rentabilidade consistente.
Sourcing Algorithmic Trading Ideas.
Apesar das percepções comuns em contrário, é realmente bastante direto localizar estratégias de negociação rentáveis no domínio público. Nunca as idéias comerciais estão mais disponíveis do que hoje. Revistas de finanças acadêmicas, servidores de pré-impressão, blogs comerciais, fóruns de negociação, revistas comerciais semanais e textos especializados fornecem milhares de estratégias de negociação com as quais basear suas idéias.
Nosso objetivo como pesquisadores quantitativos de negócios é estabelecer um pipeline estratégico que nos forneça um fluxo de idéias comerciais em andamento. Idealmente, queremos criar uma abordagem metódica para sourcing, avaliação e implementação de estratégias que encontramos. Os objetivos do pipeline são gerar uma quantidade consistente de novas idéias e fornecer-nos uma estrutura para rejeitar a maioria dessas idéias com o mínimo de consideração emocional.
Devemos ser extremamente cuidadosos para não permitir influências cognitivas na nossa metodologia de tomada de decisão. Isso pode ser tão simples como ter uma preferência por uma classe de ativos sobre outra (o ouro e outros metais preciosos vêm à mente) porque são percebidos como mais exóticos. Nosso objetivo sempre deve ser encontrar estratégias consistentemente lucrativas, com expectativas positivas. A escolha da classe de ativos deve basear-se em outras considerações, como restrições de capital de negociação, taxas de corretagem e capacidades de alavancagem.
Se você não está completamente familiarizado com o conceito de estratégia comercial, então o primeiro lugar a procurar é com os livros didáticos estabelecidos. Os textos clássicos fornecem uma ampla gama de idéias mais simples e diretas, para se familiarizarem com a negociação quantitativa. Aqui está uma seleção que eu recomendo para aqueles que são novos para negociação quantitativa, que gradualmente se tornam mais sofisticados enquanto você trabalha através da lista:
Para uma lista mais longa de livros de negociação quantitativos, visite a lista de leitura QuantStart.
O próximo lugar para encontrar estratégias mais sofisticadas é com fóruns de negociação e blogs comerciais. No entanto, uma nota de cautela: muitos blogs comerciais dependem do conceito de análise técnica. A análise técnica envolve a utilização de indicadores básicos e psicologia comportamental para determinar tendências ou padrões de reversão nos preços dos ativos.
Apesar de ser extremamente popular no espaço comercial geral, a análise técnica é considerada um pouco ineficaz na comunidade de finanças quantitativas. Alguns sugeriram que não é melhor que ler um horóscopo ou estudar folhas de chá em termos de seu poder preditivo! Na realidade, existem indivíduos bem-sucedidos que utilizam análises técnicas. No entanto, como quants com uma caixa de ferramentas matemática e estatística mais sofisticada à nossa disposição, podemos facilmente avaliar a eficácia de tais estratégias "baseadas em TA" e tomar decisões baseadas em dados, em vez de basear nossas em considerações ou preconceitos emocionais.
Aqui está uma lista de bem-respeitados blogs e fóruns de negociação algorítmica:
Depois de ter tido alguma experiência na avaliação de estratégias mais simples, é hora de olhar para as ofertas acadêmicas mais sofisticadas. Algumas revistas acadêmicas serão de difícil acesso, sem inscrições elevadas ou custos pontuais. Se você é um membro ou ex-aluno de uma universidade, você poderá obter acesso a algumas dessas revistas financeiras. Caso contrário, você pode olhar para os servidores de pré-impressão, que são repositórios de internet de rascunhos finais de documentos acadêmicos que estão sendo submetidos a revisão pelos pares. Uma vez que estamos apenas interessados em estratégias que possamos replicar com sucesso, fazer backtest e obter rentabilidade, uma revisão por pares é de menor importância para nós.
A principal desvantagem das estratégias acadêmicas é que muitas vezes podem estar desatualizadas, exigir dados históricos obscuros e dispendiosos, negociar classes de ativos ilíquidas ou não influenciar taxas, derrapagens ou propagação. Também não está claro se a estratégia de negociação deve ser realizada com ordens de mercado, ordens limitadas ou se contém perdas de parada, etc. Portanto, é absolutamente essencial replicar a estratégia o melhor que puder, fazer o backtest e adicionar uma transação realista custos que incluem tantos aspectos das classes de ativos que você deseja negociar.
Aqui está uma lista dos servidores de pré-impressão mais populares e revistas financeiras das quais você pode criar ideias:
E sobre como formar suas próprias estratégias quantitativas? Isso geralmente requer (mas não está limitado a) conhecimento em uma ou mais das seguintes categorias:
Microestrutura de mercado - Para estratégias de freqüência mais altas em particular, pode-se usar a microestrutura do mercado, ou seja, a compreensão da dinâmica do livro de pedidos, a fim de gerar rentabilidade. Diferentes mercados terão várias limitações tecnológicas, regulamentos, participantes do mercado e restrições que estão abertas à exploração através de estratégias específicas. Esta é uma área muito sofisticada e os profissionais de varejo terão dificuldade em ser competitivos neste espaço, particularmente porque a competição inclui fundos de hedge quantitativos grandes e bem capitalizados com fortes capacidades tecnológicas. Estrutura do fundo - Os fundos de investimento em conjunto, como fundos de pensão, parcerias de investimento privado (hedge funds), consultores de negociação de commodities e fundos de investimento, são limitados por uma forte regulamentação e suas grandes reservas de capital. Assim, certos comportamentos consistentes podem ser explorados com aqueles que são mais ágeis. Por exemplo, grandes fundos estão sujeitos a restrições de capacidade devido ao seu tamanho. Assim, se eles precisam rapidamente descarregar (vender) uma quantidade de valores mobiliários, eles terão que diminuí-lo para evitar "mover o mercado". Algoritmos sofisticados podem tirar proveito disso, e outras idiossincrasias, em um processo geral conhecido como arbitragem de estrutura de fundos. Aprendizado de máquinas / inteligência artificial - Os algoritmos de aprendizagem de máquinas tornaram-se mais prevalentes nos últimos anos nos mercados financeiros. Os classificadores (como Naive-Bayes, et al.) Correspondentes de função não-linear (redes neurais) e rotinas de otimização (algoritmos genéticos) foram todos usados para prever caminhos de ativos ou otimizar estratégias de negociação. Se você tem um histórico nesta área, você pode ter alguma visão sobre como determinados algoritmos podem ser aplicados a certos mercados.
Há, é claro, muitas outras áreas para investigar quants. Vamos discutir como apresentar estratégias personalizadas em detalhes em um artigo posterior.
Ao continuar monitorando essas fontes em uma base semanal, ou mesmo diária, você está se preparando para receber uma lista consistente de estratégias de uma variedade diversificada de fontes. O próximo passo é determinar como rejeitar um grande subconjunto dessas estratégias, a fim de minimizar o desperdício de seu tempo e os recursos de backtesting em estratégias que provavelmente não serão lucrativas.
Avaliando Estratégias de Negociação.
A primeira consideração, e indiscutivelmente mais óbvia, é se você realmente entende a estratégia. Você poderia explicar a estratégia de forma concisa ou exigir uma série de advertências e listas de parâmetros infinitas? Além disso, a estratégia tem uma base boa e sólida na realidade? Por exemplo, você poderia apontar alguma lógica comportamental ou restrição da estrutura do fundo que possa estar causando o (s) padrão (s) que você está tentando explorar? Esta restrição suportaria uma mudança de regime, como uma dramática perturbação do ambiente regulatório? A estratégia depende de regras estatísticas ou matemáticas complexas? Aplica-se a qualquer série de tempo financeiro ou é específico para a classe de ativos em que se afirma ser lucrativo? Você deve constantemente pensar nesses fatores ao avaliar novos métodos de negociação, caso contrário você pode desperdiçar uma quantidade significativa de tempo tentando fazer backtest e otimizar estratégias não lucrativas.
Uma vez que você tenha determinado que você entende os princípios básicos da estratégia, você precisa decidir se ele se encaixa com o seu perfil de personalidade acima mencionado. Esta não é uma consideração tão vaga quanto parece! As estratégias diferirão substancialmente em suas características de desempenho. Existem certos tipos de personalidade que podem lidar com períodos mais significativos de redução ou estão dispostos a aceitar um maior risco de retorno maior. Apesar do fato de que nós, como quants, tentamos eliminar todo o viés cognitivo possível e devemos avaliar uma estratégia de forma imparcial, os preconceitos sempre entrarão. Por isso, precisamos de um meio consistente e sem emoção para avaliar o desempenho das estratégias . Aqui está a lista de critérios que eu julgo uma nova estratégia potencial por:
Metodologia - O impulso da estratégia está baseado, o retorno médio, o mercado neutro, direcional? A estratégia baseia-se em técnicas de aprendizado estatístico ou de máquinas complexas (ou complexas) que são difíceis de entender e exigem um doutorado em estatísticas para entender? Essas técnicas introduzem uma quantidade significativa de parâmetros, o que pode levar a um viés de otimização? A estratégia é susceptível de suportar uma mudança de regime (ou seja, uma nova regulamentação potencial dos mercados financeiros)? Sharpe Ratio - O índice de Sharpe caracteriza heuristicamente o índice de recompensa / risco da estratégia. Quantifica quanto retorno você consegue para o nível de volatilidade sofrido pela curva patrimonial. Naturalmente, precisamos determinar o período e a frequência em que esses retornos e volatilidade (ou seja, o desvio padrão) são medidos. Uma estratégia de freqüência mais alta exigirá maior taxa de amostragem do desvio padrão, mas um período de tempo geral mais curto, por exemplo. Alavancagem - A estratégia exige alavancagem significativa para ser lucrativa? A estratégia exige o uso de contratos de derivativos alavancados (futuros, opções, swaps) para fazer um retorno? Estes contratos alavancados podem ter uma forte volatilidade e, portanto, podem facilmente levar a chamadas de margem. Você tem o capital comercial e o temperamento para essa volatilidade? Frequência - A frequência da estratégia está intimamente ligada à sua pilha de tecnologia (e, portanto, à experiência tecnológica), ao índice Sharpe e ao nível geral dos custos de transação. Todas as outras questões consideradas, as estratégias de maior freqüência requerem mais capital, são mais sofisticadas e difíceis de implementar. No entanto, assumindo que seu mecanismo de teste de backtest é sofisticado e livre de erros, eles geralmente terão taxas Sharpe muito maiores. Volatilidade - A volatilidade está fortemente relacionada ao "risco" da estratégia. A relação Sharpe caracteriza isso. A maior volatilidade das classes de ativos subjacentes, se não coberta, muitas vezes leva a uma maior volatilidade na curva patrimonial e, portanto, menores índices de Sharpe. Naturalmente, suponho que a volatilidade positiva seja aproximadamente igual à volatilidade negativa. Algumas estratégias podem ter maior volatilidade negativa. Você precisa estar ciente desses atributos. Ganhe / Perda, Lucro / Perda Médio - As estratégias serão diferentes nas suas ganhos / perdas e características médias de lucro / perda. Pode-se ter uma estratégia muito lucrativa, mesmo que o número de negócios perdidos exceda o número de negociações vencedoras. As estratégias de impulso tendem a ter esse padrão, pois dependem de um pequeno número de "grandes sucessos" para serem lucrativos. As estratégias de reversão média tendem a ter perfis opostos onde mais dos negócios são "vencedores", mas os negócios perdidos podem ser bastante graves. Drawdown máximo - A redução máxima é a maior queda percentual global na curva de equidade da estratégia. As estratégias de Momentum são bem conhecidas por sofrerem períodos de redução prolongada (devido a uma série de muitos negócios perdidos incrementais). Muitos comerciantes vão desistir em períodos de redução prolongada, mesmo que os testes históricos sugeriram que este é "business as usual" para a estratégia. Você precisará determinar qual porcentagem de redução (e em que período de tempo) você pode aceitar antes de deixar de negociar sua estratégia. Esta é uma decisão altamente pessoal e, portanto, deve ser considerada com cuidado. Capacidade / liquidez - No nível de varejo, a menos que você esteja negociando em um instrumento altamente ilíquido (como um estoque de pequena capital), você não terá que se preocupar muito com a capacidade da estratégia. A capacidade determina a escalabilidade da estratégia para aumentar o capital. Muitos dos maiores hedge funds sofrem de importantes problemas de capacidade à medida que suas estratégias aumentam em alocação de capital. Parâmetros - Certas estratégias (especialmente aquelas encontradas na comunidade de aprendizagem de máquinas) requerem uma grande quantidade de parâmetros. Todo parâmetro adicional que uma estratégia exige deixa-o mais vulnerável ao viés de otimização (também conhecido como "ajuste de curva"). Você deve tentar segmentar estratégias com o menor número possível de parâmetros ou garantir que você tenha quantidades suficientes de dados para testar suas estratégias. Benchmark - Quase todas as estratégias (a menos que sejam caracterizadas como "retorno absoluto") são medidas em relação a um benchmark de desempenho. O benchmark geralmente é um índice que caracteriza uma grande amostra da classe de ativos subjacentes em que a estratégia negocia. Se a estratégia negociar ações americanas de grande capitalização, o S & P500 seria uma referência natural para medir sua estratégia. Você ouvirá os termos "alfa" e "beta", aplicado a estratégias deste tipo. Vamos discutir esses coeficientes em profundidade em artigos posteriores.
Observe que não discutimos os retornos reais da estratégia. Por que é isso? De forma isolada, os retornos realmente nos fornecem informações limitadas sobre a eficácia da estratégia. Eles não lhe dão uma visão de alavancagem, volatilidade, benchmarks ou requisitos de capital. Assim, as estratégias raramente são avaliadas apenas em seus retornos. Considere sempre os atributos de risco de uma estratégia antes de analisar os retornos.
Nesta fase, muitas das estratégias encontradas em seu pipeline serão rejeitadas, uma vez que não atenderão aos requisitos de capital, alavancar restrições, tolerar a tolerância máxima ou preferências de volatilidade. As estratégias que permanecem podem agora ser consideradas para testes anteriores. No entanto, antes disso é possível, é necessário considerar um critério de rejeição final - o dos dados históricos disponíveis para testar essas estratégias.
Obtenção de dados históricos.
Hoje em dia, a amplitude dos requisitos técnicos em todas as classes de ativos para o armazenamento histórico de dados é substancial. Para se manter competitivo, tanto o lado da compra (fundos) como os de venda (bancos de investimento) investem fortemente em sua infraestrutura técnica. É imperativo considerar sua importância. Em particular, estamos interessados em requisitos de tempo, precisão e armazenamento. Agora vou descrever os conceitos básicos de obtenção de dados históricos e como armazená-lo. Infelizmente, este é um tópico muito profundo e técnico, então não poderei dizer tudo neste artigo. No entanto, vou escrever muito mais sobre isso no futuro, já que minha experiência na indústria anterior no setor financeiro estava principalmente preocupada com aquisição, armazenamento e acesso de dados financeiros.
Na seção anterior, estabelecemos um pipeline de estratégia que nos permitiu rejeitar certas estratégias com base em nossos próprios critérios de rejeição pessoal. Nesta seção, vamos filtrar mais estratégias com base em nossas próprias preferências para obter dados históricos. As principais considerações (especialmente no nível do profissional varejista) são os custos dos dados, dos requisitos de armazenamento e do seu nível de experiência técnica. Também precisamos discutir os diferentes tipos de dados disponíveis e as diferentes considerações que cada tipo de dados nos impõe.
Vamos começar discutindo os tipos de dados disponíveis e os principais problemas sobre os quais devemos pensar:
Dados fundamentais - Isso inclui dados sobre tendências macroeconômicas, como taxas de juros, índices de inflação, ações corporativas (dividendos, estoque-divisões), registros da SEC, contas corporativas, números de ganhos, relatórios de culturas, dados meteorológicos etc. Esses dados são freqüentemente usados para valorizar as empresas ou outros ativos em uma base fundamental, ou seja, por meio de alguns fluxos de caixa futuros esperados. Não inclui séries de preços de ações. Alguns dados fundamentais estão disponíveis gratuitamente nos sites do governo. Outros dados fundamentais históricos de longo prazo podem ser extremamente caros. Os requisitos de armazenamento geralmente não são particularmente grandes, a menos que milhares de empresas estejam sendo estudadas de uma só vez. Dados de notícias - Os dados de notícias são geralmente de natureza qualitativa. Consiste em artigos, postagens de blog, postagens de microblog ("tweets") e editoriais. As técnicas de aprendizagem de máquinas, como os classificadores, costumam ser usadas para interpretar o sentimento. Esses dados também são freqüentemente disponíveis gratuitamente ou baratos, por meio da assinatura de meios de comunicação. Os bancos de dados de armazenamento de documentos "NoSQL" mais novos foram projetados para armazenar esse tipo de dados qualitativos não estruturados. Dados do preço do recurso - Este é o domínio de dados tradicional do quant. Consiste em séries temporais de preços dos ativos. As ações (ações), produtos de renda fixa (títulos), commodities e preços de câmbio se enquadram nesta classe. Os dados históricos diários são geralmente simples de obter para as classes de ativos mais simples, como ações. No entanto, uma vez que a precisão e a limpeza estão incluídas e os preconceitos estatísticos removidos, os dados podem se tornar caros. Além disso, os dados das séries temporais geralmente possuem requisitos de armazenamento significativos, especialmente quando os dados intradiários são considerados. Instrumentos Financeiros - Ações, títulos, futuros e opções derivadas mais exóticas possuem características e parâmetros muito diferentes. Assim, não existe uma estrutura de banco de dados "tamanho único" que possa acomodá-los. Deve ser dado um cuidado significativo à concepção e implementação de estruturas de banco de dados para vários instrumentos financeiros. Vamos discutir a situação ao longo de quando chegamos a construir um banco de dados mestre de valores mobiliários em futuros artigos. Frequência - Quanto maior a frequência dos dados, maiores são os custos e os requisitos de armazenamento. Para estratégias de baixa frequência, os dados diários são frequentemente suficientes. Para estratégias de alta freqüência, pode ser necessário obter dados de nível de tiquetaque e até mesmo cópias históricas de determinados dados de cadastro de trocas comerciais. A implementação de um mecanismo de armazenamento para esse tipo de dados é muito tecnicamente intensiva e só é adequada para aqueles que possuem uma sólida base de programação / técnica. Pontos de referência - As estratégias descritas acima serão muitas vezes comparadas a uma referência. Isso geralmente se manifesta como uma série de tempo financeiro adicional. Para as ações, isso geralmente é um benchmark de estoque nacional, como o índice S & P500 (US) ou FTSE100 (Reino Unido). Para um fundo de renda fixa, é útil comparar-se com uma cesta de títulos ou produtos de renda fixa. A "taxa livre de risco" (ou seja, a taxa de juros apropriada) também é outra referência amplamente aceita. Todas as categorias de classe de ativos possuem um benchmark favorecido, por isso será necessário pesquisar isso com base em sua estratégia específica, se desejar ganhar interesse em sua estratégia externamente. Tecnologia - As pilhas de tecnologia por trás de um centro de armazenamento de dados financeiros são complexas. Este artigo apenas pode arranhar a superfície sobre o que está envolvido na construção de um. No entanto, ele se centra em torno de um mecanismo de banco de dados, como um Sistema de Gerenciamento de Banco de Dados Relacional (RDBMS), como MySQL, SQL Server, Oracle ou um Document Storage Engine (ou seja, "NoSQL"). Isso é acessado através do código de aplicativo "lógica comercial" que consulta o banco de dados e fornece acesso a ferramentas externas, como MATLAB, R ou Excel. Muitas vezes, esta lógica de negócios está escrita em C ++, C #, Java ou Python. Você também precisará hospedar esses dados em algum lugar, seja em seu próprio computador pessoal, seja remotamente através de servidores de internet. Produtos como o Amazon Web Services tornaram isso mais simples e barato nos últimos anos, mas ainda exigirá conhecimentos técnicos significativos para alcançar de forma robusta.
Como pode ser visto, uma vez que uma estratégia tenha sido identificada através do pipeline, será necessário avaliar a disponibilidade, os custos, a complexidade e os detalhes de implementação de um determinado conjunto de dados históricos. Você pode achar que é necessário rejeitar uma estratégia baseada unicamente em considerações de dados históricos. Esta é uma grande área e equipes de doutorados trabalham em grandes fundos garantindo que os preços sejam precisos e oportunos. Não subestime as dificuldades de criar um centro de dados robusto para os seus efeitos de backtesting!
Eu quero dizer, no entanto, que muitas plataformas de backtesting podem fornecer esses dados para você automaticamente - a um custo. Assim, demorará muito da dor de implementação para você, e você pode se concentrar exclusivamente na implementação e otimização da estratégia. Ferramentas como a TradeStation possuem essa capacidade. No entanto, minha visão pessoal é implementar o máximo possível internamente e evitar a terceirização de partes da pilha para fornecedores de software. Eu prefiro estratégias de freqüência mais altas devido aos seus índices de Sharpe mais atraentes, mas muitas vezes estão fortemente acoplados à pilha de tecnologia, onde a otimização avançada é crítica.
Agora que discutimos os problemas relacionados aos dados históricos, é hora de começar a implementar nossas estratégias em um mecanismo de teste. Este será o assunto de outros artigos, pois é uma área de discussão igualmente grande!
Apenas iniciando o comércio quantitativo?
3 razões para se inscrever na QuantStart List:
1. Quant Trading Lessons.
Você terá acesso instantâneo a um curso gratuito de 10 partes, com sugestões e dicas para ajudá-lo a começar a negociação quantitativa!
2. Todo o conteúdo mais recente.
Todas as semanas, vou enviar-lhe um envoltório de todas as atividades no QuantStart para que você nunca mais perca uma postagem novamente.
Real, dicas de negociação viáveis, sem tonturas.
Usando a análise de dados do SQL Server para estratégias de negociação de estoque.
Por: Rick Dobson | Leia comentários (2) | Dicas relacionadas: 1 | Mais> T-SQL.
Nosso negócio administra um serviço de consultoria de ações. Alguns de nossos clientes trocam nossas ações recomendadas em uma perda comprando a um preço alto e vendendo a um preço baixo. Precisamos de modelos de negociação muito simples com resultados comparativos para mostrar aos clientes como eles podem aumentar o valor de suas contas de investimento com nossas escolhas de estoque.
A mineração de dados - especialmente o pré-processamento, análise preliminar de dados e etapas de relatórios - pode ser muito útil para resolver seu problema. Esta dica examina seis ações, como as que podem ser recomendadas pela sua empresa, para apresentar o resultado de três estratégias comerciais diferentes. As estratégias de negociação de ações são propositadamente simples para que possam ser prontamente programadas com o T-SQL, além de serem entendidas pelos seus clientes comerciais. Todas as estratégias cobertas são consistentes com mostrar aos clientes como eles podem aumentar o valor de suas contas de investimento.
Os dados de origem da dica são os preços das ações do site Google Finance. Estes dados estão disponíveis gratuitamente. A dica ilustra como baixar os preços das ações nos arquivos csv. Em seguida, os dados são transferidos para tabelas do SQL Server.
Depois de transferir os dados do preço de estoque para um banco de dados do SQL Server, eles são pré-processados para torná-los adequados para examinar como cada uma das três estratégias de negociação de ações atua. Uma estratégia de negociação de ações depende das médias móveis para os preços das ações. Esta dica inclui uma explicação simples das médias móveis, bem como uma maneira fácil de computá-las para obter dados sobre os preços das ações.
O elemento da ponta final compara ganhos e perdas das três estratégias de negociação. As comparações são para as seis ações individualmente e em geral. As comparações são calculadas numa base por ação, bem como base de lotes compartilhados. Um lote de ações é um conjunto de ações para um estoque que é comprado e vendido como uma unidade.
Baixando os dados do site Google Finance.
Você pode baixar o preço e o volume histórico de fim de dia de um estoque no site do Google Finance. Basta inserir um URL com parâmetros, incluindo o símbolo do estoque, bem como as datas de início e término para o intervalo de dados que você procura. Você também precisa especificar o formato de saída. Seu navegador, como o Chrome ou o Internet Explorer, recuperará os preços e os volumes diários de ações em um arquivo em seu computador.
O seguinte URL especifica a recuperação de dados históricos de preço e volume para um estoque com o símbolo crus. Os dados começam a partir do primeiro dia de negociação em ou após 1º de janeiro de 2008 até o último dia de negociação para o qual os dados estão disponíveis até 31 de agosto de 2016. O download foi feito durante a manhã em 24 de agosto de 2016. O Google Finance O site automaticamente nomeia o arquivo baixado com o símbolo especificado no URL (por exemplo, crus. csv).
Aqui está uma captura de tela do Excel que mostra as 20 primeiras linhas de dados no arquivo csv chamado crus. csv. Observe que há uma linha separada para cada dia de negociação que termina em 23 de agosto de 2016, o último dia de negociação para o qual os dados do fim do dia estavam disponíveis. Além da coluna Data, existem quatro colunas que especificam valores de dinheiro (Abrir, Alto, Baixo, Fechar) e uma quinta coluna mostra ações negociadas em uma data para o estoque designado pelo símbolo. Enquanto o Excel transforma automaticamente os dados de caracteres no arquivo crus. csv para a data e valores numéricos, é importante ter em mente que os dados no arquivo csv são dados de caracteres.
Os dados para seis símbolos de estoque foram baixados para esta dica. As seguintes balas mostram e os símbolos juntamente com os nomes das empresas correspondentes e descrições curtas. Você pode ver as descrições de que a grande diversidade está prontamente disponível. Crus é para a Cirrus Logic, Inc. A empresa fornece circuitos para aplicações de consumo e energia para consumo, automotivo e profissional edu é para New Oriental Education & amp; Tech Grp (ADR). Este símbolo representa um ADR para New Oriental Education & amp; Grupo de Tecnologia - uma empresa que opera na China, que é fornecedora de serviços educacionais privados. Um ADR é um estoque que negocia nos Estados Unidos, mas representa um número especificado de ações em uma empresa estrangeira. O encontro é para MeetMe, Inc. A empresa disponibiliza redes sociais para conhecer pessoas novas nos EUA e na América Latina orly é para O 'Reilly Automotive Inc, um varejista de peças e acessórios automotivos, é para Stamps, um fornecedor de serviços de envio e envio de internet ulta é para Ulta Salon, Cosmetics & amp; Fragrance, Inc. Esta empresa vende produtos cosméticos, perfumes, pele e cabelos, produtos, eletrodomésticos e acessórios. A empresa também oferece serviços de cabeleireiro e tratamentos de spa.
Migrando os arquivos csv para as tabelas do SQL Server.
Esta dica cria as tabelas para armazenar o conteúdo do arquivo csv em um banco de dados chamado stock_history_data. Em seguida, ele preenche as tabelas do SQL Server a partir dos arquivos csv baixados - uma tabela por arquivo. O código fornecido para a dica não funcionará como está, a menos que você tenha o banco de dados stock_history_data criado em sua instância do SQL Server. Se você não possui o banco de dados em seu servidor, executar o script a seguir pode criar o banco de dados.
Como os dados nos arquivos csv são baseados em caracteres, você deve transformá-los antes de usá-los como datas, dinheiro ou inteiros no SQL Server. Existem várias maneiras de realizar as transformações. Uma dica anterior que trabalha com os preços históricos do índice S & P 500 (Criando um Relatório Sparkline da Matriz SSRS com Dados da Oracle 11g) descreve uma abordagem na qual os dados são importados para o SQL Server como dados de caracteres e depois transformados por funções T-SQL até a data , dinheiro ou valores inteiros. Esta dica demonstra como usar recursos de transformação SSIS embutidos para converter os dados em um tipo de dados apropriado.
A captura de tela a seguir mostra uma visão do fluxo de controle do projeto SSIS para a mineração de dados, os dados do preço da ação baixados do site do Google Finance. Alguns textos de anotação e duas etapas são destacados. O conteúdo destacado é para importar os dados baixados para o SQL Server.
Além disso, existem 7 gerentes de conexão exibidos abaixo da área de fluxo de controle. Um é e o gerenciador de conexões OLEDB apontando para o banco de dados stock_history_data Seis são para gerentes de conexão de arquivos planos que apontam para os arquivos csv baixados.
A captura de tela a seguir mostra o T-SQL na tabela create orly ohlcv Execute SQL Task dentro do pacote de sequências de tabelas Ohlcv. Existem seis etapas de Execute SQL Task no contêiner - uma para cada tabela para receber dados baixados de um arquivo csv. Todas as tabelas têm a mesma especificação, exceto o nome do símbolo.
Quando você abre um gerenciador de conexão de arquivo plano para o arquivo orly. csv, o SSIS vê automaticamente os códigos de caracteres UTF-8 enviados do site do Google Finance e designa a página do Código Microsoft 65001 para ler os códigos de personagem. Ele também espera cabeçalhos de coluna na primeira linha, que corresponde ao formato baixado. Portanto, nenhuma alteração é necessária para a guia Geral padrão que aparece abaixo (além de atribuir um nome de gerenciador de conexão).
Esta dica usa configurações na guia Avançado para indicar os tipos de dados SSIS para ler os dados do arquivo csv de forma adequada para transferi-los para tipos de dados em tabelas do SQL Server. Três formatos distintos são designados como indicado nas capturas de tela abaixo. O tipo de dados DT_DBTIMESTAMP pode ler caracteres de data UTF-8 O tipo de dados DT_CY pode ler campos de caracteres UTF-8 que representam dinheiro; essa designação de tipo de dados é apropriada para as colunas Open, High, Low e Close nos arquivos csv O tipo de dados DT_I8 pode ler campos de caracteres UTF-8 que representam inteiros que estão indo para uma coluna com um tipo de dados bigint em uma tabela do SQL Server .
Com a exceção dos dados para o símbolo orly, o conteúdo do arquivo csv para os estoques importados com sucesso para as tabelas do SQL Server. No entanto, os dados para o símbolo orly não foram carregados com sucesso na primeira tentativa. Depois de examinar os registros SSIS e os dados baixados no Notepad ++, descobriu-se que as colunas selecionadas nos dados orly para três datas (24 de novembro de 2010, 23 de dezembro de 2010 e 29 de dezembro de 2010) foram especificadas incorretamente.
Veja a tela abaixo para visualizar do Notepad ++ os dados defeituosos no arquivo orly. csv. Observe que os dados incorretos foram para as colunas Open, High e Low. Os dados dos valores da coluna Data e Fechar apareceram válidos, mas os dados para a coluna Volume não apareceram válidos. No entanto, esta dica só requer valores de coluna de Data e Fechar válidos.
Foram os dados ruins para as colunas Open, High e Low que causaram a importação dos dados do arquivo orly. csv para falhar inicialmente. Você pode ignorar a falha configurando as configurações dentro da Origem do Arquivo Flat para o passo cly de orly para atribuir valores NULL a colunas com dados inválidos durante o processo de importação. A captura de tela a seguir mostra as configurações de falha Ignore para as colunas Open, High e Low no arquivo orly. csv. Com essas mudanças de configuração na guia Saída de erro da Origem Flat File for orly csv, foi possível carregar o arquivo orly. csv juntamente com os dados baixados para os outros cinco símbolos.
Pré-processamento dos dados importados para avaliações da estratégia de negociação.
Até este ponto, os dados importados existem em seis tabelas separadas com datas que retornam à primeira data de negociação em 2008 ou sempre que o site do Google Finance começou a informar os preços das ações de um símbolo. Além das variações na data de início para diferentes símbolos, às vezes notei datas com linhas de dados para um símbolo que faltava para outros símbolos. Para os seis símbolos de estoque utilizados nesta dica, essas datas faltantes foram muito raras e limitadas aos dados anteriores a 2011. Os dados em falta não são relevantes para esta dica porque as regras de negociação de ações foram comparadas apenas para estratégias de negociação na janela de 25 meses de Julho de 2014 até julho de 2016.
Além disso, aos filtros de pré-processamento para o intervalo de datas, outro pré-processamento foi implementado. Os dados foram consolidados a partir de seis tabelas separadas sem um indicador de símbolo em uma tabela com um indicador de símbolo distinto para cada estoque. Esta etapa facilita a avaliação das estratégias de negociação em todas as seis ações. Além disso, as médias móveis de 10 dias e 30 dias foram calculadas a partir dos dados do preço base do estoque. As médias móveis são uma ferramenta de análise técnica comum para analisar tendências de estoque. A média móvel de 10 dias reflete tendências a curto prazo e a média móvel de 30 dias reflete tendências a mais longo prazo.
O seguinte script T-SQL mostra o código para selecionar dados da tabela crus, adicionando uma coluna de símbolos e calculando médias móveis de 10 dias e 30 dias. Este link compara 6 métodos diferentes para calcular uma soma em uma janela rolante, como 10 dias ou 30 dias. O método com o melhor desempenho usou uma versão personalizada da função SUM que dependia das palavras-chave PRECEDING e CURRENT ROW. O código a seguir ilustra uma adaptação do melhor método para calcular médias móveis em vez de somas em uma janela rotativa.
A captura de tela a seguir exibe um excerto do conjunto de resultados para o script anterior. A coluna mav_10 mostra valores de média móvel de 10 dias e a coluna mav_30 revela valores médios móveis de 30 dias. Observe que os valores para essas colunas não começam até a décima e trigésima linha, respectivamente. Isso ocorre porque uma média móvel de 10 dias requer pelo menos 10 dias anteriores de valores e uma média móvel de 30 dias requer pelo menos 30 dias de valores anteriores. Rolling windows determina quais datas contribuem para os valores da média móvel em cada linha.
O passo chamado criar stocks_ohlcv_with_mav_10_30 tabela com histórico de estoque consolidado e adicionar mav_10 e mav_30 no diagrama de fluxo de controle exibido na segunda captura de tela dentro desta dica inclui o script completo para filtragem de data, consolidação, somando símbolos e computação de médias móveis. O passo armazena seu resultado na tabela stocks_ohlcv_with_mav_10_30.
Existem 525 dias de negociação de ações de julho de 2014 a julho de 2016. Para os seis estoques examinados dentro desta dica, isso significa que existem 3150 linhas na tabela stocks_ohlcv_with_mav_10_30. A seguinte captura de tela mostra as primeiras 31 linhas na tabela. Como os dados são organizados por data dentro do símbolo, essas linhas são para os 31 dias de negociação mais antigos para o símbolo crus. Como as médias móveis são calculadas em valores que se remontam até 2008, não há valores NULL para as médias móveis de 10 dias ou 30 dias.
Três regras de negociação.
Antes de passar para a etapa de pré-processamento final para os dados sobre os preços das ações, será útil rever as três estratégias de negociação avaliadas nesta dica. Lembre-se que o objetivo é avaliar regras de negociação simples porque queremos que as regras sejam facilmente compreendidas pelos clientes do serviço de assessoria de ações. Além disso, buscamos regras que são seguras para o comércio - de modo que os ganhos de preço das ações aumentem se os preços das ações subirem ao longo de um período de avaliação (vamos encontrar alguns exemplos em que um comércio pode perder dinheiro, mesmo quando o preço das ações está aumentando ao longo de um período de avaliação período prolongado). Esta dica avalia estratégias de negociação para o período de 25 meses de julho de 2014 a julho de 2016. Além disso, precisamos de regras que possam ser facilmente comparadas entre si. As regras examinadas nesta dica são mais como benchmarks para contrastar estilos de negociação que recomendações precisas sobre como negociar ações.
As três regras de negociação avaliadas por esta dica são as seguintes. A regra geral de compra e retenção compra ações para uma ação no preço aberto do primeiro dia de negociação em julho de 2014 e vende essas ações no preço de encerramento no último dia de negociação em julho de 2016. A regra mensal de compra e retenção compra ações para uma ação no preço aberto por cada mês de julho de 2014 a julho de 2016. No último dia de negociação de cada mês, a regra vende as ações compradas no início do mês. A estratégia condicional de compra e retenção compra ações para um estoque somente quando a tendência de preços de curto prazo no início do mês como indicado pela média móvel de 10 dias é maior do que a tendência de longo prazo como indicado pela média móvel de 30 dias. Caso contrário, nenhuma compra é feita para estoque durante o mês. Para manter o código simples para esta comparação de regras de negociação, assumimos que você conhece os valores da média móvel de 10 dias e 30 dias para o primeiro dia de negociação do mês no início do primeiro dia do mês.
Os planos de negociação são comparados com uma variação do preço da ação, bem como uma grande base de variação de preço. A variação do preço da ação é calculada com base na diferença entre o preço aberto na primeira negociação por um período versus o preço Fechar no último dia de um período. Se o preço Close for maior do que o preço Open, então a regra gera um ganho. Caso contrário, a regra se rompe ou perde dinheiro. Os dias de início e final mudam de uma regra para a próxima. Para a regra de compra e retenção, há apenas uma data de início e uma data de término. A data de início é o primeiro dia de negociação no início de julho de 2014. A data de término é o último dia de negociação de julho de 2016. Para a regra mensal de compra e retenção, há data de início e data de término para cada um dos 25 meses de De julho de 2014 a julho de 2016. Dentro de cada mês, a data de início é sempre o primeiro dia de negociação do mês e a data final é sempre o último dia de negociação do mês. Para a regra condicional de compra e retenção, há uma variável Número de meses em que as ações podem ser compradas e vendidas. As ações só são compradas nos meses em que a média móvel de 10 dias é maior do que a média móvel de 30 dias no início do mês. Se houver uma compra de ações no início de um mês com esta regra, então o preço de fechamento é para o último dia de negociação no mês. Recorde que o termo lote refere-se à cobrança de ações compradas durante uma negociação. O tamanho do lote do termo indica o número de ações compradas ao mesmo tempo. Para avaliação no contexto desta dica, o tamanho do lote para a regra de compra e retenção mensal é o número de ações compradas (arredondadas para as 10 ações mais próximas) para que o preço mensal médio seja de US $ 4.000 ou um pouco mais. O tamanho do lote varia de um estoque para o outro dentro de um mês. Os tamanhos de lote calculados para a regra de compra e retenção mensal também são usados para a regra de compra e retenção condicional. A regra geral de compra e retenção usa o tamanho de lote de compra e retenção mensal de julho de 2014 para sua primeira compra . Porque no final de 25 meses você vende as ações adquiridas na compra inicial com a regra geral de compra e retenção, o tamanho do lote vendido em julho de 2016 é o mesmo que as ações compradas em julho de 2014. A compra e retenção condicional A regra usa os tamanhos de lote de compra e retenção mensais. A única diferença é que durante meses em que a média móvel inicial de 10 dias é menor ou igual à média móvel inicial de 30 dias, não há compras e vendas de estoque.
A tabela para avaliar as regras de negociação.
Esta dica usa a tabela data_for_trading_rules para armazenar dados em um formato que simplifica a computação de ganhos e perdas mensalmente. A próxima captura de tela mostra as primeiras 25 linhas da tabela data_for_trading_rules. Observe que todas as 25 linhas são para o símbolo crus. As primeiras três colunas indicam o símbolo eo período de tempo para o resto dos dados em uma linha. As colunas de primeiro dia e último dia não são estritamente necessárias, mas eles fornecem uma maneira de confirmar visualmente que essas datas estão dentro do ano e mês para a linha O Aberto coluna indica o preço aberto no primeiro dia de negociação do mês para a linha As colunas mav_10_first_day e mav_30_day exibem a média móvel de 10 dias e 30 dias no primeiro dia de negociação do mês. A coluna Fechar revela o preço de fechamento na última dia de negociação do mês.
Todos os dados que você precisa para avaliar as regras de negociação mensal e condicional de compra e suspensão estão em uma linha da tabela data_for_trading_rules. Por exemplo, o valor da coluna Fechar, menos o valor da coluna Abrir indica o ganho ou perda por ação para o mês com a regra de compra e retenção mensal. A regra condicional de compra e retenção usa apenas a diferença entre os valores de coluna Fechar e Abrir durante meses em que a média móvel de 10 dias é maior do que a média móvel de 30 dias. Ao somar o ganho ou a perda por cada mês em que houve um comércio, você pode obter o ganho ou a perda em todos os 25 meses para os quais os preços das ações são rastreados.
Para a regra geral de compra e retenção, você precisa de duas linhas da tabela data_for_trading_rules para avaliar o ganho ou perda para a regra de negociação. A diferença entre o preço Fechar de julho de 2016, menos o preço aberto para julho de 2014, retorna o ganho ou perda de estoque. Assim como as regras mensais, você calcula esse valor separadamente para cada estoque.
O script a seguir mostra o script T-SQL para computar a tabela data_for_trading_rules. O script contém duas consultas de tabela derivadas. A consulta da tabela derivada first_day_data retorna o preço Open juntamente com as médias móveis de 10 dias e 30 dias para o primeiro dia de negociação de cada mês. A consulta da tabela derivada last_day_data retorna o preço Close para o último dia de negociação de cada mês. Uma sub-consulta Dentro das consultas de tabela derivadas first_day_data e last_day_data permite que as consultas retornem os dados apenas no primeiro ou último dia em um mês a partir da tabela stocks_ohlcv_with_mav_10_30. As duas consultas de tabela derivada são incorporadas internamente com base em SÍMBOLO, ANO e MÊS para colocar preços de abertura e fechamento na mesma linha da tabela data_for_trading_rules A cláusula INTO imediatamente antes da cláusula FROM na consulta externa principal preenche a tabela data_for_trading_rules.
Avaliando as regras de negociação.
Três relatórios SSRS são fornecidos como um modelo para avaliar as regras de negociação com os seis estoques examinados nesta dica. Os resultados resumidos não incluem custos de negociação porque as comissões por comércio podem variar (ou mesmo ser zero em alguns casos), dependendo do corretor e da segurança em que você investir. No entanto, se você planeja usar um corretor particular com uma taxa padrão por troca, você pode querer considerar uma comissão de corretor.
O primeiro relatório é um relatório de linha superior que compara as três estratégias de negociação para o ganho versus perda em uma base por ação e uma base de muito tamanho. Como mostra a tela abaixo, as três estratégias de negociação geraram ganhos ao longo do período de avaliação de 25 meses para cada uma das ações e, em geral. A estratégia de compra e retenção eliminou a regra de compra e venda mensalmente (ganho global de US $ 22.964 para compra e retenção contra US $ 22.950 para comprar e vender todos os meses). A estratégia de negociação baseada na média móvel de 10 dias em relação à média móvel de 30 dias gerou os maiores ganhos por uma margem substancial. Mostramos por que esse resultado é obtido nos próximos dois relatórios.
Como você pode ver, existem 8 colunas no corpo do relatório de topo. A consulta para o relatório começa com uma instrução SELECT que faz referência a duas principais consultas de tabela derivada - cada uma das quais possui suas próprias sub-consultas. A listagem abaixo mostra apenas a consulta mais externa e as referências às principais consultas de tabela derivadas, de modo que você não está distraído por detalhes de obter uma imagem geral sobre como o relatório compila dados. Se desejar, você pode examinar a consulta completa para a comparação da linha superior do relatório de estratégias de negociação no projeto SSRS disponível para download com esta dica. Uma consulta derivada principal gera dados resumidos para a estratégia de compra e retenção; seu nome é buy_and_hold_summary A outra consulta de tabela derivada principal gera resultados resumidos para a regra de compra e retenção mensal em relação à regra condicional de compra e retenção com base nas médias móveis.
A próxima captura de tela apresenta outro relatório com resultados detalhados para a regra de negociação mensal de compra e retenção. Você pode usar este relatório para examinar resultados para qualquer um dos seis estoques no conjunto de dados para esta dica. A captura de tela abaixo mostra os resultados para o estoque com o símbolo crus.
Este segundo relatório exibe resultados mensais de perda de ganho de negociação em uma base por ação e uma base de muito tamanho para o símbolo inserido na caixa de seleção SÍMBOLO. Os meses com perda mostram o resultado em vermelho; Caso contrário, o resultado por ação e por tamanho de lote mostra em verde.
Embora o relatório anterior mostre que o ganho para o estoque de crus foi de cerca de US $ 3.780, o seguinte relatório mostra uma perda em 10 dos 25 meses para os quais os dados de preços foram analisados. Além disso, o estoque perde valor em 4 dos primeiros 5 meses e um período adicional de três meses consecutivos (junho de 2015 a agosto de 2015) que foram analisados. Se um cliente investiu no estoque crus exclusivamente durante qualquer um desses períodos, eles poderiam facilmente concluir que uma recomendação para crus era ruim, apesar de o estoque ter ganho mais de 100% ao longo do período de avaliação de 25 meses!
A seguinte consulta mostra o código para relatar os resultados comerciais mensais de compra e retenção mensais. A declaração SELECT mais externa faz referência a duas consultas de tabela derivadas que estão internas. O SELECT mais externo calcula um resultado (G / L para o tamanho do lote) e renomeia outras colunas de sua fonte subjacente. Além disso, o parâmetro SYMBOL na última linha do código permite ao usuário do relatório especificar um símbolo de estoque para o qual mostrar resultados. A consulta de tabela derivada mensal_G / L_per_share retorna para cada mês a diferença entre o preço final de fechamento e o preço de abertura inicial; Este é o ganho ou a perda por ação por um mês. A consulta de tabela derivada de partes_to_buy_sell calcula o tamanho do lote para um estoque, o qual, por sua vez, é usado pela consulta mais externa para ajudar a gerar o ganho ou a perda por lote por um mês.
A próxima captura de tela para esta dica mostra os resultados comerciais quando a média móvel de 10 dias é maior do que a média móvel de 30 dias no início do mês. O resultado da regra é que os negócios não são feitos em 10 meses para os quais a regra de cada mês faz um comércio. Tanto o relatório quanto o anterior são para o estoque com um símbolo crus.
Há 10 meses em que a regra de negociação com base em médias móveis ignora um comércio por um mês em relação à regra de negociação de todos os meses. A regra de negociação com base em médias móveis ignorou 5 perdas e 1 resultado sem alteração. Estes bons resultados da regra da média móvel são contrabalançados, em parte, por ganhos perdidos em 4 meses. O relatório top-line acima mostra que a média móvel retornou mais de $ 700 menos ganhos do que a regra de todos os meses para o estoque crus. O encolhimento nos ganhos foi ainda maior para os restantes 5 estoques.
Minha retirada desses resultados é que a regra da média móvel não é suficientemente precisa para descobrir quando um mês provavelmente resultará em uma perda versus um ganho. Por exemplo, se a regra da média móvel fosse 100% precisa, a negociação só ocorreria por meses em que houve um ganho. Mais pesquisas para descobrir melhores regras de negociação para evitar perdas sem perder ganhos podem resultar em estratégias de negociação seletivas que são melhores do que comprar e manter ou comprar e vender todos os meses.
O seguinte script mostra a consulta para o relatório sobre a regra de negociação média móvel. Este script difere do script para a regra de todos os meses na medida em que mostra as médias móveis de 10 dias e 30 dias e que apenas apresenta resultados comerciais nos meses em que a média móvel inicial de 10 dias é maior que a média inicial de 30 dias média móvel.
Próximos passos.
Esta dica apresenta três modelos comerciais simples implementados através do código T-SQL para uma seleção de 6 ações ao longo de um período de avaliação de 25 meses. Três relatórios SSRS também são apresentados para contrastar e analisar os modelos de negociação. The reports show that it is possible to have stocks that gain significant value over the 25-month evaluation even when selectively investing in the stocks for just some months can actually generate a loss. By sharing these results with its clients, the stock advisory firm can help clients avoid losing money on poorly timed stock trades for recommended stocks. Because all steps from downloading historical stock prices through to preparing the reports are described, the stock advisory firm can use any other set of stocks besides those covered in this tip for a report to its clients. Also, any evaluation period for which the Google Finance site has stock prices can be used for reporting the results of trading rules. Finally, additional data mining of stock price data may lead to better rules for extracting more gains from stock trading. The resource files folder for this tip include the project files for the SSIS and SSRS projects mentioned in the tip along with other scripts that you may find useful. Please be sure and review the readme. txt file in the resource solution folder before trying to reproduce any results in the tip based on the files in the resource files folder. Finally, I close by indicating that this tip is not recommending any particular stocks, including the six analyzed ones. These stocks were chosen because I had been watching them as part of my normal investing due diligence. At the time that I submitted this tip to MSSQLTips, I held positions in three stocks among the six in the tip.
Sobre o autor.
Obrigado. I enjoyed writing the tip.
Muito legal. Obrigado por publicar.
Aprendendo.
Pesquisa.
More Info.
Copyright (c) 2006-2017 Edgewood Solutions, LLC All rights reserved.
Some names and products listed are the registered trademarks of their respective owners.
Comments
Post a Comment