Monday, 23 April 2018

Usando r para negociação de opções


Análise de cenários e opções de negociação usando R.
Apresento-lhe o meu projeto reestruturado sobre negociação de opções e análise de cenários. Você é mais do que bem vindo para experimentá-lo. Em primeiro lugar, vou dar uma pequena apresentação que irá revelar o que você pode fazer com ele e se você precisa continuar a ler. Então continuarei com dependências, classes usadas e classes criadas juntamente com métodos definidos. Finalmente, vou dar algumas operações básicas para mostrar como você pode usá-lo você mesmo.
Digamos que você está construindo um portfólio. Você quer começar com a estratégia de reversão de risco (comprar alto, vender baixo). Você está interessado em gráfico de recompensa:
Por algum motivo você decide curtir um estoque e adicioná-lo ao seu portfólio:
Você agora percebe que você deve realmente ter uma visão negativa no mercado para negociar isso. Você decide que esta será a sua opinião, mas seu vizinho diz que um possível aumento de preços é possível. Decida comprar alguns digitais:
Você está satisfeito com suas decisões e gostaria de verificar o lucro e a perda, já que agora os números no eixo z mostraram retorno. Lembre-se quando você cortou o estoque, você ganhou dinheiro. Em particular, 100. Mas o custo e a soma de preços de suas opções devem ser ligeiramente positivos, pois simétricamente, fora do dinheiro:
Enquanto você está muito feliz com suas decisões, você também quer investigar algumas sensibilidades. Diga vega:
Agora você é como: "Não negocie essa coisa estranha".
Se você gostou do que viu e quer experimentar você mesmo ou mesmo contribuir, continue lendo.
"Sa_work. R" é o arquivo onde você normalmente trabalharia. Tem apenas 1 linha para chamar tudo o que precisa:
Esta é a única linha que você precisa mudar uma vez que você tenha o repositório baixado. Basta localizar "0_sa_init. R" e fará tudo. E por tudo o que quero dizer, 2 coisas: carregar pacotes, carregar outros scripts e alguns parâmetros básicos.
"Quantmod" pode ser necessário se você quiser baixar algumas opções ou dados de estoque do yahoo. "RQuantLib" não é usado atualmente, mas as funções de preços podem ser tiradas depois para preços americanos. "Campos" foi usado na versão anterior para a interpolação por dispersão e pode ser necessário em um desenvolvimento posterior. "Rgl" - gráficos 3d. "Lubridate" não é essencial, mas facilita a vida quando se trabalha com datas ao nível do usuário. No entanto, todos os objetos de data são convertidos automaticamente para a classe "timeDate".
A estrutura do arquivo é simples:
Pasta "0_funs" com 2 scripts carregados a partir dele "0_basic. R" que contém algumas funções básicas - apenas 2 de 5 são realmente necessários. E "0_inst. R" - abreviatura de instrumentos, mas agora contém todo o projeto dentro. Surpreendentemente, apenas 500 linhas de código. Saiu do dobro depois que eu segui para a abordagem OOP.
"2_structure_int. R", "2_structure_vol. R" será usado para a estrutura da taxa de juros e implementação da superfície de volatilidade implícita no futuro e atualmente não são usados.
As classes utilizadas são S4 para saídas, algumas variáveis ​​simples que necessitaram de formalização e objetos de parâmetros. As classes de referência são usadas para instrumentos.
"Moeda" herda de "caráter" e a função Moeda () garante que é de comprimento 3 e cria novo.
"Gen. par" contém o número de dias de trabalho preferidos em um ano e a lista de taxas de juros (mais tarde poderia ser estendida à estrutura da taxa de juros).
"Stock. par" contém todos os parâmetros que são específicos de estoque e variam ao longo do tempo.
"Scatter" herda da "matriz". Contém saída das classes de referência: variáveis ​​de dados, linhas e colunas.
Superclasse de "segurança" de todos os títulos.
"Spot", "forward" e "option" herdam de "segurança".
Todos eles têm os mesmos métodos: preço, delta, gama, theta, rho, rhoQ, vega. Todos eles têm argumentos: st (preço das ações), tVec (time), vol (volatilidade). A classe "opção" possui um método adicional: getiv.
Aqui está a lista de funções que você precisa:
time_seq (from, to, by = "hour", rng = c (9, 16), holiday = holidayNYSE (2018: 2020), trading = TRUE)
- cria uma seqüência de tempo. Todos os métodos em torno do horário a hora, portanto, não use uma freqüência mais alta! Além disso, evite usar diariamente, basta manter o padrão até saber o que está fazendo.
GenPar () - cria o objeto "gen. par" chamado "gen. par" e atribui-o ao ambiente "gen. par".
lsg () obtém o objeto gen. par.
StockPar () - análogo ao GenPar, apenas o nomea paste0 (ticker, ". Par")
lss () - lista objetos no ambiente "stock. par".
rms () - limpa o ambiente "stock. par".
Spot (id, num = 1, class = "equity", cur = "usd"),
Forward (id, subjacente, maturidade, K, num = 1, class = "equity", cur = "usd"),
Opção (id, subjacente, maturidade, K, put, ame = 0, type = "vanilla", num = 1, extra = lista (0), class = "equity", cur = "usd")
- cria objetos de segurança e atribui-lo ao ambiente de "valores mobiliários".
lsi () - lista objetos no ambiente de "valores mobiliários".
rmi () - limpa o ambiente de "valores mobiliários".
vaSecurities () - coleta todos os objetos no ambiente de "títulos" em uma lista.
Boas notícias. Isso é tudo que você precisa. Poucas coisas a serem observadas. Todas as seqüências de caracteres são convertidas em CAPS, incluindo nomes de objetos para instrumentos. Apenas a classe de segurança é a equidade. Apenas 2 tipos de opções estão disponíveis: "baunilha" e "binário" (dinheiro ou nada). Todas as opções são europeias.
Experimente. Suas opiniões sobre falhas, erros ou melhorias são mais bem-vindas.

Tarefa Algorítmica de Negociação em R.
Nesta publicação, vou mostrar como usar R para coletar os estoques listados em leais3, obter dados históricos do Yahoo e depois executar uma estratégia de negociação algorítmica simples. Ao longo do caminho, você aprenderá alguma raspagem na web, uma função atingindo uma API de finanças e um htmlwidget para fazer um gráfico de séries de tempo interativo.
Para esta publicação, um algoritmo de negociação é definido como um conjunto de regras que desencadeiam um evento de compra ou venda, em vez de um modelo preditivo ou uma previsão de séries temporais. Este é o tipo mais simples de troca de algo, mas se você estiver interessado em investigar mais profundamente em finanças com R, eu encorajaria você a tomar o curso da DataCamp na modelagem de uma estratégia de negociação quantitativa em R.
Fundo.
Em 2018, comecei a investir um pouco em loyal3. O seu serviço é incomum e um ótimo lugar para iniciar sua jornada de investimento. Em vez de cobrar ao investidor por negociações, leal3 cobra as empresas para listar em sua plataforma. A premissa é que as pessoas que gostam do serviço de uma empresa também comprarão o estoque e, assim, se tornarão defensoras fortes da marca. Fazer a plataforma mais atraente é que você pode comprar partes fracionárias. Então, você pode entrar nesse estoque de $ 800 amazon por apenas US $ 10 e comprar outra fração de US $ 10 cada vez que você tiver um pouco de dinheiro extra no final do mês. Claro que há custos de fricção, uma vez que você precisa negociar no Windows e seu portfólio inteiro está limitado.
70 ações, mas leais3 representa uma maneira divertida e de baixo custo para explorar o treinamento de capital. Você pode colocar a pele real no jogo por apenas US $ 10!
Para ser claro, tenho as contas típicas de aposentadoria e investimento, mas eu gosto da interface limpa do leal no aplicativo e da falta de taxas. Eu acabo checando minha carteira de lealdade e diversão mais frequentemente do que meus fundos mútuos, simplesmente porque é fácil e divertida ver o desempenho dos estoques que escolhi diretamente.
Os estoques disponíveis em loyal3.
Configurando seu espaço de trabalho.
Para começar, carregue as bibliotecas no seu ambiente. Eu quase sempre uso rvest for web scraping estes dias. Existem outros pacotes que funcionam, incluindo o RSelenium, mas eu gosto do quão fácil pode ser executado.
O segundo pacote, pbapply, é opcional porque simplesmente adiciona uma barra de progresso às funções de aplicação. Como você poderia estar raspando centenas de páginas da web, uma barra de progresso pode ser útil para estimar o tempo.
Em seguida, a TTR é um pacote que acabei de começar a explorar. A biblioteca é usada para construir "Regras de Negociação Técnicas". Embora você aprenda um algoritmo de negociação simples nesta publicação, o pacote TTR pode realizar cálculos mais sofisticados e vale a pena aprender.
A biblioteca dygraphs é um invólucro para uma biblioteca de gráficos de JavaScript rápida e aberta. É um dos htmlwidgets que torna o R mais dinâmico e faz parte de um arquivo html em vez de uma imagem estática. Por fim, o pacote lubridate é usado para facilitar a manipulação da data.
Coleção de dados.
Todos os estoques loyal3 estão todos listados em uma única página. Antes de pesquisar os preços diários individuais das ações para construir seu algoritmo de negociação, você precisa coletar todos os tickers disponíveis. A primeira coisa a fazer é declarar stock. list como uma string de URL. O próximo uso read_html () para que sua sessão R crie uma sessão na Internet e colete todas as informações html na página como um conjunto de nós XML. A página CSS tem uma ID chamada "nome da empresa". Use isso como um parâmetro ao chamar html_nodes () para selecionar apenas os dados XML associados a este nó. Por fim, use html_text () para que os valores de texto reais para os nomes das empresas sejam coletados.
Para examinar os estoques disponíveis em loyal3, você pode imprimir o objeto stocks. names no seu console. Isso retorna o nome da empresa como um vetor de texto.
Para pesquisar os preços das ações, você precisa primeiro obter o símbolo do ticker. Quando você está no site leal3, você pode clicar no tile da empresa para carregar uma página com um símbolo de ticker e outras informações da empresa.
Usando html_nodes () em ações, você puxa todos os nós marcados com um "Em HTML" & lt; a & gt; tag define um hiperlink que é usado para vincular a página de um formulário a outro. Dentro da tag de hiperlink, o "href" refere-se ao endereço de URL exato. Então, html_attr () irá extrair o URL de TODOS os links na página, se você passar em "href ...".
Depois de fazer uma inspeção manual, achei que os links 54 a 123 na página representam as páginas da empresa que eu preciso para raspar as informações do ticker. A última linha usa paste0 () para concatenar a seqüência de URL base "loyal3" para as páginas específicas da empresa, como "/ WALMART". Por exemplo, loyal3 / WALMART:
Em cada uma das páginas da empresa, há uma descrição, um preço de fechamento recente e o ticker. Todas as páginas da empresa são organizadas o mesmo, de modo que a função personalizada get. ticker () pode ser usada para extrair o símbolo do ticker.
Dentro de uma página da empresa, há uma tabela chamada "preço-marcador". A função irá navegar para uma página da empresa, identificar a tabela apropriada, extrair o texto com html_text (). Por fim, usando sub () juntamente com a expressão regular ^ ([[: alpha:]] *). * E \\ 1 manterão todos os caracteres alfabéticos. O resultado é que todos os caracteres especiais, como $, e quaisquer caracteres numéricos, como o preço de fechamento, são removidos. Como a função lê cada uma das 70 páginas, ela somente coletará o ticker de estoque.
A página de estoque leal3 para Alibaba, onde você vê a tabela que contém o ticker do estoque, BABA, está abaixo do texto em negrito.
Armado com sua função personalizada, use pblapply () para aplicá-lo a cada um dos stock. links que contêm a página de cada empresa. O objeto resultante, stock. tickers, é uma lista de tickers de ações individuais com cada elemento correspondente a uma empresa individual.
Uma maneira de alterar uma lista de elementos em um objeto plano é com do. call (). Aqui, você está aplicando rbind para row bind cada elemento de lista em um único vetor. Por fim, você cria um quadro de dados com o símbolo e a informação do nome da empresa.
Para ser consistente em sua análise, você pode querer limitar a quantidade de informações históricas que você coleciona em cada estoque. A função Sys. Data () armazenará um objeto de data como ano, mês e dia. Usar anos com um número inteiro é uma maneira de subtrair uma quantidade de tempo específica do objeto start. date.
Para obter os dados de finanças do Yahoo, o objeto da data deve ser alterado para objetos de personagem simples sem um traço. Usando a função de substituição global gsub () em start. date e end. date mudará a classe e simultaneamente removerá traços. Dentro de gsub (), passe o padrão de personagem para procurar, então os caracteres de substituição. Neste caso, o padrão de substituição é um caractere vazio entre citações. O último parâmetro é o objeto ao qual gsub () será aplicado.
A função TTR () getYahooData () aceita um símbolo de estoque e uma data inicial e final. A função retorna um quadro de dados que possui informações de séries temporais. Cada linha é uma data e as colunas contêm informações como o "Por favor", "Alto", "Por favor" e "encerrando" o preço por uma equidade. Como você está pesquisando várias empresas, você pode usar o lapply () ou o pblapply (). Passe no vetor dos símbolos da empresa, então a função, getYahooData (), e depois a data da informação. Os objetos de data são parâmetros reciclado sempre que getYahooData () é aplicado a um símbolo de estoque.
Para fazer a seleção da lista retornada, stocks. ts, mais fácil de navegar, você pode adicionar nomes aos elementos da lista. O uso de nomes com o objeto stocks. ts declara os nomes como o vetor de símbolo $ original.
Ao trabalhar com grandes listas, eu gosto de examinar o objeto resultante para garantir que o resultado seja o que eu esperava. Agora que os elementos têm nomes, você pode fazer referência diretamente a eles. Neste exemplo, você está examinando as 6 primeiras linhas para AMC Entertainment Holdings (AMC). Usar head () na lista ao fazer referência a $ AMC retornará uma parte da série temporal para este estoque:
Examinando os dados de estoque.
Quando eu ouço as notícias financeiras, os comentadores geralmente se referem a gráficos. Apesar da negociação de alta freqüência e da gestão ativa realizada por outros, muitos pequenos investidores ainda se referem a gráficos para obter informações. O objeto da série temporal pode ser exibido rapidamente com o enredo. Passe na lista referente ao elemento nomeado, como $ AMC e depois a coluna que deseja exibir, aqui $ Close.
O enredo anterior é estático e não muito interessante.
Vamos usar uma biblioteca de JavaScript para criar um gráfico que você possa explorar. Neste trecho de código, você pode observar o "% & gt;%" ou operador de tubulação. O operador de tubulação é uma boa maneira de escrever um código conciso. Ele encaminha um objeto para a próxima função sem forçar você a reescrever um nome de objeto como você fez anteriormente nesta publicação.
Neste exemplo, você cria um dygraph referente ao estoque do Twitter, $ TWTR e, em seguida, a coluna que deseja traçar, $ Close. Dentro do dygraph, main adiciona um título especificado entre as cotações. Usando o "% & gt;%" este objeto inteiro é encaminhado para a próxima função dyRangeSelector (). Você pode especificar um intervalo de datas padrão usando c () com uma string de data de início e fim. O objeto HTML resultante é uma série de tempo dinâmico para o estoque do Twitter com um controle deslizante de data na parte inferior.
Lembre-se, para alterar o patrimônio exibido, altere o símbolo do ticker na lista stocks. ts e, em seguida, o título do gráfico.
Este é um dígrafo básico para o estoque do Twitter.
Uma Estratégia de Negociação Simples: Trend Following.
Os comerciantes de alta freqüência e os hedge funds usam modelos sofisticados e abordagens baseadas em regras para executar negócios. Se você quiser saber mais, sugiro visitar a parapian para abordagens avançadas. Para abordagens mais simples, comece com esta página na Investopedia.
No código abaixo, você irá visualizar uma estratégia de negociação de impulso simples. Basicamente, você gostaria de calcular as médias móveis de 200 dias e 50 dias para um preço de ações. Em qualquer dia em que a média móvel de 50 dias esteja acima da média móvel de 200 dias, você compraria ou manteria sua posição. Nos dias em que a média de 200 dias é superior à média móvel de 50 dias, você venderia suas ações. Esta estratégia é chamada de estratégia seguindo estratégia. A natureza positiva ou negativa entre as duas médias médias temporais representa o impulso do estoque.
O pacote TTR fornece SMA () para calcular a média móvel simples. Neste trecho de código, você está examinando os primeiros 6 valores para as médias móveis de Twitter e 200 dias. SMA () funciona passando os dados da série temporal para um estoque e uma coluna específica como Close. Este é um único vetor de preços de fechamento do estoque TWTR. O segundo parâmetro é um número inteiro que representa o número de observações para a média móvel. Sem usar head (), a função SMA () retornará todos os valores.
Agora que você examinou detalhadamente a função da média móvel, você precisa se inscrever para cada uma das 70 ações. stocks. ts é uma lista de 70 quadros de dados contendo dados de estoque individuais. A quarta coluna de cada quadro de dados contém o preço de fechamento que queremos usar para as médias móveis.
A função personalizada mov. avgs () aceita um único quadro de dados de estoque para calcular as médias móveis. A primeira linha seleciona os preços de fechamento porque indexa [, 4] para criar stock. close. Em seguida, a função usa ifelse para verificar o número de linhas no quadro de dados. Especificamente se o nrow no quadro de dados for inferior a (2 * 260), então a função criará uma moldura de dados de médias móveis com “NA”.
Eu escolhi esse número porque há cerca de 250 dias de negociação por ano, então isso irá verificar se a série temporal tem cerca de 2 anos ou mais de duração. Loyal3 às vezes pode ter acesso a IPOs e, se o estoque for recém-público, não haverá dados suficientes para uma média móvel de 200 dias. No entanto, se o valor nrow for superior a 2 * 260, a função criará um quadro de dados com os dados originais juntamente com médias móveis de 200 e 50 dias como novas colunas. Usando colnames, eu declaro os nomes das colunas. A última parte da função usa full. cases para verificar os valores na coluna média móvel de 200 dias. Quaisquer linhas que não tenham um valor são descartadas no resultado final.
Armado com esta função mov. avgs (), você pode usar o pblapply () para adicionar os cálculos da média móvel a cada um dos 70 quadros de dados.
Use o código abaixo para visualizar as médias móveis de um estoque usando um dígrafo. Mais uma vez, esse código está usando o operador "% & gt;%" para encaminhar objetos. A função dygraph () aceita a estrutura de dados stocks. ts $ FOX. Especificamente, o quadro de dados é indexado pelo nome da coluna com c ('sma_200', 'sma_50'). Este objeto é passado para dySeries () nas próximas 2 linhas. Você pode se referir a uma coluna por nome para que dySeries () traçam uma linha para os valores "40 e 40" nas linhas 2 e 3. Este objeto é reenviado novamente para o dyRangeSelector () para ajustar a altura do seletor. Por fim, adicionei algum sombreamento para definir períodos em que você quisesse comprar ou manter o patrimônio líquido e um período em que você deveria ter vendido suas ações ou ficado afastado, dependendo da sua posição.
Aqui está o resultado final em uma série de tempo interativa.
As médias móveis FOX com regiões sombreadas para comprar / segurar versus vender.
Conclusão.
Como comerciante algorítmico de brotação, você não precisa traçar todos os 70 compartilhamentos. Em vez disso, você gostaria de executar o código todos os dias e adicionar uma maneira programática para identificar estoques que se encaixam no método baseado em regras, "compre se a média móvel de 50 dias está acima da média móvel de 200 dias". À medida que você revisa o gráfico anterior, a seção verde é uma hora em que você compraria o capital da FOX. A seção vermelha representa o tempo para vender suas ações e não voltar a entrar.
Como o gráfico é interativo, você pode usar o controle deslizante para redimensionar o visual. Com base nesta abordagem simples de troca de algo, agora pode ser um bom momento para comprar FOX! 30 de dezembro de 2018 foi um dia de negociação em que a média móvel de 50 dias mudou US $ 0,01 maior do que a média móvel de 200 dias!
A seção ampliada da equidade FOX.
Claro, lembre-se de todos os investimentos podem perder valor. Para saber mais sobre finanças e trocas comerciais, cheque os cursos da DataCamp aqui.

Usando r para negociação de opções
Puxe pedidos 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 o Git ou o check-out com o SVN usando o URL da web.
R Code API for Forex Trading com OANDA Broker (CFTC e corretor de varejo regulamentado da SEC). Este código é uma série de funções para o uso da API Oanda REST, mais sobre Oanda pode ser lido em sua Página Inicial.
Foi adicionada a opção Contagem à função HisPrices, que é para recuperar uma quantidade fixa de velas, em vez de recuperar o número de velas que está presente em um intervalo de datas do início ao fim. Ainda está disponível a opção de obter os preços históricos de um intervalo de datas. A opção Contagem é usar os valores de granularidade menores, pois desde 1 dia a outro há mais de 5000 velas e esse é o limite de OANDA pela quantidade de histórico disponível por solicitação. Então, agora, cada pedido de preços históricos deve incluir o parâmetro Count, se o pedido for para um intervalo de datas, o valor de Count deve ser NULL, se o pedido for para uma quantidade fixa de velas, os valores de Start e End, ambos, deve ser NULL.
Na Oanda, pode-se trocar mais do que apenas o mercado FOREX, mas principalmente é isso, de modo a ter uma melhor compreensão sobre o que é FOREX trading:
E sobre o que e API, REST API são?
Tenha uma conta: você deve realmente obter uma conta com o OANDA, Live ou Practice está bem e exatamente o mesmo, se você não possui um, você pode criá-lo a partir daqui Abrir conta.
Obtenha Acesso à API REST: Faça o login - & gt; Procurar o link Gerenciar acesso à API - & gt; Gerar token de acesso pessoal.
Salve informações com segurança: ter esse símbolo é como ter sua senha, então mantenha-o seguro. Se você já perdeu ou precisa mudá-lo, está certo e o anterior é reprovado assim que você gerar outro, então você pode revogá-lo sempre que quiser.
OANDA tem uma página dedicada para fornecer todo o tipo de ajuda e exemplos para desenvolvedores, em muitos idiomas, você sempre pode ir lá e considerar ter um recurso completo para você Algorithmic Trading.
Qualquer versão está ok. Não é necessário usar RStudio ou qualquer outra GUI para R. Serão necessários pacotes específicos, acabei de adicionar um código para autodetectá-los e instalá-los se você ainda não tiver.
Os pacotes anteriores são realmente necessários não para executar as funções, são expressões regulares de R, mas quando você as liga e executa no seu código. Isso porque algumas funções eu usei dentro da API. Caso prefira ter acesso a esta API com uma linha de código, você pode usar o seguinte e as funções estarão disponíveis localmente (Nota: Você deve executar este código sempre que começar a sessão R).
Instale as bibliotecas necessárias se não estiverem instaladas, se estiverem instaladas basta carregá-las.
Usa a função source_url do downloadador de pacotes para gerar um script R localizado em um repositório GitHub.
AccountID é um número de 7 dígitos, a entrada deve ser numérica, Token é onde o seu e o Start e End são datas no formato * "AAAA-MM-DD".
InstList para obter os instrumentos disponíveis em Oanda e HisPrices * para obter os preços históricos do instrumento selecionado, neste caso, o 117º é o XAU_USD, ou seja, Gold Vs Usd.
&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.

O R Trader.
Usando R e ferramentas relacionadas em Finanças Quantitativas.
Visualizando dados da série temporal em R.
Estou muito satisfeito em anunciar o meu curso DataCamp sobre Visualização de Dados da Série Temporal em R. Este curso também faz parte da série Time com R habilidades. Sinta-se livre para dar uma olhada, o primeiro capítulo é gratuito!
Descrição do Curso.
Como diz o ditado, "Um gráfico vale mais que mil palavras". É por isso que a visualização é a maneira mais utilizada e poderosa de obter uma melhor compreensão dos seus dados. Após este curso, você terá uma ótima visão geral das capacidades de visualização da série R e você poderá decidir melhor o modelo a ser escolhido para análise subseqüente. Você também poderá transmitir a mensagem que deseja entregar de forma eficiente e linda.
Esboço de Curso.
Capítulo 1: R Time Series Visualization Tools.
Este capítulo irá apresentá-lo às ferramentas básicas de visualização da série R.
Capítulo 2: séries temporais univariadas.
Os gráficos univariados são projetados para aprender o máximo possível sobre a distribuição, a tendência central e a disseminação dos dados em questão. Neste capítulo, você receberá algumas ferramentas visuais usadas para diagnosticar séries de tempos univariados.
Capítulo 3: séries temporais multivariadas.
O que fazer se você tiver que lidar com séries temporais multivariadas? Neste capítulo, você aprenderá como identificar padrões na distribuição, tendência central e propagação em pares ou grupos de dados.
Capítulo 4: Estudo de caso: selecionando visualmente um estoque que melhora sua carteira existente.
Deixe colocar tudo o que aprendeu até agora na prática! Imagine que você já possui um portfólio de ações e você tem algum dinheiro extra para investir, como você pode escolher com sabedoria um novo estoque para investir seu dinheiro adicional? Analisar as propriedades estatísticas das ações individuais versus um portfólio existente é uma boa maneira de abordar o problema.
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 torno 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 à R. I & # 8217; tenho usado o IQFeed há alguns anos e estou feliz com ele (eu não sou afiliado à empresa em nenhum 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 de executar alguns testes, mudei meu código que ainda estava em Python em R. Apenas por completude, aqui é um link que explica como baixar dados históricos do IQFeed usando o Python.
O QuantTools oferece quatro funcionalidades principais: Obter dados de mercado, armazenar / recuperar dados do mercado, traçar dados da série temporal e testar as costas.
Primeiro, certifique-se de que o IQfeed esteja aberto. Você pode baixar dados diários ou intraday. O código abaixo baixa os preços diários (Open, High, Low, Close) para a 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 levar qualquer um dos seguintes valores: tick, 1min, 5min, 10min, 15min, 30min, hora, dia, semana, mês, dependendo da frequência que você precisa.
O QuantTools torna o processo de gerenciamento e armazenamento de dados do mercado de tiques fácil. Você apenas configura parâmetros de armazenamento e está pronto para ir. Os parâmetros são onde, desde que data e quais símbolos você gostaria de ser armazenado. Sempre que você pode adicionar mais símbolos e se eles não estiverem presentes em um armazenamento, o QuantTools tenta 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 / Documents / Market Data / 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 com uma das seguintes.
Agora, você deseja recuperar alguns dos dados armazenados, basta executar algo como:
Observe que apenas os tiques são suportados no armazenamento local, pelo que o período deve ser & # 8216; assinalar & # 8217;
O QuantTools fornece a função plot_ts para traçar dados da série temporal sem fins de semana, feriados e intervalos overnight. 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 a notar: primeiro espião é um objeto data. table daí a sintaxe acima. Para obter uma visão geral rápida das capacidades de data. table, veja esta excelente folha de truques da 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 comercial 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 QuantTools.
No geral, considero 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 de fim a fim real.
Como de costume, todos os comentários são bem-vindos.
BERT: um recém-chegado na conexão do R Excel.
Alguns meses atrás, um leitor me apontou essa nova maneira de conectar R e Excel. Eu não sei por quanto tempo isso aconteceu, mas nunca encontrei isso e eu nunca vi nenhuma postagem no blog ou artigo 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. É grátis (licenciado sob a GPL v2) e foi desenvolvido pela Structured Data LLC. No momento da redação, 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 de Excel, ele é para escrever funções definidas pelo usuário (UDFs) em R.
Nesta publicação, não vou mostrar-lhe como o R e o Excel interagem através do BERT. Há muito bons tutoriais aqui, aqui e aqui. Em vez disso, quero mostrar-lhe como usei o BERT para criar uma torre de controle # 8222; para minha negociação.
Meus sinais comerciais são gerados usando uma longa lista de arquivos R, mas eu preciso da flexibilidade do Excel para exibir resultados de forma rápida e eficiente. Como mostrado acima, o BERT pode fazer isso por mim, mas eu 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 VBA. Essas funções VBA estão envolvidas em torno de funções R definidas usando o BERT.
Com esta abordagem, posso manter uma distinção clara entre o núcleo do meu código mantido em R, SQL e Python e tudo usado para exibir e formatar resultados mantidos no Excel, VBA e amp; XML. Nas próximas seções, apresento o pré-requisito para desenvolver essa abordagem e um guia passo a passo que explica como o BERT poderia ser usado para simplesmente passar dados de R para Excel com um código mínimo de VBA.
1 & # 8211; Baixe e instale o BERT a partir deste link. Uma vez que a instalação foi concluída, você deve ter um novo menu de suplementos no Excel com os botões como mostrado abaixo. É assim que o BERT se materializou no Excel.
2 & # 8211; Baixe e instale o editor de UI personalizado: O Editor de UI personalizado permite criar menus e botões definidos pelo usuário na faixa de 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. Ele calcula e retorna os resíduos de uma regressão linear. Isto é o que queremos recuperar no Excel. Salve isso em um arquivo chamado myRCode. R (qualquer outro nome está bem) em um diretório de sua escolha.
2 & # 8211; functions. R em BERT: do Excel, selecione Add-Ins - & gt; Diretório inicial 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 está bem). Este é um arquivo ativado por macro que você salva no diretório de sua escolha. Uma vez que o arquivo é salvo, feche-o.
4 & # 8211; Abra o arquivo criado acima no editor UI personalizado: depois que o arquivo estiver aberto, cole o código abaixo.
Você deve ter algo assim no editor XML:
Essencialmente, essa parte do código XML cria um menu adicional (RTrader), um novo grupo (Meu Grupo) e um botão definido pelo usuário (Novo botão) na faixa do Excel. Depois de concluir, 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 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. Do meu ponto de vista, o interesse de tal abordagem é a capacidade de colar R e Excel, obviamente, mas também para incluir via XML (e lote) partes de código de Python, SQL e muito mais. Isso é exatamente o que eu precisava. Finalmente, ficaria curioso para 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 as 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 fora dos dados de amostra: a parte dos dados utilizados 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 simples inspeção visual revela um bom ajuste entre o desempenho dentro e fora da amostra, mas o grau de confiança que 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 dentro e fora da amostra. Em termos estatísticos, isso pode ser traduzido como a probabilidade de os números de desempenho dentro e fora da amostra serem provenientes da mesma distribuição. Existe um teste estatístico não paramétrico que faz exatamente isso: o teste 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 deste 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 amostra é mais longo do que o período fora da amostra, portanto, criei aleatoriamente 1000 subconjuntos dos dados de amostra, cada um deles com o mesmo comprimento que os dados fora da amostra. Então eu testei cada um em subconjunto de amostra contra os 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 nesta publicação é um exemplo de brinquedo que apenas arranha a superfície do problema e deve ser adaptado às necessidades individuais. No entanto, acho que propõe um quadro estatístico interessante e racional para avaliar os resultados 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 (2018), "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 2018.
Apresentando fidlr: FInancial Data LoadeR.
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 amável: & # 8220; O SOFTWARE É FORNECIDO & # 8220; COMO ESTÁ & # 8221 ;, SEM GARANTIA DE QUALQUER TIPO & # 8230; & # 8221;
Como instalar e usar o fidlr?
Você pode obter o addin / pacote de seu repositório Github aqui (Eu vou registrá-lo em CRAN mais tarde) Instale o addin. Existe um excelente tutorial para instalar o RStudio Addins aqui. Uma vez que o addin está instalado, ele deve aparecer no menu Addin. Basta escolher fidlr no menu e uma janela como ilustrada abaixo deve aparecer. Escolha um fornecedor de dados no menu suspenso Origem. Selecione um intervalo de datas no menu Data Digite o símbolo que deseja baixar na caixa de texto do instrumento. Para baixar vários símbolos, basta inserir os símbolos separados por vírgulas. Use os botões de rádio 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 addin.
Mensagens de erro e avisos são tratados pelos pacotes subjacentes (quantmod e Shiny) e podem ser lidos a partir do 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: thertrader @ gmail.
Mantendo 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, suponho que os dados sejam provenientes do Yahoo. O código terá que ser alterado para dados do Google, Quandl etc e # 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 freqüência mais alta e outro tipo de conjunto de dados (ou seja, diferente dos preços).
1 & # 8211; Transferência inicial de dados (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 baixa um conjunto de preços diários dos ETFs do Yahoo Finance de volta para 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 para este instrumento sozinho.
3 & # 8211; Crie um arquivo em lote (updateDailyPrices. bat)
Outra parte importante do trabalho é criar um arquivo em lote que automatiza o processo de atualização acima (I & # 8217; m 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). Observe 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 já usei isso por um tempo e tem funcionado muito bem para mim até agora. Para dados mais avançados e / ou frequências mais elevadas, as coisas podem ficar muito mais complicadas.
Como de costume, todos os comentários são bem-vindos.
The Rise of the Robots (Advisors & # 8230;)
A indústria de gerenciamento de ativos está à beira de uma grande mudança. Ao longo dos últimos anos, os Robots Advisors (RA) emergiram como novos jogadores. O termo em si é difícil de definir, pois engloba uma grande variedade de serviços. Alguns são projetados para ajudar conselheiros tradicionais a alocar melhor o dinheiro de seus clientes e alguns são reais & # 8220; caixa preta & # 8221 ;. O usuário insere alguns critérios (idade, renda, filhos, etc. & # 8230;) e o robô propõe uma alocação personalizada. Entre esses dois extremos, está disponível uma gama completa de ofertas. Encontrei a definição da Wikipedia muito boa. & # 8220; Eles são uma classe de consultor financeiro que fornece gerenciamento de portfólio on-line com uma intervenção humana mínima & # 8221 ;. Mais precisamente, eles usam gerenciamento de portfólio baseado em algoritmos para oferecer todo o espectro de serviços que um conselheiro tradicional ofereceria: reinvestimento de dividendos, relatórios de conformidade, reequilíbrio de portfólio, colheita de perda de impostos, etc. & # 8230; (Bem, isso é o que a comunidade de investimentos quantitativos está fazendo há décadas!). A indústria ainda está em sua infância, com a maioria dos jogadores ainda gerenciando uma pequena quantidade de dinheiro, mas eu só percebi o quão profunda era a mudança quando eu estava em Nova York há alguns dias. Quando a RA recebe seus nomes na TV adiciona ou no telhado do taxi de Nova York você sabe que algo grande está acontecendo e # 8230;
Está ficando cada vez mais atenção da mídia e, acima de tudo, faz muito sentido da perspectiva do investidor. Na verdade, existem duas vantagens principais na utilização da RA:
Taxas significativamente mais baixas sobre os conselheiros tradicionais O investimento é mais transparente e mais simples, o que é mais atraente para pessoas com conhecimentos financeiros limitados.
Nesta publicação, R é apenas uma desculpa para apresentar bem o que é uma grande tendência no setor de gerenciamento de ativos. O gráfico abaixo mostra as quotas de mercado da RA mais popular do final de 2018. O código usado para gerar o gráfico abaixo pode ser encontrado no final desta publicação e os dados estão aqui.
Esses números são um pouco datados, desde a rapidez com que essa indústria evolui, mas ainda é muito informativa. Não é de surpreender que o mercado seja dominado por provedores dos EUA, como Wealthfront e Betterment, mas a RA surge em todo o mundo: Ásia (8Now!), Suíça (InvestGlass), França (Marie Quantier) e # 8230; .. Ele está começando a afetar significativamente da forma como os gestores de ativos tradicionais estão fazendo negócios. Um exemplo proeminente é a parceria entre Fidelity e Betterment. Desde dezembro de 2018 Melhoramento após a marca AUM de US $ 2 bilhões.
Apesar de tudo acima, acho que a verdadeira mudança está à nossa frente. Como eles usam menos intermediários e produtos de baixa comissão (como ETFs) eles cobram taxas muito mais baixas do que os conselheiros tradicionais. A RA certamente ganhará quotas de mercado significativas, mas também reduzirá as taxas cobradas pela indústria como um todo. Em última análise, isso afetará a forma como as empresas de investimento tradicionais fazem negócios. O gerenciamento de portfólio ativo que está tendo um tempo difícil por alguns anos agora sofrerá ainda mais. As taxas elevadas que cobra serão ainda mais difíceis de justificar a menos que se reinvente. Outro impacto potencial é o aumento de ETFs e produtos financeiros de baixa comissão em geral. Obviamente, isso começou há um tempo atrás, mas acho que o efeito será ainda mais pronunciado nos próximos anos. Novas gerações de ETF acompanham índices mais complexos e estratégias customizadas. Essa tendência ficará mais forte inevitavelmente.
Como de costume, todos os comentários são bem-vindos.
R séries de séries de tempo financeiras que todos devem conhecer.
Há muitos tutoriais da série R que flutuam na web, este post não foi projetado para ser um deles. Em vez disso, eu quero apresentar uma lista dos truques mais úteis que encontrei ao lidar com séries temporais financeiras em R. Algumas das funções apresentadas aqui são incrivelmente poderosas, mas infelizmente enterradas na documentação, portanto, meu desejo de criar uma publicação dedicada. Eu só dirijo séries de tempos de frequência diária ou baixa. Lidar com dados de freqüência mais alta requer ferramentas específicas: pacotes de dados ou de alta freqüência são alguns deles.
xts: O pacote xts é o que deve ter quando se trata de séries de tempos em R. O exemplo abaixo carrega o pacote e cria uma série de tempo diária de 400 dias, normalmente retornados distribuídos.
merge. xts (pacote xts): Isso é incrivelmente poderoso quando se trata de vincular duas ou mais vezes as séries, se elas têm o mesmo comprimento ou não. O argumento de junção faz a magia! Ele determina como a ligação é feita.
apply. yearly / apply. monthly (pacote xts): aplique uma função específica para cada período distinto em um determinado objeto de séries temporais. O exemplo abaixo calcula os retornos mensais e anuais da segunda série no objeto tsInter. Observe que eu uso a soma dos retornos (sem composição)
pontos de extremidade (pacote xts): extrair valores de índice de um determinado objeto xts correspondente às últimas observações, dado um período especificado por on. O exemplo dá o último dia do mês retorna para cada série no objeto tsInter usando o ponto final para selecionar a data.
na. locf (pacote zoológico): função genérica para substituir cada NA com o mais recente não-NA antes dele. Extremamente útil ao lidar com uma série de tempo com alguns furos # 8221; e quando esta série de tempo é posteriormente utilizada como entrada para funções R que não aceita argumentos com NAs. No exemplo, crio uma série temporal de preços aleatórios, em seguida, inclui artificialmente alguns NAs e substitui-los pelo valor mais recente.
charts. PerformanceSummary (pacote PerformanceAnalytics): para um conjunto de retornos, crie um gráfico de índice de riqueza, barras para desempenho por período e gráfico subaquático para redução. Isso é incrivelmente útil, pois exibe em uma única janela todas as informações relevantes para uma rápida inspeção visual de uma estratégia de negociação. O exemplo abaixo transforma a série de preços em um objeto xts e, em seguida, exibe uma janela com os 3 gráficos descritos acima.
A lista acima não é de forma alguma exaustiva, mas uma vez que você domina as funções descritas nesta publicação torna a manipulação das séries temporais financeiras muito mais fácil, o código mais curto e a legibilidade do código melhor.
Como de costume, todos os comentários são bem-vindos.
Avaliação do fator na gestão quantitativa da carteira.
Quando se trata de gerenciar um portfólio de ações versus um benchmark, o problema é muito diferente de definir uma estratégia de retorno absoluto. No primeiro, é necessário manter mais ações do que no final, onde nenhum estoque pode ser realizado se não houver uma 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 do benchmark. Menos estoques são mantidos em comparação com um benchmark quanto maior o erro de rastreamento (por exemplo, maior risco).
A análise que se segue é amplamente inspirada no livro # 8220; Gerenciamento de portfólio ativo # 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 para a frente. Muitas pessoas criaram muitas ferramentas e inúmeras variantes dessas ferramentas foram desenvolvidas para conseguir isso. Nesta publicação, foco em duas métricas simples e amplamente utilizadas: Coeficiente de Informações (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 direto. 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 ICs devem ser o mais alto possível em termos absolutos.
Para o leitor afiado, 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 ter uma estimativa mais precisa do poder preditivo do fator, é necessário avançar um pouco e agrupar os estoques por quantile de fatores de fator, em seguida, analise o retorno direto médio (ou qualquer outra métrica de tendência central) de cada um desses quantiles. A utilidade desta ferramenta é direta. 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. O bom retorno dos quantiles é caracterizado por uma relação monótona entre os quantiles individuais e os retornos diretos.
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 a medida de retorno direto.
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. Depende realmente do tamanho da amostra, do que você deseja capturar e da sua vontade de ter uma visão ampla ou foco 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 Q1 é mais baixo após 12 meses de retorno e Q5 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 e # 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 um ótimo negócio em si, mas é significativamente diferente de 0 e indica um bom poder preditivo dos últimos 12 meses em geral. Os 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, considerou que, no final de cada mês, o portfólio é totalmente reequilibrado. 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 travão grave 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 & # 8217; que os gerentes não enfrentam restrições que impedem que eles traduzam seus insights 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, todos os comentários são bem-vindos.
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 comentei um comentário como "# 8220; uma redução de 25% em 2018, mas excelente retorno em geral" # 8221 ;. Bem, minha aposta é que ninguém na terra vai deixar você experimentar uma perda de 25% com seu dinheiro (a menos que acordos especiais estejam em vigor). No fundo hedge, as pessoas do mundo têm uma tolerância muito baixa para redução. 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 dia 1 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 a experiência com uma das minhas estratégias.
Você começa a operar em 1º de junho de 2003 e tudo corre bem até 23 de julho de 2003, onde sua curva de retirada 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 sua alocação não teria sido cortada e você acabou fazendo um bom ano em apenas 4 meses completos de negociação. Nesses dois exemplos, nada mudou, mas sua data de início e # 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, freqüências de negociação, etc. & # 8230 ;. A partir dessa perspectiva, o risco é a sua variável de sobrevivência # 8221 ;. 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 fazer as opções de estoque de preço usando R?
A negociação de opções tornou-se muito popular nos últimos anos. Você leu a publicação sobre como ser pago pela compra de seu estoque favorito? Nesta publicação, você aprende uma estratégia de negociação de opções que você pode usar para comprar seu estoque favorito a um preço mais baixo. As opções são um tipo de derivativos. Derivados foram saudados como a revolução financeira do final do século XX. Tipos de derivativos são antecipados, futuros, swaps e opções. Derivados são instrumentos que derivam seu valor de outro objeto subjacente. No caso das opções de compra de ações, seus preços dependem do estoque subjacente.
Nesta publicação, vamos construir dois modelos de preços de opções. O primeiro é o famoso modelo de precificação das Opções de Black Scholes e o segundo é o modelo de preços da Cox-Ross-Rubinstein Options. Depois disso, também discutiremos quais opções são os gregos e como modelar a volatilidade implícita. Também discutiremos por que, na prática, essas fórmulas de preços de opções são usadas em reverso para calcular a volatilidade implícita em vez do preço das opções. . Vamos usar R para fazer a análise. Você deve ter instalado R e RStudio. Gostaria de sugerir se você rapidamente uma implementação muito rápida, você deve instalar o Microsoft R Open. Quantmod é um pacote R importante que fornece análise técnica. Leia esta publicação sobre como usar o pacote R Quantmod na análise diária do mercado de ações.
As opções indicadas acima conduzem o valor do estoque subjacente. O problema é que não sabemos se o contrato de opções vai ser exercido ou não. Isso traz um nível de complexidade quando tentamos avaliar o contrato de opções de compra de ações. A fórmula de Black Scholes assume um processo estocástico contínuo, enquanto o modelo Cox-Ross-Rubinstein assume um processo estocástico discreto. Então, comece com a fórmula de preços Black Scholes Options. Leia esta publicação no sistema de negociação EMA seguro.
Black Scholes Stock Options Pricing Formula.
A fórmula de precificação das opções Black Scholes faz alguns pressupostos. O primeiro é que o mercado é livre de arbitragem. Isso significa que não há nenhum diferencial de preço possível. O segundo pressuposto é que o preço do ativo subjacente segue um movimento browniano. O terceiro pressuposto diz que o estoque subjacente não paga nenhum dividendo. O quarto pressuposto é que não há custos de transação envolvidos e a compra e venda do estoque subjacente pode ser feita em qualquer quantidade fracionada. O último pressuposto é que conhecemos a taxa de juros de curto prazo e essa taxa de juros é constante ao longo do tempo. Agora, não precisamos entrar nos detalhes de como derivamos esta fórmula matematicamente. Usaremos R para calcular o preço das opções de ações quando conhecermos os diferentes parâmetros usados ​​no cálculo do preço das ações. Abaixo, usamos R para calcular o preço da opção de compra de ações Apple AAPL com expiração de 3 meses. O preço das ações da Apple AAPL é de US $ 130 eo preço de exercício do contrato de opções de ações é de US $ 140.
Primeiro, carregamos a biblioteca fOptions, c significa opção de compra. S é o preço das ações que é de US $ 130 por ação. X é o preço de exercício das opções sobre ações, que é de US $ 140 por ação. A taxa de juros de curto prazo é de 2%. A volatilidade implícita foi assumida como sendo de 22%. O preço da opção de compra de ações da Apple é de US $ 2,38. É assim que funciona. O estoque da Apple agora é negociado em US $ 130 por ação. Compramos uma opção de compra. Acreditamos que o preço das ações da Apple aumentará, então nós compramos opções de compra com prazo de 3 meses no estoque da Apple com preço de exercício de US $ 140. Se o preço ultrapassar US $ 140, podemos comprar as ações da AAPL em US $ 140 por ação. No momento, as ações da Apple estão sendo negociadas em US $ 148 por ação. Então você pode ver que podemos comprar ações da Apple baratas. Vamos exercer o contrato de opções de compra de ações da Apple em US $ 140 e depois vender as ações no mercado por US $ 148, com um lucro de US $ 8 por ação. Como o preço era de US $ 2,38 por 100 ações, obtivemos um bom lucro. Leia esta publicação em uma estratégia de negociação Keltner Chanels que gerou US $ 1,1 milhão. Suponha que nosso preço de exercício foi de US $ 135.
Neste caso, o preço das opções de ações aumentou para US $ 3,88. Agora, como dito acima, não precisamos saber como derivar esta fórmula de preços das Opções Black Scholes. Nós só precisamos conectar os diferentes parâmetros na fórmula como opção de chamada / colocação, preço das ações, preço de exercício, taxa de juros de curto prazo, volatilidade implícita, etc. Agora, o problema é que não temos nenhuma maneira de calcular implícito volatilidade. Nós apenas assumimos uma fórmula de volatilidade implícita. Se você não sabe quais são os diferentes parâmetros, use a seguinte fórmula.
Também podemos calcular o preço das opções de venda. Também é muito fácil ao usar R. Abaixo está um cálculo do preço da opção de venda. Mudamos c para p na fórmula. O preço das ações da Apple é de US $ 130. O preço de exercício da opção Put foi de $ 135. A expiração é de 3 meses. A taxa de juros de curto prazo é de 2%. A volatilidade implícita é de 22%.
Agora, como dito acima, a fórmula de preços Black Scholes Options depende muito da volatilidade implícita. A volatilidade implícita é algo que não conhecemos. Então, praticamente, não podemos usar esta fórmula de preço Black Scholes Stock Options. Na maioria das vezes, usamos a fórmula em sentido inverso. Nós complementamos o preço da opção de estoque na fórmula e calculamos a volatilidade implícita. Podemos usar o modelo GARCH para calcular a volatilidade. Leia esta publicação sobre como usar o GARCH na negociação.
A fórmula de preços das opções de ações Cox-Ross-Rubinstein.
A fórmula de Cox-Ross-Rubinstein, também conhecida como fórmula CRR, é diferente da fórmula de preços da Black Scholes Stock Options. O pressuposto fundamental na fórmula CRR é que o preço do estoque subjacente segue uma distribuição binomial discreta. O que isso significa é que o preço das ações subiu por um determinado valor ou diminui em um determinado valor em cada período. A árvore binomial está se recombinando. O que isso significa é que em 2 períodos, o preço pode subir e depois para baixo ou pode descer e subir com o mesmo preço final. Abaixo é calculado o preço das opções de ações da Apple usando o mesmo preço de exercício, volatilidade implícita, taxa de juros de curto prazo como acima para a fórmula de Black Scholes.
Você pode ver preços de opções usando a fórmula de Cox-Ross-Rubinstein perto da fórmula de Black Scholes, mas não o mesmo. Agora, não é necessário fazer a derivação matemática complexa da fórmula CRR. Também podemos traçar a fórmula de opções de chamadas acima, bem como a opção de opções de fóruns binomiais por 3 períodos. Por muito tempo, o código para as opções de chamadas é uma árvore binomial.
Ao mudar ce to pe, também podemos traçar a árvore binomial put options. Leia esta publicação sobre como fazer a Análise de Componentes de Principios no Dow Jones Industrial Average DJIA. Por sua vez, as opções de chamadas são uma parcela de árvore binomial.
Abaixo está a árvore binomial das opções de colocação.
Agora você viu uma diferença no preço das opções entre as duas fórmulas. A diferença de preço não é muito. Black Scholes calculou o preço das opções de compra em US $ 3,88, enquanto a fórmula Cox-Ross-Rubinstein calculou o preço das opções de chamadas em US $ 4,03. A diferença não é ótima, mas está lá. É devido à diferença nas duas fórmulas de derivações matemáticas. Na fórmula de Black Scholes, assumimos uma fórmula estocástica contínua enquanto que nas fórmulas Cox-Ross-Rubinstein assume uma fórmula binomial discreta. W pode reduzir a diferença de preço, reduzindo o comprimento do tempo na fórmula Cox-Ross-Rubinstein.
Como calcular as opções de gregos?
Os gregos medem a sensibilidade de um contrato de opções para diferentes fatores de mercado. Por exemplo, delta é a sensibilidade ao preço do estoque subjacente. Gamma é a sensibilidade ao delta ao preço do estoque subjacente. Você pode chamar delta delta delta. Theta é sensível ao tempo enquanto rho é sensível à taxa de risco livre. Por último, a vega é a sensibilidade à volatilidade implícita. Em termos matemáticos, todos os gregos são derivados parciais que medem a taxa de mudança em relação a algum parâmetro. Abaixo calculamos os gregos usando R.
Você pode ver R é muito rápido no cálculo dos gregos. Straddle é uma importante estratégia de negociação de opções. Nós construímos um stradde comprando uma opção de colocação e chamada ao mesmo tempo. Abaixo estão os cálculos delta para um estrondo.
Econometria é um assunto importante que muitos comerciantes não conhecem. Eu desenvolvi esse curso em Econometria para comerciantes em que eu mostro como você pode usar a econometria em sua negociação. É o enredo delta para essa compilação de opção straddle com opções de colocação e chamada de ações da Apple.
Se você está interessado, você pode dar uma olhada no meu curso Cálculo estocástico para comerciantes. Neste curso, mostro-lhe como derivar matematicamente a fórmula de preços das opções Black Scholes, bem como a fórmula de preços das opções Cox-Ross-Rubinstein.
0 comentários.
Junte-se ao nosso desafio de troca de milhões de dólares hoje. Inscreva-se no nosso boletim de notícias Swing Trading Ultimate. Baixe 3 Powerful Artificial Intelligence Machine Learning Swing Trading Indicators GRÁTIS!
Sua informação é 100% segura conosco e nunca será compartilhada.
Direitos autorais e cópia; 2018 · Stock. TradingNinja · Todos os direitos reservados.
Baixe o eBook Como fiz $ 2 milhões no mercado de ações GRÁTIS!

No comments:

Post a Comment