пятница, 8 июня 2018 г.

Pacote r forex


Pacote R forex
Esta Tarefa do CRAN contém uma lista de pacotes úteis para o trabalho empírico em Finanças, agrupados por tópico.
Além desses pacotes, uma ampla variedade de funções adequadas para o trabalho empírico em Finanças é fornecida tanto pelo sistema R básico (e seu conjunto de pacotes principais recomendados), quanto por vários outros pacotes na Comprehensive R Archive Network (CRAN). Conseqüentemente, vários dos outros modos de exibição do CRAN podem conter pacotes adequados, em particular os modos de visualização Econetrics, Multivariate, Optimization, Robust, SocialSciences e TimeSeries.
O pacote ctv suporta essas visualizações de tarefas. Suas funções install. views e update. views permitem, respectivamente, a instalação ou atualização de pacotes de uma determinada Task View; a opção coreOnly pode restringir as operações aos pacotes rotulados como core abaixo.
As contribuições são sempre bem-vindas e incentivadas. Desde o início desta visão de tarefas do CRAN em abril de 2005, a maioria das contribuições chegou como sugestões por e-mail. O arquivo de origem para este arquivo de visão de tarefa particular agora também reside em um repositório GitHub (veja abaixo) para que pedidos pull também sejam possíveis.
Modelos de regressão padrão.
Uma visão geral detalhada das metodologias de regressão disponíveis é fornecida pela visão de tarefa da Econometria. Isso é complementado pela visão de tarefa robusta, que se concentra em métodos mais robustos e resistentes. Modelos lineares como mínimos quadrados ordinários (OLS) podem ser estimados por lm () (pelo pacote stats contido na distribuição R básica). A estimativa da Máxima Verossimilhança (ML) pode ser realizada com a função padrão optim (). Muitos outros métodos adequados são listados na visualização Otimização. Os mínimos quadrados não lineares podem ser estimados com a função nls (), assim como com nlme () do pacote nlme. Para o modelo linear, uma variedade de testes de diagnóstico de regressão é fornecida pelos pacotes car, lmtest, strucchange, urca e sandwich. Os pacotes Rcmdr e Zelig fornecem interfaces de usuário que podem ser de interesse também.
Uma visão geral detalhada das ferramentas para análise de séries temporais pode ser encontrada na visão de tarefa TimeSeries. Abaixo, uma breve visão geral dos métodos mais importantes em finanças é dada. A funcionalidade de série temporal clássica é fornecida pelos comandos arima () e KalmanLike () na distribuição R básica. Os pacotes dse e timsac fornecem uma variedade de métodos de estimativa mais avançados; o fracdiff pode estimar séries fracionariamente integradas; longmemo abrange material relacionado. O fractal fornece funcionalidade de modelagem de série temporal fractal. Para modelagem de volatilidade, o modelo padrão GARCH (1,1) pode ser estimado com a função garch () no pacote tseries. Rmetrics (veja abaixo) contém o pacote fGarch que possui modelos adicionais. O pacote rugarch pode ser usado para modelar uma variedade de modelos GARCH univariados com extensões como ARFIMA, regressores externos médios e várias outras especificações; com métodos de ajuste, previsão, simulação, inferência e plotagem são fornecidos também. O rmgarch baseia-se nele para fornecer a capacidade de estimar vários modelos GARCH multivariados. O pacote betategarch pode estimar e simular o modelo Beta-t-EGARCH de Harvey. O pacote bayesGARCH pode realizar uma estimativa bayesiana de um modelo GARCH (1,1) com as inovações t de Student. Para modelos multivariados, o pacote ccgarch pode estimar (multivariada) modelos GARCH de Correlação Condicional, enquanto o pacote gogarch fornece funções para modelos GARCH ortogonais generalizados. O pacote gets (que foi precedido por um pacote relacionado, o AutoSEARCH), fornece uma seleção automatizada de modelo geral para específico da média e volatilidade de log de um modelo log-ARCH-X. O pacote GEVStableGarch pode ajustar-se aos modelos ARMA-GARCH ou ARMA-APARCH com distribuições condicionais estáveis ​​e GEV. O pacote lgarch pode estimar e ajustar os modelos log-Garch. Testes de raiz unitária e cointegração são fornecidos por tseries e urca. Os pacotes Rmetrics timeSeries e fMultivar contêm um número de funções de estimativa para ARMA, GARCH, modelos de memória longa, raízes unitárias e muito mais. O pacote CADFtest implementa o teste da raiz unitária de Hansen. MSBVAR fornece estimativa Bayesiana de modelos vetoriais autorregressivos. O pacote dlm fornece análises Bayesiana e de probabilidade de modelos lineares dinâmicos (isto é, modelos de espaço de estado gaussiano linear). O pacote vars oferece estimativa, diagnóstico, previsão e decomposição de erros do modelo VAR e SVAR em uma estrutura clássica. Os pacotes dyn e dynlm são adequados para modelos de regressão dinâmicos (lineares). Vários pacotes fornecem funcionalidade de análise wavelet: rwt, wavelets, waveslim, wavethresh. Alguns métodos da teoria do caos são fornecidos pelo pacote tseriesChaos. tsDyn adiciona análise de séries temporais baseada na teoria de sistemas dinâmicos. O pacote de previsão adiciona funções para problemas de previsão. O pacote tsfa fornece funções para análise fatorial de séries temporais. O pacote stochvol implementa a estimativa Bayesiana da volatilidade estocástica usando o Monte Carlo da Cadeia de Markov e a factorstochvol estende isso para o caso multivariado. O pacote MSGARCH adiciona métodos para ajustar (por Máxima Verossimilhança ou Bayesiana), simular e prever vários processos GARCH Markov-Switching.
O conjunto de pacotes Rmetrics compreende fAssets, fBasics, fBonds, timeDate (anteriormente: fCalendar), fCopulae, fExoticOptions, fExtremes, fGarch, fImport, fNonlinear, fOptions, fPortfolio, fRegression, timeSeries (anteriormente: fSeries), fTrading e contém um grande número de funções relevantes para diferentes aspectos de finanças empíricas e computacionais. O pacote RQuantLib oferece várias funções de precificação de opções, bem como algumas funcionalidades de renda fixa do projeto QuantLib para R. O RcppQuantuccia fornece um subconjunto menor de funcionalidade QuantLib como uma biblioteca somente de cabeçalho; Atualmente, apenas algumas funcionalidades de calendário são expostas. O pacote quantmod oferece várias funções para modelagem quantitativa em finanças, bem como aquisição de dados, plotagem e outras utilidades. O pacote de portfólio contém classes para gerenciamento de portfólio de ações; o portfolioSim constrói um framework de simulação relacionado. O backtest oferece ferramentas para explorar hipóteses baseadas em portfólio sobre instrumentos financeiros. O pacote pa oferece funcionalidade de atribuição de desempenho para carteiras de ações. O pacote PerformanceAnalytics contém um grande número de funções para cálculos de desempenho de portfólio e gerenciamento de riscos. O TTR contém funções para construir regras técnicas de negociação em R. O pacote financeiro pode computar valores presentes, fluxos de caixa e outros cálculos financeiros simples. O pacote sde fornece funcionalidade de simulação e inferência para equações diferenciais estocásticas. Os pacotes termstrc e YieldCurve contêm métodos para a estimação de curvas de juros de cupom zero e curvas de spread baseadas no método paramétrico de Nelson e Siegel (1987) com a extensão de Svensson (1994). O pacote anterior adiciona a abordagem de splines cúbicos de McCulloch (1975), o último pacote adiciona a abordagem de Diebold e Li. O SmithWilsonYieldCurve constrói a curva de juros usando a abordagem Smith-Wilson baseada nas taxas LIBOR e SWAP. O pacote vrtest contém vários testes de razão de variância para a forma fraca da hipótese de mercados eficientes. O pacote gmm fornece a função de estimativas de método de momentos generalizados (GMM) que são frequentemente usadas quando se estimam os parâmetros das condições de momento implícitas por um modelo de precificação de ativos. O pacote tawny contém um estimador baseado na teoria de matriz aleatória, bem como métodos de encolhimento para remover o ruído de amostragem ao estimar matrizes de covariância de amostra. O pacote maRketSim oferece um simulador de mercado, projetado inicialmente em torno do mercado de títulos. O pacote BurStFin e BurStMisc possui uma coleção de funções para Finanças, incluindo a estimativa de matrizes de covariância. O pacote AmericanCallOpt contém um pricer para diferentes opções de chamadas americanas. O pacote VarSwapPrice pode precificar um swap de variação através de um portfólio de contratos de opções europeus. O pacote FinAsym implementa os testes de Lee e Ready (1991) e Easley e O'Hara (1987) para, respectivamente, direção comercial e probabilidade de negociação informada. O pacote parma fornece suporte para aplicativos de gerenciamento de risco e alocação de portfólio. O pacote GUIDE fornece uma GUI para os rivatives DE e contém numerosos exemplos de pricer e plotagens interativas 2D e 3D para estudar essas funções de precificação. O pacote SharpeR contém uma coleção de ferramentas para analisar a significância das estratégias de negociação, com base na proporção de Sharpe e na superposição do mesmo. O pacote RND implementa várias funções para extrair densidades neutras ao risco dos preços das opções. O pacote LSMonteCarlo pode precificar as Opções Americanas através do método de Monte Carlo dos Mínimos Quadrados. O pacote BenfordTests fornece sete testes estatísticos e funções de suporte para determinar se os dados numéricos podem estar em conformidade com a lei de Benford. O pacote OptHedging valoriza o portfólio de opções call and put e implementa uma estratégia de hedge ótima. O pacote markovchain fornece funcionalidade para manipular e analisar facilmente cadeias distintas de Markov. Os modelos de embalagem ycinterextra permitem a interpolação e a extrapolação da curva usando os modelos de Nelson-Siegel, Svensson ou Smith-Wilson, bem como as splines cúbicas de Hermite. Os modelos de pacote tvm fornecem funções para o valor do dinheiro no tempo, como fluxos de caixa e curvas de juros. O pacote MarkowitzR fornece funções para testar a significância estatística dos portfólios de Markowitz. O pacote pbo modela a probabilidade de overfitting de backtest, degradação do desempenho, probabilidade de perda e dominância estocástica ao analisar estratégias de negociação. O pacote OptionPricing implementa algoritmos Monte Carlo eficientes para o preço e as sensibilidades das opções asiáticas e européias sob o movimento Browniano Geométrico. O pacote matchingMarkets implementa um estimador estrutural para corrigir o viés resultante da correspondência endógena (por exemplo, formação de grupo em microfinanças ou combinação de firmas e capitalistas de risco). O pacote restimizeapi faz a interface da API em estimize, que fornece estimativas de ganhos de origem coletiva. O pacote credule é outro pricer para swaps de crédito. O pacote covmat fornece vários métodos diferentes para calcular as matrizes de covariância. O pacote obAnalytics analisa e visualiza informações de eventos em dados de pedidos limitados. O pacote derivmkts adiciona um conjunto de funções de precificação e exposição úteis no ensino de mercados de derivativos. O pacote PortfolioEffectHFT fornece uma análise de portfólio adequada para dados intra-dia e de alta frequência e também faz a interface do serviço PortfolioEffect. O preço dos pacotes de produtos de balcão é derivado de uma extensão para Black e Scholes, apoiando a inadimplência sob um preço de ligação de lei de poder e taxa de risco. O pacote sharpeRratio adiciona uma estimativa livre de momentos das taxas de Sharpe. O pacote QuantTools oferece ferramentas aprimoradas de negociação quantitativa e modelagem. O pacote pinbasic adiciona ferramentas para estimativas rápidas e estáveis ​​da probabilidade de negociação informada (PIN) por Easley et al, e oferece factorizations da probabilidade do modelo. Os pacotes InfoTrad também estimam o PIN e o prolongam em diferentes algoritmos de fatoração e estimativa. O pacote FinancialMath contém funções de cálculo de preço de derivativos e matemática, conforme exigido pelos exames atuariais pelo exame "Matemática financeira" da Society of Actuaries and Casualty Society Actuarial. O pacote tidyquant reorganiza a funcionalidade de vários outros pacotes de chaves para uso no chamado tidyverse. O BCC1997 precifica as opções européias sob o modelo de Bakshi, Cao e Chen (1997) para volatilidade estocástica, taxas estocásticas e saltos aleatórios. O pacote Sim. DiffProc fornece funções para simular e analisar cálculos estocásticos multidimensionais de Itґ e Stratonovitch para modelos de tempo contínuo. O pacote rpgm oferece uma rápida simulação de variáveis ​​aleatórias normais e exponenciais e equações diferenciais estocásticas. O pacote BLModel calcula a distribuição posterior em um modelo Black-Litterman a partir de uma distribuição anterior dada por retornos de ativos e distribuição contínua de visualizações dada por uma função externa. O pacote rpatrec visa reconhecer padrões de gráficos em dados de séries temporais (financeiros). O PortfolioOptim pode resolver a otimização de portfólio de amostras pequenas e grandes. O pacote estudy2 implementa os testes de metodologia de estudo de eventos paramétricos e não paramétricos mais comumente usados.
O Task View ExtremeValue reagrupa vários pacotes relevantes. Os pacotes CreditMetrics e crp. CSFP fornecem função para modelar os riscos de crédito. O pacote mvtnorm fornece código para distribuições normal e t multivariadas. Os pacotes Rmetrics fPortfolio e fExtremes também contêm várias funções relevantes. Os pacotes copula e fgac cobrem estruturas de dependências multivariadas usando métodos copula. O pacote actuar fornece uma perspectiva atuarial para a gestão de risco. O pacote ghyp fornece funções generalizadas de distribuição hibernética, bem como procedimentos para otimizações de portfólio VaR, CVaR ou target-return. O pacote ChainLadder fornece funções para modelagem de reservas de sinistro de seguro; e o pacote lifecontingencies fornece funções para avaliações financeiras e atuariais de contingências de vida. O pacote frmqa visa coletar funções para Gerenciamento de Risco Financeiro e Análise Quantitativa. O pacote ESG pode ser usado para modelar a projeção de ativos, uma abordagem de simulação baseada em cenários. O pacote riskSimul fornece procedimentos de simulação eficientes para estimar probabilidades de perda de cauda e excesso condicional para uma carteira de ações onde log-retornos são considerados como seguindo um modelo de t-cópula com hiperbólicas generalizadas ou t marginais. O pacote GCPM analisa o risco de inadimplência da carteira de crédito usando abordagens analíticas e de simulação. O pacote FatTailsR fornece uma família de quatro distribuições adaptadas para distribuição com caudas gordas simétricas e assimétricas. O pacote Dowd contém funções portadas da caixa de ferramentas "MMR2" oferecida no livro de Kevin Dowd "Measuring Market Risk". O pacote PortRisk calcula a atribuição de risco do portfólio. O pacote NetworkRiskMeasures implementa algumas medidas de risco para redes financeiras, tais como DebtRank, Susceptibility, Impact Diffusion e Impact Fluidity. O pacote de risco calcula 26 medidas de risco financeiro para qualquer distribuição contínua. O pacote RiskPortfolios constrói portfólios baseados em risco de acordo com os documentos correspondentes de Ardia et al. Os modelos de pacote resseguradorR resseguram uma classe Reclamações cujo objetivo é armazenar sinistros e prêmios, sobre os quais diferentes tratados podem ser aplicados. O pacote RM2006 estima a matriz de covariância condicional usando a metodologia RiskMetrics 2006 descrita em Zumbach (2007).
O pacote NMOF fornece funções, exemplos e dados de Métodos Numéricos e Otimização em Finanças por Manfred Gilli, Dietmar Maringer e Enrico Schumann (2011), incluindo as diferentes heurísticas de otimização, como Evolução Diferencial, Algoritmos Genéticos, Enxames de Partículas e Aceitação de Limites. O pacote FRAPO fornece conjuntos de dados e código para o livro Financial Risk Modeling e Portfolio Optimization with R por Bernhard Pfaff (2013).

Pacote R forex
Meu modelo exporta um vetor que tem para cada dia b-buy s-sell ou h-hold é parecido com isto:
sig [1] b b s s b b s s b s b s s b s b s s s b b s s b b b b b b b b b b b b.
Quero voltar a afirmar que ele comprará ou venderá todo o patrimônio da carteira no final de cada dia e que o hold não fará nada. Qual é a melhor maneira de backtest em R ou outro método esta estratégia?
Em R, existem basicamente dois pacotes para backtest sua estratégia: SIT e quantstrat. Eu pessoalmente prefiro o primeiro porque é muito mais rápido e mais transparente em termos de como suas posições são gerenciadas. Além disso, o SIT oferece mais flexibilidade na forma como seus sinais de negociação são formados.
Se você tem uma estratégia muito básica, como long / short / ficar à margem, talvez a melhor abordagem para testar rapidamente sua estratégia seja ter 2 vetores como @Rime acima: um para devoluções e outro para suas posições (1 , -1, ou 0), e multiplique-os para obter retornos para suas posições quando você estiver no mercado (curto ou longo). Dois conselhos se eu puder:
Mude sua ação (compre ou venda) um período para frente em relação ao sinal.

O Trader R.
Usando R e ferramentas relacionadas em Finanças Quantitativas.
Modelagem de aprendizado de máquina em R:: Cheat Sheet.
Me deparei com este excelente artigo ultimamente "Aprendizagem de máquina em bancos centrais" # 8221; que eu decidi usar como base para uma nova folha de dicas chamada Machine Learning Modeling em R. A folha de dicas pode ser baixada do repositório de folhas de dicas do RStudio.
Como o ecossistema R agora é muito rico para apresentar todos os pacotes e funções disponíveis, esta folha de fraude não é de forma alguma exaustiva. É mais um guia para o que considero ser as ferramentas mais úteis disponíveis em R para modelagem. Ele também contém um fluxo de trabalho de modelagem padrão que representa minha visão sobre como abordar um exercício de modelagem genérico. Quaisquer comentários comentários bem-vindos!
Visualizando dados de séries temporais em R.
É com muito prazer que anuncio meu curso do DataCamp sobre Visualização de Dados de Séries Temporais em R. Esse curso também faz parte da série de Períodos Temporais com a faixa de habilidades R. Sinta-se livre para dar uma olhada, o primeiro capítulo é grátis!
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 usada e poderosa de entender melhor seus dados. Após este curso, você terá uma visão geral muito boa dos recursos de visualização da série temporal R e poderá decidir melhor qual modelo escolher para a análise subsequente. Você também poderá transmitir a mensagem que deseja transmitir de maneira eficiente e bonita.
Esboço de Curso.
Capítulo 1: Ferramentas de Visualização da Série Temporal.
Este capítulo apresentará as ferramentas básicas de visualização da série temporal R.
Capítulo 2: Séries Temporais Univariadas.
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 disponíveis. Neste capítulo, você será presenteado com 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 distribuir pares ou grupos de dados.
Capítulo 4: Estudo de caso: selecionando visualmente um estoque que melhora seu portfólio existente.
Vamos colocar tudo que você aprendeu até agora na prática! Imagine que você já possui uma carteira de ações e você tem algum dinheiro disponível para investir, como você sabiamente pode selecionar uma nova ação para investir seu dinheiro adicional? Analisar as propriedades estatísticas dos estoques individuais versus um portfólio existente é uma boa maneira de abordar o problema.
Vinculando R ao IQFeed com o pacote QuantTools.
O IQFeed fornece serviços de dados de fluxo contínuo e soluções de negociação que cobrem o mercado agrícola, de energia e financeiro. É um provedor de feed de dados bem conhecido e reconhecido, 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 à R. Eu uso o IQFeed há alguns anos e estou feliz com ele (não estou afiliado à empresa em nenhum caminho). Mais informações podem ser encontradas aqui. Eu tenho procurado 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 para R. Apenas para completar, aqui está um link que explica como fazer o download de 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, verifique se o IQfeed está 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 faz o download dos 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 armazenar. 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 ;. Há uma subpasta por instrumento e os dados são exibidos 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, depois seleciono as primeiras 100 observações de preço e, finalmente, desenho 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, dê uma olhada nesta excelente folha de dicas do DataCamp. Segundo, o parâmetro local é TRUE, pois 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 isso é basicamente 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.
Há alguns meses, um leitor me mostrou 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 um post enquanto a ferramenta realmente vale a pena e antes que alguém pergunte, eu não estou relacionado à empresa de forma alguma.
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 é 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. Combinando o poder do XML, VBA, R e BERT, posso criar um aplicativo bonito, mas poderoso, na forma de um arquivo do Excel com código VBA mínimo. Por fim, tenho um único arquivo do Excel reunindo todas as tarefas necessárias para gerenciar meu portfólio: atualização de banco de dados, geração de sinal, submissão de pedidos etc. & # 8230; Minha abordagem pode ser dividida nos três passos 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 neste 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 materializa no Excel.
2 & # 8211; Faça o download e instale o editor de interface do usuário personalizada: O Editor de interface do 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 é apenas o fornecimento de BERT no arquivo R que você criou acima. Em seguida, salve e feche as funções do arquivo. Se você quiser fazer qualquer alteração no arquivo R criado na etapa 1, terá que recarregá-lo usando o botão BERT & # 8220; Recarregar o arquivo de inicialização & # 8221; do menu Add-Ins 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ê deveria ver algo assim.
5 & ​​# 8211; Abra o editor VBA: Em 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 New: Agora volte para a planilha e no menu RTrader, clique no botão & # 8220; New Button & # 8221; botão. Você deve ver algo como o abaixo aparece.
O guia acima é uma versão muito básica do que pode ser obtido usando o BERT, mas mostra como combinar o poder de várias ferramentas específicas para criar seu próprio aplicativo personalizado. 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 usados ​​para calibração (ou seja, na amostra) e 30% para validação (ou seja, fora da amostra). Em seguida, uma comparação entre os dados de entrada e de saída ajuda a decidir se o modelo é suficientemente robusto. Este post visa 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 de 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 Uma coleção de amostras de dados é independente se eles vêm de populações não relacionadas e as amostras não afetam umas às outras. Usando o Teste de Kruskal-Wallis, podemos decidir se as distribuições populacionais são idênticas sem assumi-las para seguir a distribuição normal. & # 8221; O benefício adicional desse teste não está assumindo uma distribuição normal.
Existem outros testes da mesma natureza que poderiam se encaixar nessa estrutura. O teste de Mann-Whitney-Wilcoxon ou os testes de Kolmogorov-Smirnov se encaixam perfeitamente na estrutura descrita aqui, porém 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 de R pode ser encontrada aqui.
Aqui está 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. Esse processo não cria um único valor p para o teste 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: há fortes evidências de que os dados de entrada e saída 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.
Este post é inspirado 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 geneticamente evoluídas", prevendo a conferência sobre mercados financeiros.
Vigier Alexandre, Chmil Swann (2010), «Um processo de otimização para melhorar a consistência da amostra, um caso da Bolsa de Valores», JP Morgan Cazenove Equity Quantitative Conference, Londres, outubro de 2010.
Apresentando o fidlr: LoanceR de Dados Financeiros.
O fidlr é um suplemento do RStudio projetado para simplificar o processo de download de dados financeiros de vários provedores. Esta versão inicial é um wrapper em torno da função getSymbols no pacote quantmod e somente o Yahoo, Google, FRED e Oanda são suportados. I will probably add functionalities over time. As usual with those things just a kind reminder: “THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND…”
How to install and use fidlr?
You can get the addin/package from its Github repository here (I will register it on CRAN later on) Install the addin. There is an excellent tutorial to install RStudio Addins here. Once the addin is installed it should appear in the Addin menu. Just chose fidlr in the menu and a window as pictured below should appear. Choose a data provider from the the Source dropdown menu. Select a date range from the Date menu Enter the symbol you wish to download in the instrument text box. To download several symbols just enter the symbols separated by commas. Use the Radio buttons to choose whether you want to download the instrument in a csv file or in the global environment. The csv file will be saved in the working directory and there will be one csv file per instrument. Press Run to get the data or Close to close down the addin.
Error messages and warnings are handled by the underlying packages (quantmod and Shiny) and can be read from the console.
This is a very first version of the project so do not expect perfection but hopefully it will get better over time. Please report any comment, suggestion, bug etc… to: thertrader@gmail.
Maintaining a database of price files in R.
Doing quantitative research implies a lot of data crunching and one needs clean and reliable data to achieve this. What is really needed is clean data that is easily accessible (even without an internet connection). The most efficient way to do this for me has been to maintain a set of csv files. Obviously this process can be handled in many ways but I found very efficient and simple overtime to maintain a directory where I store and update csv files. I have one csv file per instrument and each file is named after the instrument it contains. The reason I do so is twofold: First, I don’t want to download (price) data from Yahoo, Google etc… every time I want to test a new idea but more importantly once I identified and fixed a problem, I don’t want to have to do it again the next time I need the same instrument. Simple yet very efficient so far. The process is summarized in the chart below.
In everything that follows, I assume that data is coming from Yahoo. The code will have to be amended for data from Google, Quandl etc… In addition I present the process of updating daily price data. The setup will be different for higher frequency data and other type of dataset (i. e. different from prices).
1 & # 8211; Initial data downloading (listOfInstruments. R & historicalData. R)
The file listOfInstruments. R is a file containing only the list of all instruments.
If an instrument isn’t part of my list (i. e. no csv file in my data folder) or if you do it for the very first time you have to download the initial historical data set. The example below downloads a set of ETFs daily prices from Yahoo Finance back to January 2000 and store the data in a csv file.
2 & # 8211; Update existing data (updateData. R)
The below code starts from existing files in the dedicated folder and updates all of them one after the other. I usually run this process everyday except when I’m on holiday. To add a new instrument, simply run step 1 above for this instrument alone.
3 & # 8211; Create a batch file (updateDailyPrices. bat)
Another important part of the job is creating a batch file that automates the updating process above (I’m a Windows user). This avoids opening R/RStudio and run the code from there. The code below is placed on a. bat file (the path has to be amended with the reader’s setup). Note that I added an output file (updateLog. txt) to track the execution.
The process above is extremely simple because it only describes how to update daily price data. I’ve been using this for a while and it has been working very smoothly for me so far. For more advanced data and/or higher frequencies, things can get much trickier.
As usual any comments welcome.
The Rise of the Robots (Advisors…)
The Asset Management industry is on the verge of a major change. Over the last couple of years Robots Advisors (RA) have emerged as new players. The term itself is hard to define as it encompasses a large variety of services. Some are designed to help traditional advisers to better allocate their clients money and some are real “black box”. The user enter a few criteria (age , income, children etc…) and the robot proposes a tailor-made allocation. Between those two extremes a full range of offers is available. I found the Wikipedia definition pretty good. “They are a class of financial adviser that provides portfolio management online with minimal human intervention”. More precisely they use algorithm-based portfolio management to offer the full spectrum of services a traditional adviser would offer: dividend reinvesting, compliance reports, portfolio rebalancing, tax loss harvesting etc… (well this is what the quantitative investment community is doing for decades!). The industry is still in its infancy with most players still managing a small amount of money but I only realised how profound the change was when I was in NYC a few days ago. When RA get their names on TV adds or on the roof of NYC cab you know something big is happening…
it is getting more and more attention from the media and above all it makes a lot of sense from an investor perspective. There are actually two main advantages in using RA:
Significantly lower fees over traditional advisers Investment is made more transparent and simpler which is more appealing to people with limited financial knowledge.
In this post R is just an excuse to present nicely what is a major trend in the asset management industry. The chart below shows the market shares of most popular RA as of the end of 2014. The code used to generate the chart below can be found at the end of this post and the data is here.
Those figures are a bit dated given how fast this industry evolves but are still very informative. Not surprisingly the market is dominated by US providers like Wealthfront and Betterment but RA do emerge all over the world: Asia (8Now!), Switzerland (InvestGlass), France (Marie Quantier)….. It is starting to significantly affect the way traditional asset managers are doing business. A prominent example is the partnership between Fidelity and Betterment. Since December 2014 Betterment past the $2 billion AUM mark.
Despite all the above, I think the real change is ahead of us. Because they use less intermediaries and low commission products (like ETFs) they charge much lower fees than traditional advisers. RA will certainly gain significant market shares but they will also lowers fees charged by the industry as a whole. Ultimately it will affect the way traditional investment firms do business. Active portfolio management which is having a tough time for some years now will suffer even more. The high fees it charges will be even harder to justify unless it reinvents itself. Another potential impact is the rise of ETFs and low commission financial products in general. Obviously this has started a while ago but I do think the effect will be even more pronounced in the coming years. New generations of ETFs track more complex indices and custom made strategies. This trend will get stronger inevitably.
As usual any comments welcome.
R financial time series tips everyone should know about.
There are many R time series tutorials floating around on the web this post is not designed to be one of them. Instead I want to introduce a list of the most useful tricks I came across when dealing with financial time series in R. Some of the functions presented here are incredibly powerful but unfortunately buried in the documentation hence my desire to create a dedicated post. I only address daily or lower frequency times series. Dealing with higher frequency data requires specific tools: data. table or highfrequency packages are some of them.
xts : The xts package is the must have when it comes to times series in R. The example below loads the package and creates a daily time series of 400 days normaly distributed returns.
merge. xts (package xts): This is incredibly powerful when it comes to binding two or more times series together whether they have the same length or not. The join argument does the magic! it determines how the binding is done.
apply. yearly/apply. monthly (package xts): Apply a specified function to each distinct period in a given time series object. The example below calculates monthly and yearly returns of the second series in the tsInter object. Note that I use the sum of returns (no compounding)
endpoints (package xts): Extract index values of a given xts object corresponding to the last observations given a period specified by on. The example gives the last day of the month returns for each series in the tsInter object using endpoint to select the date.
na. locf (package zoo): Generic function for replacing each NA with the most recent non-NA prior to it. Extremely useful when dealing with a time series with a few “holes” and when this time series is subsequently used as input for an R functions that does not accept arguments with NAs. In the example I create a time series of random prices then artificially includes a few NAs in it and replace them with the most recent value.
charts. PerformanceSummary (package PerformanceAnalytics): For a set of returns, create a wealth index chart, bars for per-period performance, and underwater chart for drawdown. This is incredibly useful as it displays on a single window all the relevant information for a quick visual inspection of a trading strategy. The example below turns the prices series into an xts object then displays a window with the 3 charts described above.
The list above is by no means exhaustive but once you master the functions describe in this post it makes the manipulation of financial time series a lot easier, the code shorter and the readability of the code better.
As usual any comments welcome.
Factor Evaluation in Quantitative Portfolio Management.
When it comes to managing a portfolio of stocks versus a benchmark the problem is very different from defining an absolute return strategy. In the former one has to hold more stocks than in the later where no stocks at all can be held if there is not good enough opportunity. The reason for that is the tracking error . This is defined as the standard deviation of the portfolio return minus the benchmark return. The less stocks is held vs. a benchmark the higher the tracking error (e. g higher risk).
The analysis that follows is largely inspired by the book “Active Portfolio Management” by Grinold & Kahn. This is the bible for anyone interested in running a portfolio against a benchmark. I strongly encourage anyone with an interest in the topic to read the book from the beginning to the end. It’s very well written and lays the foundations of systematic active portfolio management (I have no affiliation to the editor or the authors).
Here we’re trying to rank as accurately as possible the stocks in the investment universe on a forward return basis. Many people came up with many tools and countless variant of those tools have been developed to achieve this. In this post I focus on two simple and widely used metrics: Information Coefficient (IC) and Quantiles Return (QR).
The IC gives an overview of the factor forecasting ability. More precisely, this is a measure of how well the factor ranks the stocks on a forward return basis. The IC is defined as the rank correlation ( ρ ) between the metric (e. g. factor) and the forward return. In statistical terms the rank correlation is a nonparametric measure of dependance between two variables. For a sample of size n , the n raw scores are converted to ranks , and ρ is computed from:
The horizon for the forward return has to be defined by the analyst and it’s a function of the strategy’s turnover and the alpha decay (this has been the subject of extensive research). Obviously ICs must be as high as possible in absolute terms.
For the keen reader, in the book by Grinold & Kahn a formula linking Information Ratio (IR) and IC is given: with breadth being the number of independent bets (trades). This formula is known as the fundamental law of active management . The problem is that often, defining breadth accurately is not as easy as it sounds.
In order to have a more accurate estimate of the factor predictive power it’s necessary to go a step further and group stocks by quantile of factor values then analyse the average forward return (or any other central tendency metric) of each of those quantiles. The usefulness of this tool is straightforward. A factor can have a good IC but its predictive power might be limited to a small number of stocks. This is not good as a portfolio manager will have to pick stocks within the entire universe in order to meet its tracking error constraint. Good quantiles return are characterised by a monotonous relationship between the individual quantiles and forward returns.
All the stocks in the S&P500 index (at the time of writing). Obviously there is a survival ship bias: the list of stocks in the index has changed significantly between the start and the end of the sample period, however it’s good enough for illustration purposes only.
The code below downloads individual stock prices in the S&P500 between Jan 2005 and today (it takes a while) and turns the raw prices into return over the last 12 months and the last month. The former is our factor, the latter will be used as the forward return measure.
Below is the code to compute Information Coefficient and Quantiles Return. Note that I used quintiles in this example but any other grouping method (terciles, deciles etc…) can be used. it really depends on the sample size, what you want to capture and wether you want to have a broad overview or focus on distribution tails. For estimating returns within each quintile, median has been used as the central tendency estimator. This measure is much less sensitive to outliers than arithmetic mean.
And finally the code to produce the Quantiles Return chart.
3 & # 8211; How to exploit the information above?
In the chart above Q1 is lowest past 12 months return and Q5 highest. There is an almost monotonic increase in the quantiles return between Q1 and Q5 which clearly indicates that stocks falling into Q5 outperform those falling into Q1 by about 1% per month. This is very significant and powerful for such a simple factor (not really a surprise though…). Therefore there are greater chances to beat the index by overweighting the stocks falling into Q5 and underweighting those falling into Q1 relative to the benchmark.
An IC of 0.0206 might not mean a great deal in itself but it’s significantly different from 0 and indicates a good predictive power of the past 12 months return overall. Formal significance tests can be evaluated but this is beyond the scope of this article.
The above framework is excellent for evaluating investments factor’s quality however there are a number of practical limitations that have to be addressed for real life implementation:
Rebalancing : In the description above, it’s assumed that at the end of each month the portfolio is fully rebalanced. This means all stocks falling in Q1 are underweight and all stocks falling in Q5 are overweight relative to the benchmark. This is not always possible for practical reasons: some stocks might be excluded from the investment universe, there are constraints on industry or sector weight, there are constraints on turnover etc… Transaction Costs : This has not be taken into account in the analysis above and this is a serious brake to real life implementation. Turnover considerations are usually implemented in real life in a form of penalty on factor quality. Transfer coefficient : This is an extension of the fundamental law of active management and it relaxes the assumption of Grinold’s model that managers face no constraints which preclude them from translating their investments insights directly into portfolio bets.
And finally, I’m amazed by what can be achieved in less than 80 lines of code with R…

Forex Mecânico
Negociação no mercado de câmbio usando estratégias de negociação mecânicas.
Using R in Algorithmic Trading: Simple time series characterization. Parte um.
Last week we used the R statistical package in order to analyse an array of IS/OS system characteristics and derive from them some simple conclusions regarding IS/OS historical correlations. Today we are going to use R to do a more fundamental analysis that should be done before system generation. This analysis corresponds to basic characterization of financial time series, which gives us some fundamental information about the symbols we are going to trade. By doing this analysis we will be able to find out where it might be easier to develop traditional alpha seeking algorithmic strategies and whether some things (such a fundamental long term bias) exist within a given symbol. Within this first tutorial we will cover some basic statistical characteristics of financial time series, if there are any useful characteristics you think are missing please post a comment with your observation (I will certainly include them within the next few parts).
First of all we should ensure that our data is contained within a csv file that is friendly for R. We want to have Open/High/Low/Close columns as well as a Date column that should contain candle opening times in a format adequate for R (for example 1986-03-23). Remember that R needs to have adequate column headers so the first line of our csv should read something like “Date, Open, High, Low, Close”. It is important for data to be formatted in this way as we will be using other libraries that require this express formatting (such as quantmod) within the next few posts on this series (when we will be performing more advanced analysis, such as Hurst exponent estimations). Make sure you have also installed the e1071 R library before continuing further, as we will need it for some basic statistical calculations. Once you have your data ready you can now load it into R and plot it to confirm it’s loaded properly (note that we will learn how to plot prettier candlestick charts when we use quantmod:

111 & # 32; пользователей находятся здесь.
МОДЕРАТОРЫ.
wrayjustin Troca de Moedas por Dólares FXMarketMaker Comerciante Profissional Hot_Biscuits_ Modelos e Garrafas spicy_pasta RichJG Astrólogo Financeiro El_Huachinango MOD finance_student Prop Negociante о команде модераторов & raquo;
Bem vindo ao Reddit,
a primeira página da internet.
e inscreva-se em uma das milhares de comunidades.
отправлено & # 32; 8 ч назад & # 32; автор & # 32; radiusvec Trader Técnico.
отправлено & # 32; 1 dia atrás, & # 32; изменено & # 32; * & # 32; автор & # 32; qt4x11 Trader Técnico.
отправлено & # 32; 1 dia atrás, & # 32; изменено & # 32; * & # 32; автор & # 32; [suprimido]
отправлено & # 32; 1 dia atrás, & # 32; изменено & # 32; * & # 32; автор & # 32; qt4x11 Trader Técnico.
отправлено & # 32; Дня назад & # 32; автор & # 32; qt4x11 Trader Técnico.
отправлено & # 32; Дня назад & # 32; автор & # 32; 47dollars Trader Técnico.
приложенияи инструменты Reddit para iPhone Reddit para Android móvel кнопки site.
Использование данного сайта означает, что вы принимаете & # 32; пользовательского соглашения & # 32; и & # 32; Политика конфиденциальности. &cópia de; 2018 reddit инкорпорейтед. Все права защищены.
REDDIT e o logotipo ALIEN são marcas registradas da reddit inc.
& pi; Rendered by PID 96329 on app-320 at 2018-04-02 02:57:39.482915+00:00 running 17cfde7 country code: UA.

Комментариев нет:

Отправить комментарий