Implementação da estratégia comercial


MSG Management Study Guide.
Implementação da Estratégia - Significado e Passos na Implementação de uma Estratégia.
A implementação da estratégia é a tradução da estratégia escolhida em ação organizacional, de modo a atingir metas e objetivos estratégicos. A implementação da estratégia também é definida como a maneira pela qual uma organização deve desenvolver, utilizar e amalgamar a estrutura organizacional, os sistemas de controle e a cultura para seguir estratégias que levam à vantagem competitiva e a um melhor desempenho. A estrutura organizacional atribui valor especial ao desenvolvimento de tarefas e funções para os funcionários e afirma como essas tarefas e papéis podem ser correlacionados para maximizar a eficiência, a qualidade e a satisfação do cliente - os pilares da vantagem competitiva. Mas a estrutura organizacional não é suficiente para motivar os funcionários.
Um sistema de controle organizacional também é necessário. Este sistema de controle equipa os gerentes com incentivos motivacionais para funcionários, bem como comentários sobre o desempenho dos funcionários e organizacionais. Cultura organizacional refere-se à coleção especializada de valores, atitudes, normas e crenças compartilhadas por membros e grupos organizacionais.
Seguem-se os principais passos na implementação de uma estratégia:
Estratégias excelentemente formuladas falharão se não forem implementadas adequadamente. Além disso, é essencial notar que a implementação da estratégia não é possível, a menos que haja estabilidade entre a estratégia e cada dimensão organizacional, como estrutura organizacional, estrutura de recompensas, processo de alocação de recursos, etc.
A implementação da estratégia representa uma ameaça para muitos gerentes e funcionários de uma organização. Novas relações de poder são previstas e alcançadas. Novos grupos (formais e informais) são formados, cujos valores, atitudes, crenças e preocupações podem não ser conhecidos. Com a mudança de poder e papéis de status, os gerentes e funcionários podem empregar comportamentos de confronto.
Autoria / Referenciamento - Sobre o (s) autor (es)
Principais assuntos.
Assinatura especial.
O Guia de Estudos de Gestão é um tutorial completo para estudantes de gestão, onde os estudantes podem aprender os conceitos básicos, bem como conceitos avançados relacionados ao gerenciamento e seus assuntos relacionados.

QuantStart.
O portal QuantCademy QuantStademy da QuantStart fornece recursos educacionais detalhados para aprender comércio sistemático e uma forte comunidade de comerciantes algorítmicos de sucesso para ajudá-lo.
Artigos Mais Recentes.
Apenas iniciando o comércio quantitativo?
3 razões para se inscrever para a lista de e-mails QuantStart:
1. Quant Trading Lessons.
Você terá acesso instantâneo a um curso de e-mail gratuito de 10 partes, repleto de 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.

Implementação de estratégias de negociação de pares.
39 Páginas Publicadas: 25 Apr 2010 Última revisão: 12 de janeiro de 2012.
Oyvind Foshaug.
Universidade de Amsterdã.
Data escrita: 22 de abril de 2010.
Neste artigo, descrevemos dois métodos previamente sugeridos para negociação motivada quantitativa em pares. Nós nos concentramos no método de cointegração e em um modelo de reversão à média não observado chamado de modelo de propagação estocástica. Os métodos são usados ​​para implementar um procedimento de busca que visa revelar pares lucrativos entre todos os pares possíveis disponíveis nas bolsas de valores alemã, francesa e holandesa. O usuário pretendido deste aplicativo é a mesa de operações em Amsterdams Effektenkantoor para a qual esta investigação foi feita. Detalhes de implementação são encontrados em files. meetup / 1704326 / PairsTrading. ppt.
Palavras-chave: troca de pares, reversão à média, implementação, filtro kalman, VAR.
Oyvind Foshaug (Autor do Contato)
Universidade de Amsterdã (email)
Amesterdão, 1018 WB.
Estatísticas de papel.
Jornais relacionados.
Mercado de capitais: eJournal da microstrutura do mercado.
Assine este boletim de taxas para mais artigos com curadoria sobre este tópico.
European eJournal Finance.
Assine este boletim de taxas para mais artigos com curadoria sobre este tópico.
Links rápidos SSRN.
Rankings SSRN.
Sobre SSRN.
Os cookies são usados ​​por este site. Para recusar ou aprender mais, visite nossa página Cookies. Esta página foi processada por apollo7 em 0.172 segundos.

Implementação da Estratégia de Negociação & # 8211; Backtesting e aquisição de dados.
Desenvolver uma estratégia de negociação requer um backtesting meticuloso e reunir várias fontes de dados.
Trabalhamos em colaboração com empresas de investimento para implementar estratégias de negociação. Nós fornecemos assistência com backtesting e aquisição de dados de fontes estruturadas tradicionais e fontes não estruturadas mais recentes. Desenvolvemos ferramentas e tecnologia nos diferentes aspectos da implantação de uma estratégia de investimento, designadamente a alocação de ativos, a construção de carteiras e a execução comercial.
Utilizamos técnicas de ciência de dados como inteligência artificial, aprendizado automático de máquinas e processamento de linguagem natural para adquirir e analisar dados não estruturados de pesquisa de mercado, notícias, limitações regulatórias e outras fontes. O objetivo é permitir que nossos clientes desenvolvam estratégias de negociação que aproveitem todas as informações disponíveis e implementem essas estratégias de maneira eficiente e rápida.
Backtesting do Modelo de Negociação - Auxilia no backtesting e ajustes de algoritmos de negociação e modelos sistemáticos desenvolvidos por sua equipe de investimentos. Aquisição de dados - Adquira dados para modelos de negociação de fornecedores de dados de mercado estruturados tradicionais e adquira e organize automaticamente dados de fontes não estruturadas, como pesquisa de mercado, notícias e registros regulatórios. Conjuntos de dados alternativos - Estruture dados de várias fontes não estruturadas para desenvolver "conjuntos de dados alternativos" # 8221; como dados de pesquisa de clientes, uso de telefone celular e mineração de mídia social.
Desenvolvendo uma Estratégia de Investimento.
Embora as estratégias de investimento sejam variadas e exijam experiências variadas, elas podem se beneficiar de um conjunto padrão de técnicas analíticas e tecnologias de dados. Compreendemos uma ampla gama de teses de investimento, classes de ativos e os fatores de risco associados. Auxiliamos no backtesting e na aquisição de todos os dados relacionados, permitindo que as equipes de investimento se concentrem no desenvolvimento de suas estratégias de investimento.
Aplicação de tecnologia e análise.
As técnicas de ciência dos dados, como a inteligência artificial, a aprendizagem automática e o processamento de linguagem natural, podem ter um impacto significativo na identificação de ideias de investimento através do processamento de fontes de informação diferentes, ajudando a tomada de decisão de investimento através de ferramentas de suporte à decisão e controlando o risco através de gerenciamento de risco mais oportuno.
A aplicação da ciência de dados nos permite aumentar o conjunto de informações analisáveis ​​que podem ser usadas na tomada de decisões de investimento. A análise de dados nos permite incorporar fontes de dados não estruturadas não tradicionais em processos de investimento para identificar tendências, anomalias e correlações de rastreamento.
Plataforma de análise de investimento RADIENT.
Utilizamos a RADiENT, nossa plataforma de análise de investimentos líder do setor, para integrar análise de investimentos baseada em risco, avaliação preditiva e análise de cenário no processo de alocação de ativos e construção de portfólio.

O R Trader.
Usando R e ferramentas relacionadas em Finanças Quantitativas.
Arquivo para as Estratégias de Negociação & # 8216; & # 8217; Categoria.
Vinculando R para IQFeed com o pacote QuantTools.
O IQFeed fornece serviços de transmissão de dados e soluções de negociação que cobrem o mercado agrícola, energético e financeiro. É um fornecedor bem conhecido e reconhecido de feed de dados voltado para usuários de varejo e pequenas instituições. O preço da assinatura começa em cerca de US $ 80 / mês.
Stanislav Kovalevsky desenvolveu um pacote chamado QuantTools. É um pacote tudo em um projetado para melhorar a modelagem de negociação quantitativa. Ele permite baixar e organizar dados históricos de mercado de várias fontes, como Yahoo, Google, Finam, MOEX e IQFeed. O recurso que mais me interessa é a capacidade de vincular o IQFeed a R. Eu uso o IQFeed há alguns anos e estou feliz com ele (não estou afiliado à empresa em nenhum momento). caminho). Mais informações podem ser encontradas aqui. Eu procurei uma integração dentro de R por um tempo e aqui está. Como resultado, depois que fiz alguns testes, mudei meu código que ainda estava em Python para R. Apenas para completar, aqui está um link que explica como baixar dados históricos do IQFeed usando Python.
A QuantTools oferece quatro funcionalidades principais: Obter dados de mercado, Armazenar / Recuperar dados de mercado, Dados de séries temporais de plotagem e Testes reversos.
Primeiro, certifique-se de que o IQfeed esteja aberto. Você pode baixar dados diários ou intradiários. O código abaixo faz o download dos preços diários (Aberto, Alto, Baixo, Fechado) para o SPY de 1º de janeiro de 2017 a 1º de junho de 2017.
O código abaixo baixa dados intraday de 1 de maio de 2017 a 3 de maio de 2017.
Observe o parâmetro do período. Pode usar qualquer um dos seguintes valores: tick, 1min, 5min, 10min, 15min, 30min, hora, dia, semana, mês, dependendo da freqüência que você precisa.
O QuantTools facilita o processo de gerenciar e armazenar dados do mercado de ticks. Você acabou de configurar os parâmetros de armazenamento e está pronto para começar. Os parâmetros são onde, desde que data e quais símbolos você gostaria de ser armazenado. Sempre que você puder adicionar mais símbolos e se eles não estiverem presentes em um armazenamento, o QuantTools tentará obter os dados da data de início especificada. O código abaixo salvará os dados no seguinte diretório: & # 8220; C: / Usuários / Arnaud / Documentos / Dados de Mercado / iqfeed & # 8221 ;. Existe uma sub-pasta por instrumento e os dados são aved em arquivos. rds.
Você também pode armazenar dados entre datas específicas. Substitua a última linha de código acima por uma das abaixo.
Agora, se você quiser recuperar alguns dos dados armazenados, basta executar algo como:
Observe que apenas os ticks são suportados no armazenamento local, portanto, o período deve ser & # 8216; tick & # 8217;
O QuantTools fornece a função plot_ts para plotar dados de séries temporais sem fins de semana, feriados e lacunas durante a noite. No exemplo abaixo, primeiro recupero os dados armazenados acima, selecione as primeiras 100 observações de preços e, finalmente, desenhe o gráfico.
Duas coisas para notar: primeiro espião é um objeto data. table, portanto, a sintaxe acima. Para obter uma visão geral rápida dos recursos do data. table, confira esta excelente folha de dicas do DataCamp. Segundo, o parâmetro local é VERDADEIRO à medida que os dados são recuperados do armazenamento interno.
O QuantTools permite escrever sua própria estratégia de negociação usando sua API C ++. Eu não vou elaborar sobre isso, pois este é basicamente o código C ++. Você pode consultar a seção Exemplos no site da QuantTools.
No geral, acho o pacote extremamente útil e bem documentado. O único bit faltante é o feed ao vivo entre R e IQFeed, o que tornará o pacote uma solução real de ponta a ponta.
Como de costume, qualquer comentário é bem-vindo.
BERT: um recém-chegado na conexão R Excel.
Alguns meses atrás, um leitor me apontou essa nova maneira de conectar R e Excel. Eu não sei há quanto tempo isso acontece, mas nunca me deparei com isso e nunca vi nenhum post ou artigo de blog sobre isso. Então eu decidi escrever uma publicação, pois a ferramenta realmente vale a pena e, antes que alguém pergunte, eu não estou relacionado à empresa de nenhuma maneira.
BERT significa Basic Excel R Toolkit. É gratuito (licenciado sob a GPL v2) e foi desenvolvido pela Structured Data LLC. No momento em que escrevo, a versão atual do BERT é 1.07. Mais informações podem ser encontradas aqui. De uma perspectiva mais técnica, o BERT foi projetado para suportar a execução de funções R a partir de células da planilha do Excel. Em termos do Excel, é para escrever Funções definidas pelo usuário (UDFs) em R.
Neste post eu não vou mostrar como R e Excel interagem via BERT. Há muito bons tutoriais aqui, aqui e aqui. Em vez disso, quero mostrar como usei BERT para construir uma torre de controle & # 8220; & # 8221; para minha negociação.
Meus sinais de negociação são gerados usando uma longa lista de arquivos R, mas eu preciso da flexibilidade do Excel para exibir os resultados de forma rápida e eficiente. Como mostrado acima, o BERT pode fazer isso para mim, mas também quero adaptar o aplicativo às minhas necessidades. Ao combinar o poder de XML, VBA, R e BERT, posso criar uma aplicação bem parecida e poderosa na forma de um arquivo Excel com código VBA mínimo. Em última análise, tenho um único arquivo do Excel reunindo todas as tarefas necessárias para gerenciar meu portfólio: atualização do banco de dados, geração de sinal, envio de ordens etc e # 8230; Minha abordagem poderia ser dividida nas 3 etapas abaixo:
Use XML para criar menus e botões definidos pelo usuário em um arquivo do Excel. Os menus e botões acima são essencialmente chamadas para funções do VBA. Essas funções do VBA são encapsuladas em torno de funções R definidas usando BERT.
Com essa abordagem, posso manter uma clara distinção entre o núcleo do meu código mantido em R, SQL e Python e tudo o que é usado para exibir e formatar os resultados mantidos no Excel, VBA & amp; XML. Nas próximas seções, apresento o pré-requisito para desenvolver tal abordagem e um guia passo a passo que explica como o BERT poderia ser usado para simplesmente passar dados de R para o Excel com o mínimo de código VBA.
1 & # 8211; Baixe e instale o BERT a partir deste link. Quando a instalação estiver concluída, você deve ter um novo menu Add-Ins no Excel com os botões, conforme mostrado abaixo. É assim que o BERT se materializou no Excel.
2 & # 8211; Faça o download e instale o editor de interface de usuário personalizada: O Editor de interface de usuário personalizado permite criar menus e botões definidos pelo usuário na faixa de opções do Excel. Um procedimento passo a passo está disponível aqui.
1 & # 8211; Código R: A função R abaixo é um código muito simples apenas para fins ilustrativos. Calcula e retorna os resíduos de uma regressão linear. É isso que queremos recuperar no Excel. Salve isso em um arquivo chamado myRCode. R (qualquer outro nome é bom) em um diretório de sua escolha.
2 & # 8211; functions. R em BERT: No Excel selecione Add-Ins - & gt; Diretório base e abra o arquivo chamado functions. R. Neste arquivo, cole o seguinte código. Certifique-se de inserir o caminho correto.
Isso está apenas fornecendo o arquivo RERT que você criou acima. Em seguida, salve e feche as funções do arquivo. R. Se você quiser fazer alguma alteração no arquivo R criado na etapa 1, você terá que recarregá-lo usando o botão BERT & # 8220; Recarregar arquivo de inicialização e # 8221; no menu Complementos no Excel.
3 & # 8211; No Excel: Crie e salve um arquivo chamado myFile. xslm (qualquer outro nome é bom). Este é um arquivo habilitado para macro que você salva no diretório de sua escolha. Depois que o arquivo for salvo, feche-o.
4 & # 8211; Abra o arquivo criado acima no editor da interface do usuário personalizada: Depois que o arquivo estiver aberto, cole o código abaixo.
Você deve ter algo parecido com isto no editor de XML:
Essencialmente, este pedaço de código XML cria um menu adicional (RTrader), um novo grupo (My Group) e um botão definido pelo usuário (New Button) na faixa de opções do Excel. Quando terminar, abra myFile. xslm no Excel e feche o Editor de UI personalizado. Você deve ver algo assim.
5 & ​​# 8211; Abra o editor VBA: no myFile. xlsm insira um novo módulo. Cole o código abaixo no módulo recém-criado.
Isso apaga os resultados anteriores na planilha antes de lidar com os novos.
6 & # 8211; Clique no botão Novo: Agora volte para a planilha e no menu do RTrader clique no & # 8220; Novo botão & # 8221; botão. Você deve ver algo como o que aparece abaixo.
O guia acima é uma versão muito básica do que pode ser alcançado usando o BERT, mas mostra como combinar o poder de várias ferramentas específicas para criar sua própria aplicação personalizada. Da minha perspectiva, o interesse de tal abordagem é a capacidade de colar R e Excel, obviamente, mas também incluir pedaços de código XML (e em lote) do Python, SQL e muito mais. Isso é exatamente o que eu precisava. Por fim, gostaria de saber se alguém tem alguma experiência com o BERT?
Estratégia de negociação: aproveitando ao máximo os dados da amostra.
Ao testar estratégias de negociação, uma abordagem comum é dividir o conjunto de dados inicial em dados de amostra: a parte dos dados projetados para calibrar o modelo e os dados de amostra: a parte dos dados usada para validar a calibração e garantir que o desempenho criado na amostra será refletido no mundo real. Como regra geral, cerca de 70% dos dados iniciais podem ser utilizados para calibração (isto é, na amostra) e 30% para validação (isto é, fora da amostra). Em seguida, uma comparação dos dados de entrada e saída da amostra ajuda a decidir se o modelo é robusto o suficiente. Esta publicação pretende dar um passo adiante e fornece um método estatístico para decidir se os dados fora da amostra estão alinhados com o que foi criado na amostra.
No gráfico abaixo, a área azul representa o desempenho fora da amostra para uma das minhas estratégias.
Uma inspeção visual simples revela um bom ajuste entre o desempenho de entrada e saída da amostra, mas que grau de confiança eu tenho nisso? Nesta fase não muito e esta é a questão. O que é realmente necessário é uma medida de similaridade entre os conjuntos de dados de entrada e de saída. Em termos estatísticos, isso pode ser traduzido como a probabilidade de que os números de desempenho dentro e fora da amostra sejam provenientes da mesma distribuição. Existe um teste estatístico não paramétrico que faz exatamente isso: o teste de Kruskall-Wallis. Uma boa definição deste teste pode ser encontrada no R-Tutor & # 8220; Uma coleção de amostras de dados são independentes se elas vierem de populações não relacionadas e as amostras não se afetam. Usando o teste de Kruskal-Wallis, podemos decidir se as distribuições de população são idênticas sem assumir que elas sigam a distribuição normal. & # 8221; O benefício adicional desse teste não está assumindo uma distribuição normal.
Existe outros testes da mesma natureza que podem enquadrar-se nesse quadro. O teste de Mann-Whitney-Wilcoxon ou os testes de Kolmogorov-Smirnov adequam-se perfeitamente à estrutura descreve aqui no entanto, isso está além do escopo deste artigo para discutir os prós e contras de cada um desses testes. Uma boa descrição junto com exemplos R podem ser encontradas aqui.
Aqui, o código usado para gerar o gráfico acima e a análise:
No exemplo acima, o período de amostragem é maior do que o período de amostragem, portanto, eu criei aleatoriamente 1.000 subconjuntos dos dados da amostra, cada um deles tendo o mesmo comprimento que os dados fora da amostra. Então, testei cada um em um subconjunto de amostras em relação aos dados fora da amostra e gravei os valores p. Este processo não cria um único valor de p para o teste de Kruskall-Wallis, mas uma distribuição que torna a análise mais robusta. Neste exemplo, a média dos valores de p é bem acima de zero (0.478) indicando que a hipótese nula deve ser aceita: existem fortes evidências de que os dados dentro e fora da amostra são provenientes da mesma distribuição.
Como de costume, o que é apresentado neste post é um exemplo de brinquedo que apenas arranha a superfície do problema e deve ser adaptado às necessidades individuais. No entanto, penso que propõe um quadro estatístico interessante e racional para avaliar os resultados fora da amostra.
Esta publicação é inspirada nos dois artigos seguintes:
Vigier Alexandre, Chmil Swann (2007), "Efeitos de várias funções de otimização sobre o desempenho da amostra de estratégias de negociação desenvolvidas genéticamente", Conferência de mercados financeiros de previsão.
Vigier Alexandre, Chmil Swann (2010), "Um processo de otimização para melhorar dentro / fora da consistência da amostra, um caso do mercado de ações", JP Morgan Cazenove Equity Quantitative Conference, Londres, outubro de 2010.
Apresentando o fidlr: LoanceR de Dados Financeiros.
fidlr é um complemento do RStudio projetado para simplificar o processo de download de dados financeiros de vários provedores. Esta versão inicial é um invólucro em torno da função getSymbols no pacote quantmod e apenas o Yahoo, Google, FRED e Oanda são suportados. Provavelmente vou adicionar funcionalidades ao longo do tempo. Como de costume, com essas coisas, apenas um lembrete: "O SOFTWARE É FORNECIDO" COMO ESTÁ, SEM GARANTIA DE NENHUM TIPO "# 8230; & # 8221;
Como instalar e usar o fidlr?
Você pode obter o addin / package do seu repositório Github aqui (eu vou registrá-lo no CRAN mais tarde) Instale o addin. Existe um excelente tutorial para instalar o RStudio Addins aqui. Depois que o addin é instalado, ele deve aparecer no menu Addin. Basta escolher fidlr no menu e uma janela como abaixo deve aparecer. Escolha um provedor de dados no menu suspenso Origem. Selecione um intervalo de datas no menu Data Insira o símbolo que você deseja baixar na caixa de texto do instrumento. Para baixar vários símbolos basta digitar os símbolos separados por vírgulas. Use os botões de opção para escolher se deseja baixar o instrumento em um arquivo csv ou no ambiente global. O arquivo csv será salvo no diretório de trabalho e haverá um arquivo csv por instrumento. Pressione Executar para obter os dados ou Fechar para fechar o suplemento.
Mensagens de erro e avisos são manipulados pelos pacotes subjacentes (quantmod e Shiny) e podem ser lidos no console.
Esta é uma primeira versão do projeto, então não espere perfeição, mas espero que melhore com o tempo. Informe qualquer comentário, sugestão, erro, etc. & # 8230; para: thertradergmail.
Manter um banco de dados de arquivos de preços em R.
Fazer pesquisas quantitativas implica uma grande quantidade de dados crunching e um precisa de dados limpos e confiáveis ​​para conseguir isso. O que é realmente necessário é a limpeza de dados facilmente acessíveis (mesmo sem conexão à internet). A maneira mais eficiente de fazer isso por mim tem sido manter um conjunto de arquivos csv. Obviamente, esse processo pode ser tratado de várias maneiras, mas eu encontrei horas extras muito eficientes e simples para manter um diretório onde eu armazeno e atualize arquivos csv. Eu tenho um arquivo csv por instrumento e cada arquivo é nomeado após o instrumento que ele contém. A razão pela qual eu faço isso é dupla: primeiro, eu não quero baixar dados (preço) do Yahoo, Google etc e # 8230; Toda vez que eu quero testar uma nova ideia, mas mais importante, uma vez que eu identifiquei e corrigi um problema, não quero ter que fazer isso novamente na próxima vez que eu precisar do mesmo instrumento. Simples, mas muito eficiente até agora. O processo está resumido no quadro abaixo.
Em tudo o que se segue, presumo que os dados estão vindo do Yahoo. O código terá que ser alterado para os dados do Google, Quandl, etc & # 8230; Além disso, apresento o processo de atualização dos dados diários de preços. A configuração será diferente para dados de frequência mais alta e outro tipo de conjunto de dados (ou seja, diferente dos preços).
1 & # 8211; Download de dados inicial (listOfInstruments. R & amp; historicalData. R)
O arquivo fileOfInstruments. R é um arquivo contendo apenas a lista de todos os instrumentos.
Se um instrumento não é parte da minha lista (ou seja, nenhum arquivo csv na minha pasta de dados) ou se você fizer isso pela primeira vez que você precisa baixar o conjunto de dados históricos inicial. O exemplo abaixo faz o download de um conjunto de cotações diárias dos ETFs do Yahoo Finance até janeiro de 2000 e armazena os dados em um arquivo csv.
2 & # 8211; Atualizar dados existentes (updateData. R)
O código abaixo começa a partir de arquivos existentes na pasta dedicada e atualiza todos eles um após o outro. Costumo executar esse processo todos os dias, exceto quando eu estiver no feriado. Para adicionar um novo instrumento, basta executar o passo 1 acima apenas para este instrumento.
3 & # 8211; Crie um arquivo de lote (updateDailyPrices. bat)
Outra parte importante do trabalho é criar um arquivo em lotes que automatize o processo de atualização acima (eu sou um usuário do Windows). Isso evita abrir o R ​​/ RStudio e executar o código a partir daí. O código abaixo é colocado em um arquivo. bat (o caminho deve ser alterado com a configuração do leitor). Note que eu adicionei um arquivo de saída (updateLog. txt) para rastrear a execução.
O processo acima é extremamente simples porque ele apenas descreve como atualizar os dados de preços diários. Eu tenho usado isso por um tempo e tem funcionado muito bem para mim até agora. Para dados mais avançados e / ou freqüências mais altas, as coisas podem ficar muito mais complicadas.
Como de costume, qualquer comentário é bem-vindo.
Avaliação do fator na gestão quantitativa da carteira.
Quando se trata de gerenciar uma carteira de ações versus um benchmark, o problema é muito diferente de definir uma estratégia de retorno absoluto. No primeiro, é preciso manter mais estoques do que no segundo, onde nenhuma ação pode ser mantida se não houver oportunidade suficiente. A razão para isso é o erro de rastreamento. Isso é definido como o desvio padrão do retorno da carteira menos o retorno de referência. Quanto menos ações forem mantidas em comparação a um benchmark, maior será o erro de rastreamento (por exemplo, maior risco).
A análise a seguir é amplamente inspirada no livro "Active Portfolio Management" # 8221; por Grinold & amp; Kahn. Esta é a Bíblia para qualquer pessoa interessada em administrar um portfólio em relação a um benchmark. Eu encorajo fortemente qualquer pessoa interessada no tópico a ler o livro desde o início até o fim. É muito bem escrito e estabelece as bases do gerenciamento sistemático de portfólio ativo (não tenho afiliação ao editor ou aos autores).
Aqui, estamos tentando classificar com a maior precisão possível as ações no universo de investimento em uma base de retorno a termo. Muitas pessoas criaram muitas ferramentas e inúmeras variantes dessas ferramentas foram desenvolvidas para conseguir isso. Neste post concentro-me em duas métricas simples e amplamente utilizadas: Coeficiente de Informação (IC) e Quantiles Return (QR).
O IC fornece uma visão geral da capacidade de previsão de fator. Mais precisamente, esta é uma medida de quão bem o fator classifica os estoques em uma base de retorno para a frente. O IC é definido como a correlação de classificação (ρ) entre a métrica (por exemplo, fator) e o retorno para a frente. Em termos estatísticos, a correlação de classificação é uma medida não paramétrica de dependência entre duas variáveis. Para uma amostra de tamanho n, as n pontuações brutas são convertidas em classificações e ρ é calculado a partir de:
O horizonte para o retorno para a frente deve ser definido pelo analista e é uma função da rotação da estratégia e da decaimento alfa (este tem sido objeto de pesquisa extensiva). Obviamente, os CIs devem ser o mais alto possível em termos absolutos.
Para o leitor atento, no livro de Grinold & amp; Kahn é dada uma fórmula que liga Relação de informação (IR) e IC: com a amplitude sendo o número de apostas independentes (trades). Esta fórmula é conhecida como a lei fundamental do gerenciamento ativo. O problema é que muitas vezes, definir a amplitude com precisão não é tão fácil quanto parece.
Para obter uma estimativa mais precisa do fator poder preditivo, é necessário dar um passo além e agrupar os estoques por quantis de valores de fatores e, em seguida, analisar o retorno médio a termo (ou qualquer outra métrica de tendência central) de cada um deles. quantiles. A utilidade desta ferramenta é simples. Um fator pode ter um bom IC, mas seu poder preditivo pode ser limitado a um pequeno número de ações. Isso não é bom, pois um gerente de portfólio terá que escolher ações dentro do universo inteiro para atender a sua restrição de erro de rastreamento. Bons retornos quantílicos são caracterizados por uma relação monótona entre os quantis individuais e os retornos futuros.
Todas as ações no índice S & P500 (no momento da redação). Obviamente, há um viés de navio de sobrevivência: a lista de ações no índice mudou significativamente entre o início e o final do período de amostragem, porém é bom o suficiente para fins de ilustração apenas.
O código abaixo baixa os preços das ações individuais no S & P500 entre janeiro de 2005 e hoje (leva um tempo) e transforma os preços brutos em retorno nos últimos 12 meses e no último mês. O primeiro é o nosso fator, o último será usado como medida de retorno para frente.
Abaixo está o código para calcular Coeficiente de Informações e Quantiles Return. Note-se que usei quintios neste exemplo, mas qualquer outro método de agrupamento (terciles, deciles, etc. & # 8230;) pode ser usado. isso realmente depende do tamanho da amostra, do que você deseja capturar e do tempo em que deseja ter uma visão geral ampla ou se concentrar nas caudas de distribuição. Para estimar os retornos dentro de cada quintil, a mediana foi utilizada como estimador de tendência central. Esta medida é muito menos sensível a valores aberrantes do que a média aritmética.
E finalmente o código para produzir o gráfico de retorno Quantiles.
3 & # 8211; Como explorar as informações acima?
No gráfico acima, o Q1 é mais baixo nos últimos 12 meses e o Q5, o mais alto. Existe um aumento quase monotônico no retorno de quantiles entre Q1 e Q5, o que indica claramente que os estoques que caíram em Q5 superam aqueles que caíram em Q1 em cerca de 1% por mês. Isso é muito significativo e poderoso para um fator tão simples (não é realmente uma surpresa, ainda que & # 8230;). Portanto, há maiores chances de vencer o índice por sobreponderar os estoques caindo no Q5 e subponderar aqueles que caem no Q1 em relação ao benchmark.
Um IC de 0,0206 pode não significar muito em si, mas é significativamente diferente de 0 e indica um bom poder de previsão dos últimos 12 meses de retorno geral. Testes de significância formal podem ser avaliados, mas isso está além do escopo deste artigo.
A estrutura acima é excelente para avaliar a qualidade do fator de investimento, porém existem várias limitações práticas que devem ser abordadas para a implementação da vida real:
Reequilíbrio: Na descrição acima, é assumido que no final de cada mês a carteira é totalmente reequilibrada. Isso significa que todas as ações que caem no primeiro trimestre estão abaixo do peso e todas as ações que caem no Q5 estão com sobrepeso em relação ao benchmark. Isso nem sempre é possível por razões práticas: alguns estoques podem ser excluídos do universo de investimento, existem restrições ao peso da indústria ou do setor, existem restrições sobre o roteamento etc & # 8230; Custos de Transação: Isso não foi levado em consideração na análise acima e isso é um sério freio para a implementação da vida real. As considerações sobre o volume de negócios geralmente são implementadas na vida real sob uma forma de penalidade na qualidade dos fatores. Coeficiente de transferência: Esta é uma extensão da lei fundamental da gestão ativa e relaxa a suposição do modelo de Grinold de que os gerentes não enfrentam restrições que os impeçam de traduzir suas percepções de investimentos diretamente em apostas de portfólio.
E, finalmente, estou impressionado com o que pode ser alcançado em menos de 80 linhas de código com R & # 8230;
Como de costume, qualquer comentário é bem-vindo.
Risco como uma Variação de Sobrevivência & # 8220; # 8221;
Eu me deparo com muitas estratégias na blogosfera, algumas são interessantes, algumas são um completo desperdício de tempo, mas a maioria compartilha uma característica comum: as pessoas que desenvolvem essas estratégias fazem seu dever de casa em termos de análise do retorno, mas muito menos atenção é paga ao lado do risco é natureza aleatória. Eu vi comentários como "um rebaixamento de 25% em 2011, mas um excelente retorno geral". Bem, a minha aposta é que ninguém na terra permitirá que você experimente uma perda de 25% com seu dinheiro (a menos que acordos especiais estejam em vigor). No mundo dos fundos de hedge, as pessoas têm muito pouca tolerância ao saque. Geralmente, como um novo comerciante em um hedge fund, assumindo que você não possui reputação, você tem muito pouco tempo para provar a si mesmo. Você deve ganhar dinheiro a partir do primeiro dia e continuar fazendo isso por alguns meses antes de ganhar um pouco de credibilidade.
Diga primeiro que você tenha um mau começo e você perca dinheiro no início. Com uma redução de 10%, você certamente estará fora, mas mesmo com uma redução de 5%, as chances de ver sua alocação reduzida são muito altas. Isso tem implicações significativas em suas estratégias. Deixe assumir que, se você perder 5%, sua alocação é dividida por 2 e você retorna à sua alocação inicial somente quando você passou a marca de água alta novamente (por exemplo, a retirada volta para 0). No gráfico abaixo, simulei o experimento com uma das minhas estratégias.
Você começa a operar em 1º de junho de 2003 e tudo vai bem até 23 de julho de 2003, onde sua curva de rebaixamento atinge o limite de -5% (** 1 **). Sua alocação é reduzida em 50% e você não recupera o nível da marca de água até o 05 de dezembro de 2003 (** 3 **). Se você manteve a alocação inalterada, o nível da marca de água alta teria sido cruzado em 28 de outubro de 2003 (** 2 **) e, no final do ano, você teria feito mais dinheiro.
Mas vamos empurrar o raciocínio um pouco mais. Ainda no gráfico acima, suponha que você tenha realmente uma azarada e você começa a operar até meados de junho de 2003. Você atingiu o limite de retirada de 10% no início de agosto e você provavelmente estará fora do jogo. Você teria começado no início de agosto a sua alocação não teria sido cortada e você acaba fazendo um bom ano em apenas 4 meses completos de negociação. Nesses dois exemplos, nada mudou, mas sua data de início & # 8230 ;.
O sucesso comercial de qualquer indivíduo tem alguma forma de dependência do caminho e não há muito que você possa fazer sobre isso. No entanto, você pode controlar o tamanho da retirada de uma estratégia e isso deve ser abordado com muito cuidado. Um portfólio deve ser diversificado em todas as dimensões possíveis: classes de ativos, estratégias de investimento, frequências de negociação, etc & # 8230 ;. Dessa perspectiva, o risco é a sua "variável de sobrevivência". Se for gerenciado adequadamente, você tem a chance de permanecer no jogo o suficiente para perceber o potencial de sua estratégia. Caso contrário, você ganhou o mês que vem para ver o que acontece.
Como de costume, qualquer comentário é bem-vindo.
Uma aplicação simples e brilhante para monitorar estratégias de negociação e # 8211; Parte II.
Esta é uma continuação do meu post anterior & # 8220; Um aplicativo simples e simples para monitorar as estratégias de negociação & # 8220 ;. Eu adicionei algumas melhorias que tornam o aplicativo um pouco melhor (pelo menos para mim!). Abaixo está a lista de novos recursos:
Um arquivo. csv de amostra (aquele que contém os dados brutos) A & # 8220; EndDate & # 8221; drop down box permitindo especificar o final do período. A & # 8220; Risco & # 8221; página contendo uma análise de VaR e um gráfico de pior desempenho em vários horizontes A & # 8220; How To & # 8221; página explicando como usar e adaptar o aplicativo às necessidades individuais.
Eu também fiz o aplicativo totalmente independente. Agora ele está disponível como um produto autônomo e não é necessário ter o R ​​/ RStudio instalado em seu computador para executá-lo. It can be downloaded from the R Trader Google drive account. This version of the app runs using portable R and portable Chrome. For the keen reader, this link explains in full details how to package a Shiny app into a desktop app (Windows only for now).
1 & # 8211; How to install & run the app on your computer.
Create a specific folder Unzip the contain of the. zip file onto that new folder. Change the paths in the runShinyApp file to match your setings To run the app, you just have launch the run. vbs file. I also included an icon (RTraderTradingApp. ico) should you want to create a shortcut on your desktop.
ui. R: controls the layout and appearance of the app server. R: contains the instructions needed to build the app. You can load as much strategies as you want as long as the corresponding csv file has the right format (see below). shinyStrategyGeneral. R: loads the required packages and launches the app.
3 & # 8211; How to add a trading strategy?
Create the corresponding. csv file in the right directory Create a new input in the data reactive function (within the server. R file) Add an extra element to the choice parameter in the first selectInput in the sidebarPanel (within the ui. R file). The element’s name should match the name of the new input above.
Remove the input in the data reactive function corresponding to the strategy you want to remove (within the server. R file) Remove the element in the choice parameter in the first selectInput in the sidebarPanel corresponding to the strategy you want to remove (within the ui. R file).
Please feel free to get in touch should you have any suggestion.
A Simple Shiny App for Monitoring Trading Strategies.
In a previous post I showed how to use R, Knitr and LaTeX to build a template strategy report. This post goes a step further by making the analysis interactive. Besides the interactivity, the Shiny App also solves two problems :
I can now access all my trading strategies from a single point regardless of the instrument traded. Coupled with the Shiny interactivity, it allows easier comparison. I can focus on a specific time period.
The code used in this post is available on a Gist/Github repository. There are essentially 3 files.
ui. R : controls the layout and appearance of the app. server. R : contains the instructions needed to build the app. It loads the data and format it. There is one csv file per strategy each containing at least two columns: date and return with the following format: (“2010-12-22″,”0.04%” ). You can load as much strategies as you want as long as they have the right format. shinyStrategyG eneral. R : loads the required packages and launches the app.
This app is probably far from perfect and I will certainly improve it in the future. Feel free to get in touch should you have any suggestion.
A big thank you to the RStudio/Shiny team for such a great tool.
Usando Algoritmos Genéticos em Negociação Quantitativa.
A questão que sempre deve ser feita ao usar indicadores técnicos é o que seria um critério objetivo para selecionar os parâmetros dos indicadores (por exemplo, por que usar um RSI de 14 dias em vez de 15 ou 20 dias?). Os algoritmos genéticos (GA) são ferramentas adequadas para responder a essa pergunta. Nesta publicação, eu mostro como configurar o problema em R. Antes de prosseguir o lembrete habitual: O que eu apresento nesta publicação é apenas um exemplo de brinquedo e não um convite para investir. Também não é uma estratégia acabada, mas uma ideia de pesquisa que precisa ser mais pesquisada, desenvolvida e adaptada às necessidades individuais.
O que são algoritmos genéticos?
A melhor descrição do GA que encontrei vem da Cybernatic Trading, um livro de Murray A. Ruggiero. Algoritmos genéticos foram inventados por John Holland em meados de 1970 para resolver problemas difíceis de otimização. Este método usa a seleção natural, sobrevivência do mais apto & # 8221;. O processo geral segue os passos abaixo:
Codifique o problema nos cromossomos Usando a codificação, desenvolva uma função de aptidão para uso na avaliação do valor de cada cromossomo na resolução de um determinado problema. Inicialize uma população de cromossomos. Avalie cada cromossomo na população. Crie novos cromossomos acoplando dois cromossomos. Isso é feito por muting e recombinação de dois pais para formar dois filhos (os pais são selecionados aleatoriamente, mas tendenciosos por sua aptidão) Avalie o novo cromossomo Exclua um membro da população que seja menos adequado do que o novo cromossomo e insira o novo cromossomo na população . Se o critério de parada for atingido (número máximo de gerações, os critérios de aptidão são bons o suficiente & # 8230;) então retorne o melhor cromossomo ou vá para o passo 4.
A partir de uma perspectiva comercial, a GA é muito útil porque são boas em lidar com problemas altamente não-lineares. No entanto, eles exibem algumas características desagradáveis ​​que merecem destaque:
Sobreposição: Este é o principal problema e é para o analista configurar o problema de forma a minimizar esse risco. Tempo de computação: Se o problema não for definido corretamente, pode ser extremamente longo para chegar a uma solução decente e a complexidade aumenta exponencialmente com o número de variáveis. Daí a necessidade de selecionar cuidadosamente os parâmetros.
Existem vários pacotes R que lidam com GA, eu escolhi usar o mais comum: rgenoud.
Preços de fechamento diários para a maioria dos ETFs líquidos do Yahoo finance, que remontam a janeiro de 2000. O período de amostragem vai de janeiro de 2000 a dezembro de 2010. O período fora da amostra começa em janeiro de 2011.
A lógica é a seguinte: a função de adequação é otimizada durante o período de amostragem para obter um conjunto de parâmetros ótimos para os indicadores técnicos selecionados. O desempenho desses indicadores é então avaliado no período fora da amostra. Mas, antes disso, os indicadores técnicos devem ser selecionados.
O mercado de ações exibe duas características principais que são familiares para qualquer pessoa com alguma experiência comercial. Momento a longo prazo e reversão de curto prazo. Essas características podem ser traduzidas em termos de indicadores técnicos por: médias móveis cruzadas e RSI. Isto representa um conjunto de 4 parâmetros: Períodos de look-back para médias móveis de longo e curto prazo, período de retorno para o RSI e limiar RSI. Os conjuntos de parâmetros são os cromossomos. O outro elemento-chave é a função de fitness. Podemos querer usar algo como: máximo retorno ou taxa de Sharpe ou rebaixamento médio mínimo. No que se segue, escolhi maximizar a proporção de Sharpe.
A implementação de R é um conjunto de 3 funções:
fitnessFunction: define a função de fitness (por exemplo, taxa máxima de Sharpe) para ser usado no comércio de motores GA: estatísticas de negociação para os períodos de entrada e saída de amostra para fins de comparação genoud: o mecanismo GA do pacote rgenoud.
A função genoud é bastante complexa, mas eu não vou explicar o que cada parâmetro significa, pois quero manter este post curto (e a documentação é realmente boa).
Na tabela abaixo, apresento para cada instrumento os parâmetros ótimos (período de retorno de RSI, limite de RSI, Média de Mudança de Curto Prazo e Média de Mudança de Longo Prazo), juntamente com as estatísticas de negociação dentro e fora da amostra.
Antes de comentar os resultados acima, quero explicar alguns pontos importantes. Para combinar a lógica definida acima, limitei os parâmetros para garantir que o período de look-back para a média móvel a longo prazo seja sempre mais longo que a média móvel mais curta. Eu também limitei o otimizador a escolher apenas as soluções com mais de 50 negociações no período de amostragem (por exemplo, significância estatística).
No geral, os resultados fora da amostra estão longe de serem impressionantes. Os retornos são baixos mesmo se o número de negociações for pequeno para tornar o resultado realmente significativo. No entanto, existe uma perda significativa de eficiência entre o período de entrada e saída do Japão (EWJ), o que muito provavelmente significa uma sobreposição.
Este post é destinado a dar ao leitor as ferramentas para usar corretamente o GA em uma estrutura de negociação quantitativa. Mais uma vez, é apenas um exemplo que precisa ser aperfeiçoado. Algumas possíveis melhorias a serem exploradas seriam:
Função de fitness: maximizar a relação Sharpe é muito simplista. A & # 8220; smarter & # 8221; A função certamente melhoraria o padrão de estatísticas comerciais de amostra: tentamos capturar um padrão muito direto. Uma pesquisa de padrões mais aprofundada é definitivamente necessária. Otimização: há muitas maneiras de melhorar a forma como a otimização é conduzida. Isso melhoraria a velocidade de computação e a racionalidade dos resultados.
O código usado nesta publicação está disponível em um repositório Gist.

Trading strategy implementation


Pull requests 0.
Participe do GitHub hoje.
O GitHub é o lar de mais de 20 milhões de desenvolvedores que trabalham juntos para hospedar e rever o código, gerenciar projetos e criar software juntos.
Clone com HTTPS.
Use Git or checkout with SVN using the web URL.
This is a general purpose lightweight backtesting engine for stocks, written in modern Java 8.
Some advantages compared to other backtesting implementations are:
It uses a callback model and since it is implemented in java it should be pretty performant when running many backtests Implemented in a mature programming language Easily extensible Strategies are easily debuggable using a java IDE Lightweight and therefore the backtesting engine is easily verifiable No dependencies Backtesting results are further analyzable in R or Excel since it uses a CSV output format.
I've written this library primarily to try out this particular strategy.
The cointegration strategy, or also known as pairs trading strategy, tries to take two stocks and create a linear model to find a optimal hedge ratio between them in order create a stationary process.
Assume stocks A and B with prices Pa and Pb respectively, we set Pa = alpha + beta*Pb and try to find optimal alpha and beta . One method to find alpha and beta is using a so called Kalman Filter which is a dynamic bayesian model and we use it as an online linear regression model to get our values.
After we've found the values we look at the residuals given by residuals = Pa - alpha - beta*Pb , and if the last residual is greater than some threshold value you go short n A stocks and long n*beta B stocks, for some fixed n .
For further explanation and a formal definition of cointegration and the strategy you may want to look at:
A good introduction video series to the Kalman filter can be found at Udacity (udacity/wiki/cs373/unit-2).
Run a backtest skeleton:
Just create a class which implements org. lst. trading. lib. model. TradingStrategy , for example a simple buy and hold strategy might look like this:
The onTick() method is called for every price change, all relevant information (like historical prices, etc..) is available through TradingContext and also orders can be submitted through it.
Backtest: The core class which runs the backtest package org. lst. trading. lib. series : TimeSeries: A general purpose generic time series data structure implementation and which handles stuff like mapping, merging and filtering. DoubleSeries: A time series class which has doubles as values. (corresponds to a pandas. Series (python)) MultipleDoubleSeries: A time series class which has multiple doubles as values. (corresponds to a pandas. DataFrame or a R Dataframe) KalmanFilter: A general purpose and fast Kalman filter implementation. Cointegration: A cointegration model using a Kalman filter. CointegrationTradingStrategy: The cointegration strategy implementation.
To run a backtest, edit and then run the main class org. lst. trading. main. BacktestMain . By default the cointegration strategy is executed with the GLD vs. GDX ETF's and you might get a result like this:
To further investigate the results you can import the CSV files into some data analysis tool like R or Excel.
I've created a R script which does some rudimentary analysis (in src/main/r/report. r ).
The return curve of the above strategy plotted using R:
This is a plot of the implied residuals:
The cointegration can be quite profitable however the difficulty is to find some good cointegrated pairs.
You might want to try for example Coca-Cola (KO) and Pepsi (PEP), gold (GLD) and gold miners (GDX) or Austrialia stock index (EWA) and Canada stock index (EWC) (both Canada and Australia are commodity based economies).
I'm generally interested in algorithmic trading and I read about the cointegration trading strategy in Ernest Chans Book and wanted to try it out. I know many people prefer using tools like Matlab and R to try out their strategies, and I also agree with them you can't get a prototype running faster using these technologies, however after the prototyping phase I prefer to implement my strategies in a "full blown" programming language where I have a mature IDE, good debugging tools and less 'magic' where I know exactly what is going on under the hood.
This is a side project and I'm not planning to extend this further.
It is thought as a educational project, if you want to do something similar, this may be a good starting point or if you just want to try out different strategies. I thought it might be useful for someone so I decided to make this open source. Feel free to do anything what you want with the code.
My name is Lukas Steinbrecher, I'm currently in the last year of the business informatics (Economics and Computer Science) master at Vienna University of Technology. I'm interested in financial markets, (algorithmic) trading, computer science and also bayesian statistics (especially MCMC methods).
If you have any questions or comments feel free to contact me via lukaslukstei or on lukstei.
&cópia de; 2018 GitHub, Inc. Termos Privacidade Segurança Status Ajuda.
Você não pode executar essa ação neste momento.
Você fez login com outra guia ou janela. Recarregue para atualizar sua sessão. Você se separou em outra guia ou janela. Recarregue para atualizar sua sessão.

Comments

Popular posts from this blog

A estratégia simplificada de negociação de futuros e opções pdf

A ficha de informação do sistema de comércio de emissões da ue (eu ets)

Estratégia de manuseio de resíduos que utilizou uma ampla gama de técnicas de redução e opções de disposição