Este post será uma revisão aprofundada do livro Quantitative Momentum do Alpha Architect8217s. Em geral, na minha opinião, o livro é ótimo para aqueles que são especialistas em gestão de fundos no espaço de equidade individual, e ainda contém idéias que valem a pena pensar fora desse espaço. No entanto, o sistema detalhado no livro se beneficia do ranking aninhado (rank ao longo do eixo X, pegue o decil superior, posicione ao longo do eixo Y dentro do decil superior em X e pegue o decil superior ao longo do eixo Y, essencialmente restringindo a seleção a 1 do universo). Além disso, o livro não faz muito para tocar nos controles de volatilidade, o que pode ter melhorado muito o sistema delineado. Antes de entrar no peso desse post, gostaria de deixar meus leitores saberem que eu formalizei minhas porcas e parafusos de uma série quantstrat de posts como um curso de datacamp formal. Datacamp é uma maneira muito barata de aprender um monte de R, e aplicativos financeiros estão entre esses tópicos. Meu curso abrange os fundamentos do quantstrat, e se aqueles que concluírem o curso gostarem, posso muito bem criar módulos quantstrat mais avançados no datacamp. Eu espero que os cursos de finanças sejam bem recebidos, já que existem tópicos financeiros no RI1717d gostam de aprender que uma palestra de 45 minutos realmente não é suficiente (como a mágica do Dr. David Matteson, o PortfolioAnalytics e assim por diante). Em todo caso, aqui está o link. Assim, vamos começar com um resumo do livro: a primeira parte é composta de vários capítulos que explicam por que a dinâmica funciona (ou pelo menos tem funcionado por pelo menos 20 anos desde 1993), ou seja, que os preconceitos humanos e os comportamentos irracionais atuam. certas maneiras de fazer a anomalia funcionar. Então, há também o risco de carreira (o AKA é um fator de risco e, portanto, se o seu benchmark for SPY e você passar por um período de desempenho de três anos, você tem um risco grave de carreira) e, essencialmente, toda uma ladainha de por que um ativo profissional O gerente seria demitido, mas se você mantiver a anomalia ao longo de muitos anos e superar os vários anos de baixo desempenho, você sairá na frente no longo prazo. Geralmente, sinto que há trabalho a ser feito se isso for o melhor que pode ser feito, mas tudo bem, eu aceito. Essencialmente, a parte 1 é para os não iniciados. Para aqueles que estiveram em torno do bloco momentum algumas vezes, eles podem pular para a direita após isso. Infelizmente, é metade do livro, o que deixa um gosto amargo na boca. Em seguida, a segunda parte é onde, na minha opinião, a carne e as batatas verdadeiras do livro de 8220 como 8221. Essencialmente, o algoritmo pode ser resumido no seguinte: Considerando o universo de ações de grande e médio capitalização, faça o seguinte: 1) Ordene os estoques em decil por 2-12 momentum8211 ou seja, no final de cada mês, calcule o momento pelo último mês8217s preço de fechamento menos o preço de fechamento 12 meses atrás. Essencialmente, pesquisas afirmam que há um efeito de reversão no momentum de um mês. No entanto, esse efeito não é transferido para o universo ETF na minha experiência. 2) Aqui está a parte interessante que torna o livro digno de nota (na minha opinião): depois de ordenar decil, classifique o decil superior pela seguinte métrica: multiplique o sinal do impulso 2-12 pela seguinte equação: (retornos negativos 8211 positivos). Essencialmente, a ideia aqui é determinar a suavidade do momento. Ou seja, na situação mais extrema, imagine uma ação que não fez absolutamente nada por 230 dias, e então teve um grande dia que lhe rendeu toda a apreciação do preço (pense no Google quando teve um salto de 10 números melhores do que o esperado) relatórios), e no outro extremo, uma ação que simplesmente teve todos os dias uma pequena apreciação de preço positiva. Obviamente, você quer o segundo tipo de estoque. That8217s esta ideia. Mais uma vez, ordene os decis e pegue o decil superior. Portanto, pegar o decil superior do decil superior deixa você com 1 do universo. Essencialmente, isso dificulta muito a replicação da idéia, pois você precisa encontrar um enorme universo de ações. Dito isso, acho que a expressão é, na verdade, uma boa ideia como substituto da volatilidade. Isto é, independentemente de quão volátil seja um ativo, embora seja tão volátil quanto uma commodity como o DBC, ou não volátil como um produto de renda fixa como o SHY, essa expressão é uma maneira interessante de declarar 8220 que esse caminho é instável8221 vs. 8220esse caminho é smooth8221. Eu posso investigar essa expressão no meu blog ainda mais no futuro. 3) Por fim, se a carteira estiver passando trimestralmente em vez de mensal, os melhores meses para entregá-la são os meses que antecedem o final do trimestre (ou seja, fevereiro, maio, agosto, novembro) porque um monte de ativos amadores. os gerentes gostam de distribuir seus portfólios. Ou seja, eles tinham um trimestre ruim, então, no último mês antes de terem que enviar declarações trimestrais, eles investiram em alguns vencedores recentes para que seus clientes não achassem que eram tão amadores quanto realmente deixavam transparecer, e aí há um aumento esta. Da mesma forma, janeiro tem algumas anomalias de venda devido à colheita de prejuízos fiscais. No que diz respeito às implementações práticas, penso que este é um toque muito bom. Concordando com o fato de que virar a cada mês pode ser um pouco caro demais, eu gosto que Wes e Jack digam que você quer virá-lo uma vez a cada três meses, mas em quais meses8221. É uma pergunta muito boa perguntar se isso significa que você recebe um ponto percentual adicional ou 150 bps por ano, já que isso pode cobrir os custos de transação e, em seguida, alguns. Em suma, é bastante simples entender a estratégia. No entanto, a parte que separa o livro de uma replicação perfeita é a dificuldade em obter os dados da CRSP. No entanto, eu recomendo o Alpha Architect por divulgar todo o algoritmo do início ao fim. Além disso, se o momentum básico de 2-12 não for suficiente, existe um apêndice detalhando outros tipos de idéias de momento (momentum de ganhos, ranking por distância até máximas de 52 semanas, momentum histórico absoluto e assim por diante). Nenhuma dessas estratégias é realmente muito melhor do que a estratégia básica de momentum dos preços, de modo que elas estão lá para os interessados, mas parece que não há nada realmente inovador ali. Ou seja, se você está negociando uma vez por mês, há tantas maneiras de dizer 8220hey, acho que essa coisa está subindo.8221 Eu também gosto que Wes e Jack tenham tocado no fato de seguirem a tendência, enquanto ela não melhora o CAGR ou o Sharpe em geral. , faz uma enorme quantidade para melhorar o rebaixamento máximo. Isto é, se confrontado com a perspectiva de perder 70-80 de tudo, e perder apenas 30, isso é uma escolha fácil de fazer. O acompanhamento de tendências é bom, até mesmo uma versão simplista. Em suma, acho que o livro cumpre o que se propõe a fazer, que é apresentar um algoritmo bem pesquisado. Em última análise, o punchline está no site da Alpha Architect8217s (acredito que eles tenham algum tipo de filtro de estoque mensal). Além disso, o livro afirma que há melhores retornos ajustados ao risco quando combinados com o algoritmo delineado no livro 8220quantitative value8221. Na minha experiência, eu nunca tive algoritmos de valores me impressionando nos testes de volta que fiz, mas posso descrever isso como sendo inexperiente com todas as várias métricas de avaliação. Minha crítica ao livro, no entanto, é a seguinte: o algoritmo de momentum do livro não considera o que eu sinto como um componente-chave: o controle de metas de volatilidade. Simplesmente, o paper 8220momentum tem seus momentos8221 (que abordei em minha série de postulados de desenvolvimento orientada por hipóteses) essencialmente afirma que a estratégia habitual de Fama e French faz muito melhor de uma estratégia de risco-recompensa pela desalavancagem durante períodos de volatilidade excessiva, e evitando falhas momentum. Não sei por que Wes e Jack não tocaram neste artigo, já que a implementação é muito simples (fator de alavancagem de volatilidade alvo / realizado). Idealmente, adoraria se Wes ou Jack me enviassem o fluxo de retornos para essa estratégia (de preferência diária, mas mensalmente também funciona). Essencialmente, acho que este livro é muito abrangente. No entanto, acho que também tem um pouco de entusiasmo para tentar fazê-lo em casa, por causa do requisito de dados para replicá-lo. Certamente, se o seu corretor cobrar de você uma transação, não é uma estratégia viável abater vários milhares de dólares por ano em custos de transação que só retornam ao seu corretor. No entanto, eu me pergunto se o ETF do QMOM (da Alpha Architect, é claro) é, na verdade, uma versão melhor dessa estratégia, fora da taxa de administração. Em qualquer caso, minha opinião final é a seguinte: enquanto este livro deixa um pouco de conhecimento sobre a mesa, no geral, ele realiza o que se propõe a fazer, está claro com seus procedimentos e fornece várias idéias valiosas. Pelo preço de um livro não-técnico (também conhecido como 60 livros na amazon), este livro é um roubo. Obrigado pela leitura. OBSERVAÇÃO: embora eu esteja empregando atualmente em uma capacidade de análise bem-sucedida, estou interessado em ouvir sobre posições de período integral relacionadas aos tópicos deste blog. Se você tem uma posição de tempo integral que pode se beneficiar das minhas habilidades atuais, por favor me avise. Meu Linkedin pode ser encontrado aqui. Esta postagem será sobre a tentativa de usar o pacote Depmix para previsão de estado online. Embora o pacote depmix apresente um desempenho admirável quando se trata de descrever os estados do passado, quando usado para a previsão de um passo à frente, sob a suposição de que o estado de amanhã será idêntico ao de hoje, o processo do modelo de markov oculto encontrado no pacote não realizar as expectativas. Então, para começar, este post foi motivado por Michael Halls-Moore, que recentemente postou algum código R sobre o uso da biblioteca depmixS4 para usar modelos markov ocultos. Em geral, eu odeio criar posts sobre tópicos que não sinto que eu tenha uma compreensão absolutamente direta, mas eu estou fazendo isso na esperança de aprender com os outros sobre como apropriadamente fazer a predição do espaço de estados on-line, ou 8220regime switching8221. detecção, como pode ser chamado em mais linguagem financeira. Embora eu tenha visto a teoria usual dos modelos de markov ocultos (isto é, pode chover ou pode ser ensolarado, mas você só pode inferir o tempo a julgar pelas roupas que você vê as pessoas vestindo fora de sua janela quando você acorda), e trabalhou com exemplos de brinquedos em MOOCs (o curso de carro autônomo de Udacity8217 lida com eles, se bem me lembro8211ou talvez foi o curso de IA), no final das contas, a teoria é tão boa quanto uma implementação pode funcionar em dados reais . Para esse experimento, decidi usar os dados do SPY desde o início e fazer um 8220backtest8221 completo na amostra nos dados. Isto é, dado que o algoritmo HMM da depmix vê toda a história dos retornos, com essa visão dos dados, o algoritmo classifica corretamente os regimes, se os resultados do backtest são alguma indicação Aqui, o código para fazer isso, inspirado por Dr. Halls-Moore8217s. Essencialmente, enquanto eu selecionei três estados, notei que qualquer coisa com uma interceptação acima de zero é um estado de touro, e abaixo de zero é um estado de urso, então, essencialmente, reduz a dois estados. Com o resultado: Então, não particularmente terrível. O algoritmo funciona, meio que, certo Bem, vamos tentar a previsão online agora. Então o que eu fiz aqui foi que eu peguei uma janela em expansão, começando a partir de 500 dias desde o início do SPY8217, e continuei aumentando, por um dia de cada vez. Minha previsão era, trivialmente, o dia mais recente, usando um 1 para um estado de touro e um -1 para um estado de urso. Eu corri este processo em paralelo (em um cluster linux, porque windows8217s doParallel library parece nem saber que certos pacotes são carregados, e é mais bagunçado), e o primeiro grande problema é que esse processo levou cerca de três horas em sete núcleos para cerca de 23 anos de dados. Não é exatamente encorajador, mas o tempo de computação não é caro hoje em dia. Então vamos ver se esse processo realmente funciona. Primeiro, vamos testar se o algoritmo faz o que ele realmente deveria fazer e usar um dia de viés de antecipação (isto é, o algoritmo nos diz o estado no final do dia), mesmo que seja correto mesmo naquele dia. Com o resultado: Então, supostamente, o algoritmo parece fazer o que foi projetado para fazer, que é classificar um estado para um dado conjunto de dados. Agora, a questão mais pertinente: até que ponto essas predições chegam um dia à frente? Você acha que as previsões do espaço de estado seriam parcimoniosas de um dia para o outro, dada a longa história, correta. Com o resultado: isto é, sem o preconceito antecipado, O algoritmo de predição do espaço de estados é atroz. Por que isso? Bem, aqui está o enredo dos estados: em suma, o algoritmo hmm on-line no pacote depmix parece mudar de ideia com muita facilidade, com implicações óbvias (negativas) para as estratégias reais de negociação. Então, isso encerra para este post. Essencialmente, a mensagem principal é a seguinte: existe uma enorme diferença entre carregar análise descritiva (por exemplo, por que as coisas aconteceram8221) versus análise preditiva (ou seja, 8220 se eu prever corretamente o futuro, recebo um resultado positivo8221). ). Na minha opinião, enquanto as estatísticas descritivas têm o propósito de explicar por que uma estratégia pode ter feito o que fez, em última análise, estamos sempre buscando melhores ferramentas de previsão. Neste caso, depmix, pelo menos nesta demonstração 8221 fora da caixa, não parece ser a ferramenta para isso. Se alguém tiver tido sucesso com o uso de depmix (ou outro algoritmo de mudança de regime em R) para predizer, eu adoraria ver um trabalho que detalha o procedimento adotado, já que ele é uma área em que eu quero expandir minha caixa de ferramentas, mas não tenho nenhuma boas ligações. Essencialmente, gostaria de pensar neste post como descrevendo minhas próprias experiências com o pacote. Obrigado pela leitura. NOTA: No dia 5 de outubro, estarei na cidade de Nova York. No dia 6 de outubro, estarei apresentando no The Trading Show no painel Programming Wars. OBSERVAÇÃO: Meu contrato de análise atual está em revisão no final do ano, então estou oficialmente procurando outras ofertas também. Se você tem um papel em tempo integral que pode se beneficiar das habilidades que você vê no meu blog, por favor entre em contato comigo. Meu perfil do linkedin pode ser encontrado aqui. Esta postagem apresentará a mecânica do valor condicional do componente em risco, encontrada no PerformanceAnalytics, de um documento escrito por Brian Peterson, Kris Boudt e Peter Carl. Esse é um mecanismo que é fácil de chamar para calcular o déficit esperado de componentes em retornos de ativos conforme se aplicam a um portfólio. Embora as mecânicas exatas sejam bastante complexas, a vantagem é que o tempo de execução é quase instantâneo, e esse método é uma ferramenta sólida para incluir na análise de alocação de ativos. Para aqueles interessados em uma análise aprofundada da intuição do valor condicional em risco, eu os encaminho para o artigo escrito por Brian Peterson, Peter Carl e Kris Boudt. Essencialmente, aqui está a idéia: todos os ativos de uma determinada carteira têm uma contribuição marginal para o seu valor condicional total em risco (também conhecido como déficit esperado), ou seja, a perda esperada quando a perda ultrapassa um certo limite. Por exemplo, se você quer saber o seu déficit esperado, então é a média dos piores 5 retornos por 100 dias, e assim por diante. Para devoluções usando resolução diária, a ideia de déficit esperado pode soar como se nunca houvesse dados suficientes em um prazo suficientemente rápido (em um ano ou menos), a fórmula para o déficit esperado no PerformanceAnalytics padrão para um cálculo de aproximação usando um Expansão Cornish-Fisher, que fornece resultados muito bons, desde que o valor-p não seja muito extremo (ou seja, ele funciona para valores p relativamente sãos, como o intervalo de 1 a 10). O Valor condicional em risco do componente tem dois usos: primeiro, sem pesos de entrada, ele usa um padrão de peso igual, o que permite fornecer uma estimativa de risco para cada ativo individual sem sobrecarregar o pesquisador para criar sua própria correlação / covariância heurística . Em segundo lugar, quando fornecido com um conjunto de pesos, a saída muda para refletir a contribuição de vários ativos em proporção a esses pesos. Isso significa que essa metodologia funciona muito bem com estratégias que excluem ativos com base no momento, mas precisam de um esquema de ponderação para os ativos restantes. Além disso, o uso dessa metodologia também permite uma análise ex post da contribuição do risco para ver qual instrumento contribuiu com o risco. Primeiro, uma demonstração de como o mecanismo funciona usando o conjunto de dados edhec. Não há estratégia aqui, apenas uma demonstração de sintaxe. Isso assumirá uma contribuição de peso igual de todos os fundos no conjunto de dados edhec. Portanto, tmp é a contribuição para o déficit esperado de cada um dos vários gerentes do edhec durante todo o período de tempo. Aqui está a saída: A parte saliente disso é a contribuição percentual (a última saída). Observe que pode ser negativo, o que significa que certos fundos ganham quando outros perdem. Pelo menos, esse foi o caso sobre o conjunto de dados atual. Esses ativos diversificam uma carteira e, na verdade, reduzem o déficit esperado. Nesse caso, eu também ponderei os dez primeiros gerentes do conjunto de dados edhec e coloquei peso zero nos três últimos. Além disso, podemos ver o que acontece quando os pesos não são iguais. Desta vez, observe que à medida que o peso aumentou no gerenciador de mandado conversível, também contribuiu para o máximo déficit esperado. Para um backtest futuro, gostaria de fazer algumas solicitações de dados. Eu gostaria de usar o universo encontrado no livro Global Asset Allocation de Faber8217s. Dito isso, as simulações desse livro remontam a 1972, e eu queria saber se alguém lá fora tem retornos diários para esses ativos / índices. Enquanto alguns ETFs voltam ao início dos anos 2000, há alguns que começam bastante tarde, como DBC (commodities, início de 2006), GLD (ouro, início de 2004), BWX (títulos estrangeiros, final de 2007) e FTY (NAREIT, início 2007). Como um backtest de oito anos seria um pouco curto, eu queria saber se alguém tinha dados com mais histórico. Uma outra coisa, eu vou em Nova York para o show comercial. e falando no painel 82201 wars8221 de programação em 6 de outubro. Obrigado pela leitura. NOTA: Enquanto estou contratando atualmente, também estou procurando uma posição permanente que possa se beneficiar de minhas habilidades para quando meu contrato atual terminar. Se você tem ou está ciente de tal abertura, eu ficarei feliz em falar com você. Este post irá cobrir uma função para simplificar a criação de estratégias de rebalanceamento do tipo Harry Long de SeekingAlpha para os leitores interessados. Como Harry Long afirmou, a maioria, se não todas as suas estratégias, são mais para fins demonstrativos do que para investimentos reais recomendados. Então, desde que Harry Long postou mais alguns artigos sobre o Seeknig Alpha, eu tive um leitor ou dois me pedindo para analisar suas estratégias (de novo). Em vez de fazer isso, no entanto, eu simplesmente coloco essa ferramenta aqui, que é um invólucro que automatiza a aquisição de dados e simula o rebalanceamento de portfólio com uma linha de código. Aqui está a ferramenta. Ele busca os dados para você (geralmente do Yahoo, mas um grande obrigado ao Sr. Helumth Vollmeier no caso de ZIV e VXX), e tem a opção de simplesmente exibir uma curva de capital e algumas estatísticas (CAGR, padrão anual anualizado). , Sharpe, max Drawdown, Calmar), ou dando-lhe o fluxo de retorno como uma saída, se você quiser fazer mais análises em R. Here8217s um exemplo de simplesmente obter as estatísticas, com um 80 XLP / SPLV (eles são mais ou menos intercambiáveis) e 20 TMF (também conhecido como 60 TLT, portanto, um portfólio 80/60), de um dos artigos de Harry Long8217s. Nada fora do comum do que poderíamos esperar de uma carteira equilibrada de ações / títulos. Geralmente faz bem, tem seu maior rebaixamento na crise financeira, e alguns outros solavancos na estrada, mas, no geral, eu acho que isso é um pouco bajulador e esqueço esse tipo de coisa. E aqui seria o caminho para obter o fluxo de retornos diários individuais, supondo que você queria reequilibrar esses dois instrumentos semanalmente, em vez de anual (como é o padrão). E agora vamos8217s obter algumas estatísticas. Acontece que mudar o reequilíbrio de anual para semanal não teve muito efeito aqui (além de dar um monte de dinheiro para seu corretor, se você considerou os custos de transação, o que isso não acontece). Então, é assim que essa ferramenta funciona. Os resultados, claro, começam a partir do último instrumento8217s. O truque, na minha opinião, é tentar encontrar substitutos substitutos com históricos mais longos para ETFs mais novos que são simplesmente ETFs alavancados, como usar um peso de 60 em TLT com um peso de 80 em XLP em vez de um peso de 20 em TMF com 80 alocações em SPLV. Por exemplo, aqui estão alguns proxies: Dito isto, eu trabalhei com Harry Long antes, e ele desenvolve estratégias mais sofisticadas nos bastidores, então eu recomendaria que os leitores do SeekingAlpha levassem suas estratégias publicamente lançadas como demonstrações conceituais, em oposição a ideias de investimento plenas, e contate o próprio Sr. Long sobre soluções privadas mais personalizadas para instituições de investimento, se você estiver tão interessado. Obrigado pela leitura. NOTA: Atualmente estou no nordeste. Enquanto estou contratando atualmente, estou interessado em trabalhar em rede com indivíduos ou empresas com relação a possíveis oportunidades de colaboração. Este post demonstrará como levar em conta a rotatividade ao lidar com dados baseados em retornos usando o PerformanceAnalytics e a função Return. Portfolio em R. Isso demonstrará isso em uma estratégia básica nos nove SPDRs do setor. Então, em primeiro lugar, isso é em resposta a uma pergunta feita por um Robert Wages na lista de discussão R-SIG-Finance. Embora existam muitos indivíduos com uma infinidade de perguntas (muitas das quais podem ser encontradas para serem demonstradas neste blog já), ocasionalmente, haverá um veterano da indústria, um estudante de estatística PhD de Stanford, ou outro indivíduo muito inteligente que fará uma pergunta sobre um tópico que eu ainda não toquei neste blog, que irá solicitar um post para demonstrar outro aspecto técnico encontrado em R. Esse é um desses momentos. Assim, esta demonstração será sobre o volume de negócios de computação no espaço de retorno usando o pacote PerformanceAnalytics. Simplesmente, fora do pacote PortfolioAnalytics, o PerformanceAnalytics com sua função Return. Portfolio é o pacote R para simulações de gerenciamento de portfólio, já que ele pode usar um conjunto de pesos, um conjunto de retornos e gerar um conjunto de retornos de portfólio para análise. com o resto das funções do PerformanceAnalytics8217s. Novamente, a estratégia é a seguinte: pegue os 9 SPDRs setoriais de três letras (já que existem ETFs de quatro letras agora) e, ao final de cada mês, se o preço ajustado estiver acima da média móvel de 200 dias, invista nele. . Normalize em todos os setores investidos (isto é, 1/9 se investido em todos os 9, 100 em 1 se apenas 1 investido em, 100 em dinheiro, denotado com um vetor de retorno zero, se nenhum setor for investido). Ela é uma estratégia simples de brinquedo, já que a estratégia não é o ponto da demonstração. Aqui está o código básico de configuração: Então, pegue os SPDRs, coloque-os juntos, calcule seus retornos, gere o sinal e crie o vetor zero, já que Return. Portfolio trata pesos menores que 1 como uma retirada e pesos acima de 1 como adição de mais capital (grande FYI aqui). Agora, eis como calcular o turnover: Então, o truque é este: quando você chama Return. portfolio, use a opção VERDADEIRO. Isso cria vários objetos, entre eles os retornos, BOP. Weight e EOP. Weight. Estes representam o início do peso periódico e o peso final do período. A forma como esse turnover é computado é simplesmente a diferença entre como o retorno do dia8217s move o portfólio alocado de seu ponto final anterior para o local em que esse portfólio se encontra no início do próximo período. Isto é, o fim do peso do período é o começo do desvio do período depois de levar em conta o desvio / retorno do dia 82 para esse ativo. O novo começo do peso do período é o fim do peso do período mais qualquer transação que teria sido feita. Assim, para encontrar as transações reais (ou volume de negócios), subtrai-se o peso do fim do período anterior desde o início do peso do período. É assim que essas transações se parecem para essa estratégia. Algo que podemos fazer com esses dados é levar um volume de negócios de um ano, realizado com o seguinte código: Parece o seguinte: Isso significa essencialmente que um ano de 871 de faturamento bidirecional (ou seja, se vender um portfólio totalmente investido é 100 volume de negócios, e comprar um conjunto inteiramente novo de ativos é outro 100, então o volume de negócios de duas vias é de 200) é de cerca de 800 no máximo. Isso pode ser bem alto para algumas pessoas. Agora, aqui está a aplicação quando você penaliza os custos de transação em 20 pontos-base por ponto percentual negociado (isto é, custa 20 centavos para transacionar 100). Assim, a 20 pontos base sobre os custos de transação, isso leva cerca de um por cento em retornos por ano a partir dessa estratégia (reconhecidamente, terrível). Isso está longe de ser insignificante. Então, é assim que você calcula o turnover e os custos de transação. Nesse caso, o modelo de custo de transação foi muito simples. No entanto, dado que Return. portfolio retorna as transações no nível de ativo individual, pode-se obter o mais complexo que eles gostariam de modelar os custos de transação. Obrigado pela leitura. NOTA: Eu estarei dando uma conversa de raio no R / Finance, então, para aqueles que comparecerem, você poderá me encontrar lá. Este post delineará um erro fácil de ser escrito ao escrever backtests vetorizados8211, usando um sinal obtido no final de um período para entrar (ou sair) de uma posição no mesmo período. A diferença nos resultados obtidos é maciça. Hoje, vi dois posts separados do Alpha Architect e Mike Harris fazendo referência a um artigo de Valeriy Zakamulin sobre o fato de que algumas pesquisas anteriores de Glabadanidis foram feitas com resultados de má qualidade, e que os resultados de Glabadanidis só foram reproduzíveis por meio de preconceito antecipado. O código a seguir mostra como reproduzir esse viés de antecipação. Primeiro, a configuração de uma estratégia de média móvel básica no índice SampP 500 a partir dos dados do Yahoo. E aqui está como instituir o preconceito antecipado. Estes são os 8220resultados8221: Obviamente, essa curva de eqüidade não é útil, portanto, aqui está uma em escala de log. Como pode ser visto, o preconceito lookahead faz uma enorme diferença. Aqui estão os resultados numéricos: Novamente, absolutamente ridículo. Observe que, ao usar Return. Portfolio (a função no PerformanceAnalytics), esse pacote fornecerá automaticamente o próximo retorno do período8217s, em vez do atual, para seus pesos. No entanto, para aqueles que escrevem backtests 8220simple8221 que podem ser rapidamente executados usando operações vetorizadas, um erro off-by-one pode fazer toda a diferença entre um backtest no campo do absurdo razoável e puro. No entanto, se alguém quiser testar o dito absurdo quando confrontado com resultados impossíveis de replicar, a mecânica demonstrada acima é a maneira de fazê-lo. Agora, em outras notícias: gostaria de agradecer a Gerald M por permanecer no topo de uma das estratégias do Logical Invest, mas sua estratégia simples de rotação de mercado global esboçada em um artigo de um post anterior. Até março de 2015 (a data do post no blog), a estratégia teve um bom desempenho. No entanto, após essa data, foi um desastre completo, que, em retrospecto, ficou evidente quando passei pelo processo de desenvolvimento de hipóteses baseado em hipóteses sobre o qual escrevi anteriormente. Assim, embora tenha havido muita coisa escrita sobre não simplesmente jogar fora uma estratégia por causa de um mau desempenho de curto prazo, e que anomalias como momentum e valor existem por causa do risco de carreira devido ao desempenho inadequado de curto prazo, isso nunca é uma coisa boa. quando uma estratégia gera perdas historicamente grandes, particularmente depois de ser publicada em um canto tão humilde do mundo financeiro quantitativo. De qualquer forma, este foi um post demonstrando alguns mecanismos, e uma atualização sobre uma estratégia que eu escrevi há pouco tempo. Obrigado pela leitura. NOTA: Eu estou sempre interessado em ouvir sobre novas oportunidades que podem se beneficiar da minha experiência, e estou sempre feliz em fazer contatos. Você pode encontrar meu perfil no LinkedIn aqui. Este post vai lançar luz sobre os valores dos R2s por trás de duas estratégias bastante simplistas, o simples SMA de 10 meses, e seu relativo, o momentum de 10 meses (que é simplesmente uma diferença de SMAs, como o Alpha Architect mostrou em seu livro DIY Financial Advisor). Não muito tempo atrás, um amigo meu, chamado Josh, me fez uma pergunta sobre finanças em R2s, quando terminou seu doutorado em estatística em Stanford, então, quando pessoas assim me fazem perguntas, eu gostaria de respondê-las. Em alguns casos, modelos que têm menos poder preditivo perfeito (EG R2s de 0,4, por exemplo) ainda podem fornecer previsões muito promissoras, e que se alguém tivesse um modelo financeiro capaz de explicar 40 da variância dos retornos , eles poderiam se aposentar com esse modelo, tornando-os muito ricos.4 De fato, 4 é uma visão muito otimista, para ilustrar este exemplo, eu peguei duas estratégias 8220-8321 8212 para comprar SPY quando Eu O preço mensal de fechamento está acima de sua média móvel simples de dez meses, e quando seu momentum de dez meses (basicamente a diferença de uma média móvel de dez meses e sua defasagem) é positivo. Embora esses modelos sejam simplistas, eles são amplamente discutidos, e muitas estratégias de momentum são uma melhoria dessas estratégias de linha de base, 8220 fora da caixa8221. Aqui está o código para fazer isso: E aqui estão os resultados: Em resumo, o SMA10 e o momentum de 10 meses (também conhecido como ROC 10 aka MOM10) superam com folga o buy and hold, não apenas em retornos absolutos, mas especialmente em risco. retornos ajustados (índices de Sharpe e Calmar). Novamente, a análise simplista e muitos modelos se tornam muito mais sofisticados do que isso, mas mais uma vez, um exemplo simples e ilustrativo usando duas estratégias que superam um benchmark (a longo prazo, de qualquer forma). Agora, a pergunta é: qual foi o R2 desses modelos? Para responder a essa pergunta, eu peguei uma janela de cinco anos que essencialmente perguntava: quão bem essas quantidades (a razão entre o preço de fechamento e a média móvel 8211 1, ou a impulso de dez meses) prever o próximo mês8217s retorna Ou seja, que proporção da variância é explicada através dos retornos mensais regredidos contra os sinais do mês anterior8217s em forma numérica (talvez não seja o melhor enquadramento, pois o sinal é binário em oposição ao contínuo que é o que está sendo regredido, mas vamos deixar isso de lado, novamente, por uma questão de ilustração). Aqui está o código para gerar a resposta. And the answer, in pictorial form: In short, even in the best case scenarios, namely, crises which provide momentum/trend-following/call it what you will its raison d8217etre, that is, its risk management appeal, the proportion of variance explained by the actual signal quantities was very small. In the best of times, around 20. But then again, think about what the R2 value actually is8211it8217s the percentage of variance explained by a predictor. If a small set of signals (let alone one) was able to explain the majority of the change in the returns of the SampP 500, or even a not-insignificant portion, such a person would stand to become very wealthy. More to the point, given that two strategies that handily outperform the market have R2s that are exceptionally low for extended periods of time, it goes to show that holding the R2 up as some form of statistical holy grail certainly is incorrect in the general sense, and anyone who does so either is painting with too broad a brush, is creating disingenuous arguments, or should simply attempt to understand another field which may not work the way their intuition tells them. Obrigado pela leitura. This review will review the 8220Adaptive Asset Allocation: Dynamic Global Portfolios to Profit in Good Times 8211 and Bad8221 book by the people at ReSolve Asset Management. Overall, this book is a definite must-read for those who have never been exposed to the ideas within it. However, when it comes to a solution that can be fully replicated, this book is lacking. Okay, it8217s been a while since I reviewed my last book, DIY Financial Advisor. from the awesome people at Alpha Architect. This book in my opinion, is set up in a similar sort of format. This is the structure of the book, and my reviews along with it: Part 1: Why in the heck you actually need to have a diversified portfolio, and why a diversified portfolio is a good thing. In a world in which there is so much emphasis put on single-security performance, this is certainly something that absolutely must be stated for those not familiar with portfolio theory. It highlights the example of two people8211one from Abbott Labs, and one from Enron, who had so much of their savings concentrated in their company8217s stock. Mr. Abbott got hit hard and changed his outlook on how to save for retirement, and Mr. Enron was never heard from again. Long story short: a diversified portfolio is good, and a properly diversified portfolio can offset one asset8217s zigs with another asset8217s zags. This is the key to establishing a stream of returns that will help meet financial goals. Basically, this is your common sense story (humans love being told stories) so as to motivate you to read the rest of the book. It does its job, though for someone like me, it8217s more akin to a big 8220wait for it, wait for it8230and there8217s the reason why we should read on, as expected8221. Part 2: Something not often brought up in many corners of the quant world (because it8217s real life boring stuff) is the importance not only of average returns, but when those returns are achieved. Namely, imagine your everyday saver. At the beginning of their careers, they8217re taking home less salary and have less money in their retirement portfolio (or speculation portfolio, but the book uses retirement portfolio). As they get into middle age and closer to retirement, they have a lot more money in said retirement portfolio. Thus, strong returns are most vital when there is more cash available to the portfolio, and the difference between mediocre returns at the beginning and strong returns at the end of one8217s working life as opposed to vice versa is astronomical and cannot be understated. Furthermore, once in retirement, strong returns in the early years matter far more than returns in the later years once money has been withdrawn out of the portfolio (though I8217d hope that a portfolio8217s returns can be so strong that one can simply 8220live off the interest8221). Or, put more intuitively: when you have 10,000 in your portfolio, a 20 drawdown doesn8217t exactly hurt because you can make more money and put more into your retirement account. But when you8217re 62 and have 500,000 and suddenly lose 30 of everything, well, that8217s massive. How much an investor wants to avoid such a scenario cannot be understated. Warren Buffett once said that if you can8217t bear to lose 50 of everything, you shouldn8217t be in stocks. I really like this part of the book because it shows just how dangerous the ideas of 8220a 50 drawdown is unavoidable8221 and other 8220stay invested for the long haul8221 refrains are. Essentially, this part of the book makes a resounding statement that any financial adviser keeping his or her clients invested in equities when they8217re near retirement age is doing something not very advisable, to put it lightly. In my opinion, those who advise pension funds should especially keep this section of the book in mind, since for some people, the long-term may be coming to an end, and what matters is not only steady returns, but to make sure the strategy doesn8217t fall off a cliff and destroy decades of hard-earned savings. Part 3: This part is also one that is a very important read. First off, it lays out in clear terms that the long-term forward-looking valuations for equities are at rock bottom. That is, the expected forward 15-year returns are very low, using approximately 75 years of evidence. Currently, according to the book, equity valuations imply a negative 15-year forward return. However, one thing I will take issue with is that while forward-looking long-term returns for equities may be very low, if one believed this chart and only invested in the stock market when forecast 15-year returns were above the long term average, one would have missed out on both the 2003-2007 bull runs, and the one since 2009 that8217s just about over. So, while the book makes a strong case for caution, readers should also take the chart with a grain of salt in my opinion. However, another aspect of portfolio construction that this book covers is how to construct a robust (assets for any economic environment) and coherent (asset classes balanced in number) universe for implementation with any asset allocation algorithm. I think this bears repeating: universe selection is an extremely important topic in the discussion of asset allocation, yet there is very little discussion about it. Most research/topics simply take some 8220conventional universe8221, such as 8220all stocks on the NYSE8221, or 8220all the stocks in the SampP 5008221, or 8220the entire set of the 50-60 most liquid futures8221 without consideration for robustness and coherence. This book is the first source I8217ve seen that actually puts this topic under a magnifying glass besides 8220finger in the air pick and choose8221. Part 4: and here8217s where I level my main criticism at this book. For those that have read 8220Adaptive Asset Allocation: A Primer8221. this section of the book is basically one giant copy and paste. It8217s all one large buildup to 8220momentum rank min-variance optimization8221. All well and good, until there8217s very little detail beyond the basics as to how the minimum variance portfolio was constructed. Namely, what exactly is the minimum variance algorithm in use Is it one of the poor variants susceptible to numerical instability inherent in inverting sample covariance matrices Or is it a heuristic like David Varadi8217s minimum variance and minimum correlation algorithm The one feeling I absolutely could not shake was that this book had a perfect opportunity to present a robust approach to minimum variance, and instead, it8217s long on concept, short on details. While the theory of 8220maximize return for unit risk8221 is all well and good, the actual algorithm to implement that theory into practice is not trivial, with the solutions taught to undergrads and master8217s students having some well-known weaknesses. On top of this, one thing that got hammered into my head in the past was that ranking also had a weakness at the inclusion/exclusion point. POR EXEMPLO. if, out of ten assets, the fifth asset had a momentum of say, 10.9, and the sixth asset had a momentum of 10.8, how are we so sure the fifth is so much better And while I realize that this book was ultimately meant to be a primer, in my opinion, it would have been a no-objections five-star if there were an appendix that actually went into some detail on how to go from the simple concepts and included a small numerical example of some algorithms that may address the well-known weaknesses. This doesn8217t mean Greek/mathematical jargon. Just an appendix that acknowledged that not every reader is someone only picking up his first or second book about systematic investing, and that some of us are familiar with the 8220whys8221 and are more interested in the 8220hows8221. Furthermore, I8217d really love to know where the authors of this book got their data to back-date some of these ETFs into the 90s. Part 5: some more formal research on topics already covered in the rest of the book8211namely a section about how many independent bets one can take as the number of assets grow, if I remember it correctly. Long story short You easily get the most bang for your buck among disparate asset classes, such as treasuries of various duration, commodities, developed vs. emerging equities, and so on, as opposed to trying to pick among stocks in the same asset class (though there8217s some potential for alpha there8230just8230a lot less than you imagine). So in case the idea of asset class selection, not stock selection wasn8217t beaten into the reader8217s head before this point, this part should do the trick. The other research paper is something I briefly skimmed over which went into more depth about volatility and retirement portfolios, though I felt that the book covered this topic earlier on to a sufficient degree by building up the intuition using very understandable scenarios. So that8217s the review of the book. Overall, it8217s a very solid piece of writing, and as far as establishing the why, it does an absolutely superb job. For those that aren8217t familiar with the concepts in this book, this is definitely a must-read, and ASAP. However, for those familiar with most of the concepts and looking for a detailed 8220how8221 procedure, this book does not deliver as much as I would have liked. And I realize that while it8217s a bad idea to publish secret sauce, I bought this book in the hope of being exposed to a new algorithm presented in the understandable and intuitive language that the rest of the book was written in, and was left wanting. Still, that by no means diminishes the impact of the rest of the book. For those who are more likely to be its target audience, it8217s a 5/5. For those that wanted some specifics, it still has its gem on universe construction. Overall, I rate it a 4/5. Obrigado pela leitura. Happy new year. This post will be a quick one covering the relationship between the simple moving average and time series momentum. The implication is that one can potentially derive better time series momentum indicators than the classical one applied in so many papers. Okay, so the main idea for this post is quite simple: I8217m sure we8217re all familiar with classical momentum. That is, the price now compared to the price however long ago (3 months, 10 months, 12 months, etc.). POR EXEMPLO. P(now) 8211 P(10) And I8217m sure everyone is familiar with the simple moving average indicator, as well. POR EXEMPLO. SMA(10). Well, as it turns out, these two quantities are actually related. It turns out, if instead of expressing momentum as the difference of two numbers, it is expressed as the sum of returns, it can be written (for a 10 month momentum) as: MOM10 return of this month return of last month return of 2 months ago 8230 return of 9 months ago, for a total of 10 months in our little example. This can be written as MOM10 (P(0) 8211 P(1)) (P(1) 8211 P(2)) 8230 (P(9) 8211 P(10)). (Each difference within parentheses denotes one month8217s worth of returns.) Which can then be rewritten by associative arithmetic as: (P(0) P(1) 8230 P(9)) 8211 (P(1) P(2) 8230 P(10)). In other words, momentum 8212 aka the difference between two prices, can be rewritten as the difference between two cumulative sums of prices. And what is a simple moving average Simply a cumulative sum of prices divided by however many prices summed over. Here8217s some R code to demonstrate. With the resulting number of times these two signals are equal: In short, every time. Now, what exactly is the punchline of this little example Here8217s the punchline: The simple moving average is8230fairly simplistic as far as filters go. It works as a pedagogical example, but it has some well known weaknesses regarding lag, windowing effects, and so on. Here8217s a toy example how one can get a different momentum signal by changing the filter. With the following results: While the difference of EMA10 strategy didn8217t do better than the difference of SMA10 (aka standard 10-month momentum), that8217s not the point. The point is that the momentum signal is derived from a simple moving average filter, and that by using a different filter, one can still use a momentum type of strategy. Or, put differently, the main/general takeaway here is that momentum is the slope of a filter, and one can compute momentum in an infinite number of ways depending on the filter used, and can come up with a myriad of different momentum strategies. Obrigado pela leitura. NOTE: I am currently contracting in Chicago, and am always open to networking. Contact me at my email at ilya. kipnisgmail or find me on my LinkedIn here. This post will outline a first failed attempt at applying the ensemble filter methodology to try and come up with a weighting process on SPY that should theoretically be a gradual process to shift from conviction between a bull market, a bear market, and anywhere in between. This is a follow-up post to this blog post. So, my thinking went like this: in a bull market, as one transitions from responsiveness to smoothness, responsive filters should be higher than smooth filters, and vice versa, as there8217s generally a trade-off between the two. In fact, in my particular formulation, the quantity of the square root of the EMA of squared returns punishes any deviation from a flat line altogether (although inspired by Basel8217s measure of volatility, which is the square root of the 18-day EMA of squared returns), while the responsiveness quantity punishes any deviation from the time series of the realized prices. Whether these are the two best measures of smoothness and responsiveness is a topic I8217d certainly appreciate feedback on. In any case, an idea I had on the top of my head was that in addition to having a way of weighing multiple filters by their responsiveness (deviation from price action) and smoothness (deviation from a flat line), that by taking the sums of the sign of the difference between one filter and its neighbor on the responsiveness to smoothness spectrum, provided enough ensemble filters (say, 101, so there are 100 differences), one would obtain a way to move from full conviction of a bull market, to a bear market, to anything in between, and have this be a smooth process that doesn8217t have schizophrenic swings of conviction. Here8217s the code to do this on SPY from inception to 2003: And here8217s the very underwhelming result: Essentially, while I expected to see changes in conviction of maybe 20 at most, instead, my indicator of sum of sign differences did exactly as I had hoped it wouldn8217t, which is to be a very binary sort of mechanic. My intuition was that between an 8220obvious bull market8221 and an 8220obvious bear market8221 that some differences would be positive, some negative, and that they8217d net each other out, and the conviction would be zero. Furthermore, that while any individual crossover is binary, all one hundred signs being either positive or negative would be a more gradual process. Apparently, this was not the case. To continue this train of thought later, one thing to try would be an all-pairs sign difference. Certainly, I don8217t feel like giving up on this idea at this point, and, as usual, feedback would always be appreciated. Obrigado pela leitura. NOTE: I am currently consulting in an analytics capacity in downtown Chicago. However, I am also looking for collaborators that wish to pursue interesting trading ideas. If you feel my skills may be of help to you, let8217s talk. You can email me at ilya. kipnisgmail, or find me on my LinkedIn here . Post navigation CategoriesStop-Limit Orders A Stop-Limit order is an instruction to submit a buy or sell limit order when the user-specified stop trigger price is attained or penetrated. The order has two basic components: the stop price and the limit price. When a trade has occurred at or through the stop price, the order becomes executable and enters the market as a limit order, which is an order to buy or sell at a specified price or better. A Stop-Limit eliminates the price risk associated with a stop order where the execution price cannot be guaranteed, but exposes the investor to the risk that the order may never fill even if the stop price is reached. The investor could miss the market altogether. Interactive Brokers may simulate certain order types on its books and submit the order to the exchange when it becomes marketable. The IB website contains a page with exchange listings. The linked page for each exchange contains an expandable Order Types section, listing the order types submitted using that exchanges native order type and the order types that are simulated by IB for that exchange. See our Exchange Listings . For stop-limit orders simulated by IB, customers may use IBs default trigger methodology or configure their own customized trigger methodology. Customers should be aware that IBs default trigger method for stop-limit orders may differ depending on the type of product ( e. g. stocks, options, futures, etc. ). To modify the trigger method for a specific stop-limit order, customers can access the Trigger Method field in the order preset. Customers can also modify the default trigger method for all Stop orders by selecting the Edit menu item on their Trade Workstation trading screen and then selecting the Trigger Method dropdown list from the TWS Global Configuration menu item. For more information on modifying the trigger method, as well as a detailed description of the default trigger method for each product type, please see the TWS Users Guide section entitled Modify the Stop Trigger Method located here . A tabela de referência no canto superior direito fornece um resumo geral das características do tipo de pedido. Os recursos verificados são aplicáveis em algumas combinações, mas não funcionam necessariamente em conjunto com todos os outros recursos verificados. Por exemplo, se Opções e Estoques, EUA e Não-EUA, e Inteligente e Direcionado estiverem todos marcados, isso não significa que todos os estoques americanos e não norte-americanos inteligentes e com roteiro direto suportam o tipo de pedido. Pode ser o caso de apenas ações norte-americanas de roteamento inteligente, ações não americanas de roteamento direto e opções norte-americanas de roteamento inteligente serem suportadas. Mosaic Example In this example, the investor holds a 99,000 short position in shares of ticker BAC and wants to enter an order aimed at preserving capital while at the same time limiting the price he is willing to pay to buy back the shares. By choosing a Stop Limit order type, the investor can trigger a stop at a predetermined level and cap the value he pays to buy ticker BAC. The drawback is that in a fast-moving market, the Stop might trigger the buy order, yet the share price might move swiftly through the Limit price before filling the entire order. Enter the ticker in the Order Entry panel and select the Buy button. The existing position is automatically displayed and by clicking on the Position field, the user can auto-populate the Quantity field. Next, from the Order Type dropdown field select STP LMT and enter the Stop price at which the trade will start to execute. Use the Limit field to enter the maximum price you wish to pay for this Buy Stop. Use the Time-in-Force field to select DAY or GTC before clicking the Submit button to transmit your order. Classic TWS Example Order Type In Depth - Stop Limit Sell Order Step 1 Enter a Stop Limit Sell Order Youre long 200 shares of XYZ stock at an Average Price of 14.95 (your entry price). You want to sell those 200 shares but you want to limit your loss to 190.00, so you create a Stop Limit order with a Stop Price of 14.10 and a Limit Price of 14.00. If the price of XYZ falls to 14.10, a limit order to sell 200 shares at 14.00 will be triggered at that price. Step 2 Order Transmitted Youve transmitted your Stop Limit sell order. If the price of XYZ falls to your Stop Price of 14.10, a limit order to sell 200 shares at a limit price of 14.00 will be submitted. IB may simulate stop orders with the following default triggers: Sell Simulated Stop-Limit Orders become limit orders when the last traded price is less than or equal to the stop price. Buy Simulated Stop-Limit Orders become limit orders when the last traded price is greater than or equal to the stop price. Unless you select otherwise, simulated stop-limit orders in stocks will only be triggered during regular NYSE trading hours ( i. e. . 9:30 a. m. to 4 p. m. EST, Monday to Friday). IBs default trigger methodology also contains additional conditions which can vary depending on the type of product traded. For a detailed description of IBs trigger methodology, including information on how to modify the default trigger methodology, see the Trigger Method topic in the TWS Users Guide. With the exception of single stock futures, simulated stop orders in U. S. futures contracts will only be triggered during regular trading hours unless you select otherwise. Regular trading hours can be determined by mousing over the clock in the time in force field or the contract description window. After hours quotes made outside of regular trading hours can differ significantly from quotes made during regular trading hours. Stop orders configured to trigger outside of regular NYSE trading hours with a trigger method set to Bid/Ask may trigger in illiquid markets and/or on quotes with wide bid/ask spreads. Native stop limit orders sent to IDEM are only filled up to the quantity available at the exchange. Any unfilled order quantity will be cancelled. For special notes and details on U. S. futures stop limit orders, click here . IB SM. InteractiveBrokers, IB Universal Account, Analytics interativo, IB Options Analytics SM. IB SmartRouting SM. Portfolio Analyst TM e IB Trader Workstation SM são marcas de serviço e / ou marcas comerciais da Interactive Brokers LLC. A documentação de suporte para quaisquer reclamações e informações estatísticas será fornecida mediante solicitação. Quaisquer símbolos de negociação exibidos são apenas para fins ilustrativos e não pretendem retratar recomendações. O risco de perda na negociação on-line de ações, opções, futuros, forex, ações estrangeiras e títulos pode ser substancial. As opções não são adequadas para todos os investidores. Para mais informações, leia as Características e Riscos das Opções Padronizadas. Para uma cópia, visite theocc / about / publications / character-risks. jsp. Antes de negociar, os clientes devem ler as declarações relevantes de divulgação de risco em nossa página Avisos e Isenções de Responsabilidade - Interactivebrokers / Divulgação. Negociar na margem é apenas para investidores sofisticados com alta tolerância ao risco. Você pode perder mais que seu investimento inicial. Para obter informações adicionais sobre as taxas de empréstimo de margem, consulte Interactivebrokers / Interest. Os futuros de segurança envolvem um alto grau de risco e não são adequados para todos os investidores. A quantia que você pode perder pode ser maior que seu investimento inicial. Antes de negociar futuros de segurança, leia a Declaração de Divulgação de Risco de Futuros de Segurança. Para uma cópia, visite interactivebrokers / disclosure. Existe um risco substancial de perda no comércio de divisas. A data de liquidação das negociações de câmbio pode variar devido a diferenças de fuso horário e feriados. Ao negociar em mercados de câmbio, isso pode exigir fundos de empréstimos para liquidar operações de câmbio. A taxa de juros dos fundos emprestados deve ser considerada ao calcular o custo das transações em vários mercados. CORRETORES INTERACTIVADORES ENTIDADES CORRETORES INTERATIVOS A LLC é membro da NYSE - FINRA - SIPC e é regulada pela Comissão de Valores Mobiliários dos Estados Unidos e pela Comissão de Comércio de Futuros de Commodities. Sede: One Pickwick Plaza, Greenwich, CT 06830 EUA interactivebrokers INTERACTIVE BROKERS CANADA INC. É membro da Organização Reguladora do Setor de Investimentos do Canadá (IIROC) e Membro - Canadian Investor Protection Fund. Conheça seu consultor: Veja o IIROC AdvisorReport. A negociação de valores mobiliários e derivativos pode envolver um alto grau de risco e os investidores devem estar preparados para o risco de perder todo o seu investimento e perder mais valores. A Interactive Brokers Canada Inc. é uma revendedora somente para execução e não fornece conselhos ou recomendações de investimento com relação à compra ou venda de quaisquer valores mobiliários ou derivativos. Escritório registrado: 1800 McGill College Avenue, Suite 2106, Montreal, Quebec, Canadá, H3A 3J6. interactivebrokers. ca CORRETORES INTERACTIVOS (ÍNDIA) PVT. LTD. é um membro da NSE. BSE NSDL sebi. gov. in. Regn. NSE: INB / F / E 231288037 (CM / FO / CD) EEB: INB / F / E 011288033 (CM / FO / CD) NSDL: IN-DP-NSDL-301-2008. CIN-U67120MH2007FTC170004. Escritório registrado: 502 / A, Times Square, Estrada Andheri Kurla, Andheri East, Mumbai 400059, Índia. Tel: 91-22-61289888 / Fax: 91-22-61289898 interactivebrokers. co. in CORPORATION INTERACTIVE SECURITIES JAPAN INC. 187 03-4588-9700 (830-1730) Sede: 4º andar Tekko Kaikan, 3-2-10 Nihonbashi Kayabacho, Chuo-Ku, Tóquio 103-0025 Japão interactivebrokers. co. jp CORRETORES INTERACTIVOS A HONG KONG LIMITED é regulada pela Comissão de Valores Mobiliários e Futuros de Hong Kong e é membro da SEHK e da HKFE. Registered Office: Suite 1512, Two Pacific Place, 88 Queensway, Admiralty, Hong Kong SAR interactivebrokers. hkDear Brokers8230 Whatever software we8217re using for automated trading: We all need some broker connection for the algorithm to receive price quotes and place trades. Seemingly a simple task. And almost any broker supports it through a protocol such as FIX, through an automated platform such as MT4, or through a specific broker API. But if you think you can quickly hook up your trading software to a broker API, you8217re up for a bad surprise. Dear brokers 8211 please read this post and try to make hacker8217s and coder8217s lifes a little easier A broker API allows software to trade, receive price quotes, and download price history. Those three functions are essential for an automated system. Good-to-have additional features are retrieving trade status, account status, and asset parameters. That8217s six functions, or seven when you count login/logout. A broker API has often more than 100 functions. So you should assume that at least the 6 essential are more than covered. But sadly, it is not so. The debacle begins already with installing and starting up the API. API startup Installing and starting a broker API can be so simple. The ideal case is a broker that provides no software at all, but just a protocol and a URL for a TCP/IP or UDP connection. You can then use well-established libraries such as curl or enet for connecting to the broker. In the second-best case you get an API DLL that you can redistribute to your clients. Your software then just calls the login function of that DLL, submits the authentification data and the connection is established. But for some unknown reason, many brokers feel obliged to provide connections to their APIs in much more complex and creative ways. Broker A required any user to run an API installation package. After an installation dialogue with several Windows incompatibility warnings, the installer produced a bunch of DLLs. Then you can go through a lengthy procedure with many steps of building up all the internal tables and data structures that you need for connecting to your account. In a previous version, the installer also modified the Registry, so you could not step around it and distribute the DLLs directly to your clients together with your software. They had to go through the installation procedure themselves. This is fortunately not required anymore with the current version. Broker B offers no direct connection at all. You have the choice of connecting either to their bloated Java trade platform, or to a small 8220Gateway8221 program. When you connect to the Java platform, your software must once per day log out, restart the platform, and log in again since the platform automatically shuts down every 24 hours. When you connect through the 8220Gateway8221, you can not open their platform at the same time (not even from a different PC). So you can8217t even check your positions. If you do, the Gateway connection breaks down and must be manually re-established. This is not a bug as you might think. It is intentionally implemented this way (according to the broker) as a service to their users. Both broker A and broker B are major, world-wide operating Forex and stock brokers. Getting price quotes Broker A keeps its asset prices in a 8220Quote Table8221 on his server. For getting a price quote you must first subscribe to that asset. For this you do not just call a function, you build up a 8220Request Factory8221 and generate a 8220Subscription Request8221. Now you can enter the procedure of receiving a response on your request, which involves the creation of a 8220Response Listener8221. Subscribing to an asset this way takes about 30 primary lines of C code 8211 and this does not include the secondary code for sending the requests, generating listeners, and all the supplementary stuff. My clients can consider themselves fortunate that I don8217t charge by code line. Getting the price itself then only requires looking up the asset in the server8217s quote table. Broker B makes it easy: You can not subscribe market quotes by API at all. You must do that manually on their website, and it is not free (except for Forex). For getting the price, a simple API call is sufficient. Or would be, if you knew the primary exchange, secondary exchange, asset type and sub-type, and other asset parameters. If any of them is not right, you get no price. And don8217t think that these exchange and other parameters are documented somewhere. You8217re supposed to find them out by trial and error, or to ask fellow programmers on the Internet. Getting price history Although any algorithm trades in real time, it still needs price history on startup for calculating initial values of its indicators and price-analyzing functions. With no access to price history, you had to wait a couple days before the first trade can be placed. Since this is not really practical, price history is an essential API function. Broker A provides price history with no major problem. I can almost not believe it. Ok, you must again fire up the 8220Request Factory8221, generate requests and listeners, but about 50 code lines enable you to download historical prices. The broker charges no fee for those prices (you can even download them with a demo account), and at least the recent data, from 2010 and above, is in acceptable quality. Eight out of ten points for the price history from broker A. Broker B again got creative and enterprising. Their price history from demo accounts is worthless 8211 you must indeed open a real account and deposit 10,000 when you want historical data. This sum, of course, is also required from a poor coder who only wants to implement a function for getting price history. Not that you get it then easily. Technically it8217s simple 8211 a few lines of code are enough 8211 but you only have 60 requests. After that, the price history server is shut down for 10 minutes. 60 requests are enough for a single-asset system, but not for starting a portfolio system, and certainly not for backtests. Why this bizarre limit Maybe broker B can8217t afford a fast Internet connection for their price history server. Maybe they are using the CEO8217s old PC, located in his living room, and the bandwidth goes down anytime when his kids play Tetris on it. Whatever the reason, that8217s only one out of ten points for the price history from broker B. Is there a broker with even zero points for the price history Yes, there is: Broker C has no API function for retrieving historical prices at all. Apparently they had not expected that someone would really use their API. I had no choice but to advise my client to choose another broker for his algorithmic system. Handling trades We programmers tend to think binary. When we send a fill-or-kill order to the broker API, we assume that the position will be either opened (8220yes8221), or it will not (8220no8221). But from time to time, broker APIs produce a third result, like 8220maybe8221 or 8220I won8217t tell8221. A position that is maybe opened or maybe not can result in an orphaned trade . This is a trade opened by the broker, but not reported back to the trading software, and consequently not under automated control. This trade won8217t be closed by a reversal or stop and can thus accumulate a large loss. It can blow the account. Orphaned trades are not a good thing. Theoretically, they would be so easy to prevent. The API just needs to provide a simple order function with an identifier and a validity limit, like this: openAtMarket(string Asset, int Amount, int ID, int SecondsValid) ID dear broker, please store this identifier together with the trade and use it for retrieving the trade status in case of doubt. SecondsValid dear broker, please disregard the order when after the given number of seconds your API still doesn8217t know if it can fill it or not, or is unable to confirm it for whatever reason. That8217s the ideal, but how8217s the reality Broker A accepts a ton of parameters in his order functions, but no user-supplied trade ID and no SecondsValid limit. After sending an order and going through the usual 8220Request Factory8221 and 8220Response Listener8221 rigmarole, you8217ll receive a confirmation and can retrieve the trade identifier for managing or closing it later. Or you8217ll get notified that the order failed. Or neither of both. It happens that the API does not react at all on your order, maybe due to a server hickup, an Internet outage, or because it became confused by too many Factories and Listeners. Then you can only guess if your order made it to the server or not. If it did, you have an orphaned trade. But at least you can relatively easily identify and close it manually. Broker B provides a simple order function, even with a user-supplied ID . And you get confirmation by a simple callback function that the order was filled or not. Usually not, since broker B needs again lots of information about the asset and the order routing, and won8217t execute the order if something is missing or not fitting together. But at least you know the ID. This makes you think that you can later check the trade status. Think again: Broker B won8217t reveal any information about your trades. At least not to you. In fact they do not store your trades at all. They only store net positions. So there is no way to identify orphans. Not even manually, since you can8217t open the trade platform as long as an automated system is running. Account parameters and trading costs Broker A provides a function where you can request leverage, pip size, pip cost, rollover, and any other parameters of the selected asset. Enough information to calculate margin and trading costs in advance, what is a good thing for an automated system 8211 if there weren8217t an important parameter missing. The API does not allow to retrieve the commission. You must enter it manually and store it per asset. Why this important parameter is not provided by the API remains broker A8217s secret. Broker B does not have this problem, as its API provides no asset and trading cost information at all 8211 not even the leverage. For compensation, it supports a sort of 8220virtual order8221 that can be used to calculate profit, similar to Zorro8217s 8220phantom trades8221. Theoretically you could use that to calculate some of the asset parameters in a complex way from a series of virtual orders with different lot sizes. My clients didn8217t pay me for that. For simulating a broker B account in a backtest, you must therefore enter all required asset parameters and trading costs manually in a spreadsheet 8211 which is no easy task due to the complicated fee and margin structure of that broker. There are APIs for almost all imaginable software tasks. And most are well structured nowadays and relatively easy to use. Why is it not so with most broker APIs Dear brokers: If you think about providing API access to your customers, please look first into other broker8217s solutions for learning how NOT to do it. And if really necessary, please add detailed documentation about which of the market or order parameters are really required and in which combination. And if you then still are not sure how to implement your new API, just hire me. I had the dubious pleasure to implement dozens of APIs so far, and can show you how an API for algo trading should look like. And even though you8217ll then have to hand over some shekels to my employer, you8217ll make up for this by winning an excellent reputation. At least among the poor coders and hackers who have to implement your API. 12 thoughts on ldquoDear Brokers8230rdquo Geeze. That8217s unfortunate, I8217m not looking forward to having to deal with this as I get my system up and running. Any broker you recommend for the best API I can not recommend any broker API as 100 perfect, but Oanda has a relatively good API. But it also depends on what you want to trade. Forex brokers offer usually better APIs than stock brokers, and newcomers have better APIs than old-established brokers 8211 which is at least an encouraging sign. Dependent on the API structure, you8217ll need between one afternoon and one week for the implementation. So it8217s a manageable task even with a very bad API. Broker B has its challenges no doubt. Java bloat is still a huge problem. Thinkorswim8217s java bloat is even worse. Anyways I believe there is a workaround the problem of Broker B8217s problem 8211 to concurrently connect with the gateway and trading platform. Using the account management website portal one can create a secondary username that is tied to the same account. Login to the gateway with the secondary username and login to the platform with the primary username. Thanks for the hint The problem with this workaround: you can only create secondary user names for the main account, not for additional accounts such as a paper account that you8217re normally using when you code and test an API implementation. But for trading with the main account this does indeed step around the connection issue of broker B. The ideal broker for algo trading would provide a binary protocol for MD and trades (also instruments description and metadata on start up or by request). The historical MD and trades available as the same binary format messages but downloaded as files. Is there such a broker even for one venue in one single country (I don8217t know one.) I am reaching out to you from IG Markets 8211 global leader in CFDs. We are interested in discussing potential marketing collaboration. We are looking for algo trading communities to work with. IG provides a strong platform supporting Web API, Auto trading and MT4. We would love to see if affiliation or IB partnership opportunities with financial-hacker. I8217d like to schedule a convenient time to have a chat and discuss further. Would you be available sometime next week ARIEL LAO Digital Marketing Specialist IG, Level 15, 55 Collins Street, Melbourne VIC 3000 D: 61398601751 T: 61398601711 ig 40 YEARS OF TRADING INDICES SHARES FOREX COMMODITIES BINARIES We tried a number of Forex APIs, and eventually settled on Dukascopy JForex. It8217s a huge, rambling Java API, but very flexible and powerful, with excellent access to decent quality historical data. It was one of very few that enabled us to execute the more unusual aspects of our strategy. You can run strategies on their servers (if you trust them with your code), client side within their trading client, or client side with their SDK. Data goes back and forth as Java objects, so unless you set up a fancy bridge you8217re working in Java. You run across the odd bug but there8217s usually another way to do things, and the one time we hit a show-stopper they fixed it for us. Commission and spread are very competitive and execution has been OK so far. An actual Swiss bank, so the regulation gives a measure of comfort. In the UK, Atom8 white labels the Dukas marketplace and offers tax benefits to UK residents. Deixe uma resposta Cancelar resposta Post navigation
No comments:
Post a Comment