R opção de negociação


Análise de cenários e opções de negociação usando R.


Apresento-lhe o meu projeto reestruturado sobre negociação de opções e análise de cenários. Você é mais do que bem vindo para experimentá-lo. Em primeiro lugar, vou dar uma pequena apresentação que irá revelar o que você pode fazer com ele e se você precisa continuar a ler. Então continuarei com dependências, classes usadas e classes criadas juntamente com métodos definidos. Finalmente, vou dar algumas operações básicas para mostrar como você pode usá-lo você mesmo.


Digamos que você está construindo um portfólio. Você quer começar com a estratégia de reversão de risco (comprar alto, vender baixo). Você está interessado em gráfico de recompensa:


Por algum motivo você decide curtir um estoque e adicioná-lo ao seu portfólio:


Você agora percebe que você deve realmente ter uma visão negativa no mercado para negociar isso. Você decide que esta será a sua opinião, mas seu vizinho diz que um possível aumento de preços é possível. Decida comprar alguns digitais:


Você está satisfeito com suas decisões e gostaria de verificar o lucro e a perda, já que agora os números no eixo z mostraram retorno. Lembre-se quando você cortou o estoque, você ganhou dinheiro. Em particular, 100. Mas o custo e a soma de preços de suas opções devem ser ligeiramente positivos, pois simétricamente, fora do dinheiro:


Enquanto você está muito feliz com suas decisões, você também quer investigar algumas sensibilidades. Diga vega:


Agora você é como: "Não negocie essa coisa estranha".


Se você gostou do que viu e quer experimentar você mesmo ou mesmo contribuir, continue lendo.


"Sa_work. R" é o arquivo onde você normalmente trabalharia. Tem apenas 1 linha para chamar tudo o que precisa:


Esta é a única linha que você precisa mudar uma vez que você tenha o repositório baixado. Basta localizar "0_sa_init. R" e fará tudo. E por tudo o que quero dizer, 2 coisas: carregar pacotes, carregar outros scripts e alguns parâmetros básicos.


"Quantmod" pode ser necessário se você quiser baixar algumas opções ou dados de estoque do yahoo. "RQuantLib" não é usado atualmente, mas as funções de preços podem ser tiradas depois para preços americanos. "Campos" foi usado na versão anterior para a interpolação por dispersão e pode ser necessário em um desenvolvimento posterior. "Rgl" - gráficos 3d. "Lubridate" não é essencial, mas facilita a vida quando se trabalha com datas ao nível do usuário. No entanto, todos os objetos de data são convertidos automaticamente para a classe "timeDate".


A estrutura do arquivo é simples:


Pasta "0_funs" com 2 scripts carregados a partir dele "0_basic. R" que contém algumas funções básicas - apenas 2 de 5 são realmente necessários. E "0_inst. R" - abreviatura de instrumentos, mas agora contém todo o projeto dentro. Surpreendentemente, apenas 500 linhas de código. Saiu do dobro depois que eu segui para a abordagem OOP.


"2_structure_int. R", "2_structure_vol. R" será usado para a estrutura da taxa de juros e implementação da superfície de volatilidade implícita no futuro e atualmente não são usados.


As classes utilizadas são S4 para saídas, algumas variáveis ​​simples que necessitaram de formalização e objetos de parâmetros. As classes de referência são usadas para instrumentos.


"Moeda" herda de "caráter" e a função Moeda () garante que é de comprimento 3 e cria novo.


"Gen. par" contém o número de dias de trabalho preferidos em um ano e a lista de taxas de juros (mais tarde poderia ser estendida à estrutura da taxa de juros).


"Stock. par" contém todos os parâmetros que são específicos de estoque e variam ao longo do tempo.


"Scatter" herda da "matriz". Contém saída das classes de referência: variáveis ​​de dados, linhas e colunas.


Superclasse de "segurança" de todos os títulos.


"Spot", "forward" e "option" herdam de "segurança".


Todos eles têm os mesmos métodos: preço, delta, gama, theta, rho, rhoQ, vega. Todos eles têm argumentos: st (preço das ações), tVec (time), vol (volatilidade). A classe "opção" possui um método adicional: getiv.


Aqui está a lista de funções que você precisa:


time_seq (from, to, by = "hour", rng = c (9, 16), holiday = holidayNYSE (2018: 2020), trading = TRUE)


- cria uma seqüência de tempo. Todos os métodos em torno do horário a hora, portanto, não use uma freqüência mais alta! Além disso, evite usar diariamente, basta manter o padrão até saber o que está fazendo.


GenPar () - cria o objeto "gen. par" chamado "gen. par" e atribui-o ao ambiente "gen. par".


lsg () obtém o objeto gen. par.


StockPar () - análogo ao GenPar, apenas o nomea paste0 (ticker, ". Par")


lss () - lista objetos no ambiente "stock. par".


rms () - limpa o ambiente "stock. par".


Spot (id, num = 1, class = "equity", cur = "usd"),


Forward (id, subjacente, maturidade, K, num = 1, class = "equity", cur = "usd"),


Opção (id, subjacente, maturidade, K, put, ame = 0, type = "vanilla", num = 1, extra = lista (0), class = "equity", cur = "usd")


- cria objetos de segurança e atribui-lo ao ambiente de "valores mobiliários".


lsi () - lista objetos no ambiente de "valores mobiliários".


rmi () - limpa o ambiente de "valores mobiliários".


vaSecurities () - coleta todos os objetos no ambiente de "títulos" em uma lista.


Boas notícias. Isso é tudo que você precisa. Poucas coisas a serem observadas. Todas as seqüências de caracteres são convertidas em CAPS, incluindo nomes de objetos para instrumentos. Apenas a classe de segurança é a equidade. Apenas 2 tipos de opções estão disponíveis: "baunilha" e "binário" (dinheiro ou nada). Todas as opções são europeias.


Experimente. Suas opiniões sobre falhas, erros ou melhorias são mais bem-vindas.


Comentários estão fechados.


Posts populares recentes.


Artigos mais visitados da semana.


Empregos para usuários R.


É alimentado pelo WordPress usando um design bavotasan.


Direitos autorais e cópia; 2017 R-bloggers. Todos os direitos reservados. Termos e Condições para este site.


Tarefa Algorítmica de Negociação em R.


Nesta publicação, vou mostrar como usar R para coletar os estoques listados em leais3, obter dados históricos do Yahoo e depois executar uma estratégia de negociação algorítmica simples. Ao longo do caminho, você aprenderá alguma raspagem na web, uma função atingindo uma API de finanças e um htmlwidget para fazer um gráfico de séries de tempo interativo.


Para esta publicação, um algoritmo de negociação é definido como um conjunto de regras que desencadeiam um evento de compra ou venda, em vez de um modelo preditivo ou uma previsão de séries temporais. Este é o tipo mais simples de troca de algo, mas se você estiver interessado em investigar mais profundamente em finanças com R, eu encorajaria você a tomar o curso da DataCamp na modelagem de uma estratégia de negociação quantitativa em R.


Fundo.


Em 2018, comecei a investir um pouco em loyal3. O seu serviço é incomum e um ótimo lugar para iniciar sua jornada de investimento. Em vez de cobrar ao investidor por negociações, leal3 cobra as empresas para listar em sua plataforma. A premissa é que as pessoas que gostam do serviço de uma empresa também comprarão o estoque e, assim, se tornarão defensoras fortes da marca. Fazer a plataforma mais atraente é que você pode comprar partes fracionárias. Então, você pode entrar nesse estoque de $ 800 amazon por apenas US $ 10 e comprar outra fração de US $ 10 cada vez que você tiver um pouco de dinheiro extra no final do mês. Claro que há custos de fricção, uma vez que você precisa negociar no Windows e seu portfólio inteiro está limitado.


70 ações, mas leais3 representa uma maneira divertida e de baixo custo para explorar o treinamento de capital. Você pode colocar a pele real no jogo por apenas US $ 10!


Para ser claro, tenho as contas típicas de aposentadoria e investimento, mas eu gosto da interface limpa do leal no aplicativo e da falta de taxas. Eu acabo checando minha carteira de lealdade e diversão mais frequentemente do que meus fundos mútuos, simplesmente porque é fácil e divertida ver o desempenho dos estoques que escolhi diretamente.


Os estoques disponíveis em loyal3.


Configurando seu espaço de trabalho.


Para começar, carregue as bibliotecas no seu ambiente. Eu quase sempre uso rvest for web scraping estes dias. Existem outros pacotes que funcionam, incluindo o RSelenium, mas eu gosto do quão fácil pode ser executado.


O segundo pacote, pbapply, é opcional porque simplesmente adiciona uma barra de progresso às funções de aplicação. Como você poderia estar raspando centenas de páginas da web, uma barra de progresso pode ser útil para estimar o tempo.


Em seguida, a TTR é um pacote que acabei de começar a explorar. A biblioteca é usada para construir "Regras de Negociação Técnicas". Embora você aprenda um algoritmo de negociação simples nesta publicação, o pacote TTR pode realizar cálculos mais sofisticados e vale a pena aprender.


A biblioteca dygraphs é um invólucro para uma biblioteca de gráficos de JavaScript rápida e aberta. É um dos htmlwidgets que torna o R mais dinâmico e faz parte de um arquivo html em vez de uma imagem estática. Por fim, o pacote lubridate é usado para facilitar a manipulação da data.


Coleção de dados.


Todos os estoques loyal3 estão todos listados em uma única página. Antes de pesquisar os preços diários individuais das ações para construir seu algoritmo de negociação, você precisa coletar todos os tickers disponíveis. A primeira coisa a fazer é declarar stock. list como uma string de URL. O próximo uso read_html () para que sua sessão R crie uma sessão na Internet e colete todas as informações html na página como um conjunto de nós XML. A página CSS tem uma ID chamada "nome da empresa". Use isso como um parâmetro ao chamar html_nodes () para selecionar apenas os dados XML associados a este nó. Por fim, use html_text () para que os valores de texto reais para os nomes das empresas sejam coletados.


Para examinar os estoques disponíveis em loyal3, você pode imprimir o objeto stocks. names no seu console. Isso retorna o nome da empresa como um vetor de texto.


Para pesquisar os preços das ações, você precisa primeiro obter o símbolo do ticker. Quando você está no site leal3, você pode clicar no tile da empresa para carregar uma página com um símbolo de ticker e outras informações da empresa.


Usando html_nodes () em ações, você puxa todos os nós marcados com um "Em HTML" & lt; a & gt; tag define um hiperlink que é usado para vincular a página de um formulário a outro. Dentro da tag de hiperlink, o "href" refere-se ao endereço de URL exato. Então, html_attr () irá extrair o URL de TODOS os links na página, se você passar em "href ...".


Depois de fazer uma inspeção manual, achei que os links 54 a 123 na página representam as páginas da empresa que eu preciso para raspar as informações do ticker. A última linha usa paste0 () para concatenar a seqüência de URL base "loyal3" para as páginas específicas da empresa, como "/ WALMART". Por exemplo, loyal3 / WALMART:


Em cada uma das páginas da empresa, há uma descrição, um preço de fechamento recente e o ticker. Todas as páginas da empresa são organizadas o mesmo, de modo que a função personalizada get. ticker () pode ser usada para extrair o símbolo do ticker.


Dentro de uma página da empresa, há uma tabela chamada "preço-marcador". A função irá navegar para uma página da empresa, identificar a tabela apropriada, extrair o texto com html_text (). Por fim, usando sub () juntamente com a expressão regular ^ ([[: alpha:]] *). * E \\ 1 manterão todos os caracteres alfabéticos. O resultado é que todos os caracteres especiais, como $, e quaisquer caracteres numéricos, como o preço de fechamento, são removidos. Como a função lê cada uma das 70 páginas, ela somente coletará o ticker de estoque.


A página de estoque leal3 para Alibaba, onde você vê a tabela que contém o ticker do estoque, BABA, está abaixo do texto em negrito.


Armado com sua função personalizada, use pblapply () para aplicá-lo a cada um dos stock. links que contêm a página de cada empresa. O objeto resultante, stock. tickers, é uma lista de tickers de ações individuais com cada elemento correspondente a uma empresa individual.


Uma maneira de alterar uma lista de elementos em um objeto plano é com do. call (). Aqui, você está aplicando rbind para row bind cada elemento de lista em um único vetor. Por fim, você cria um quadro de dados com o símbolo e a informação do nome da empresa.


Para ser consistente em sua análise, você pode querer limitar a quantidade de informações históricas que você coleciona em cada estoque. A função Sys. Data () armazenará um objeto de data como ano, mês e dia. Usar anos com um número inteiro é uma maneira de subtrair uma quantidade de tempo específica do objeto start. date.


Para obter os dados de finanças do Yahoo, o objeto da data deve ser alterado para objetos de personagem simples sem um traço. Usando a função de substituição global gsub () em start. date e end. date mudará a classe e simultaneamente removerá traços. Dentro de gsub (), passe o padrão de personagem para procurar, então os caracteres de substituição. Neste caso, o padrão de substituição é um caractere vazio entre citações. O último parâmetro é o objeto ao qual gsub () será aplicado.


A função TTR () getYahooData () aceita um símbolo de estoque e uma data inicial e final. A função retorna um quadro de dados que possui informações de séries temporais. Cada linha é uma data e as colunas contêm informações como o "Por favor", "Alto", "Por favor" e "encerrando" o preço por uma equidade. Como você está pesquisando várias empresas, você pode usar o lapply () ou o pblapply (). Passe no vetor dos símbolos da empresa, então a função, getYahooData (), e depois a data da informação. Os objetos de data são parâmetros reciclado sempre que getYahooData () é aplicado a um símbolo de estoque.


Para fazer a seleção da lista retornada, stocks. ts, mais fácil de navegar, você pode adicionar nomes aos elementos da lista. O uso de nomes com o objeto stocks. ts declara os nomes como o vetor de símbolo $ original.


Ao trabalhar com grandes listas, eu gosto de examinar o objeto resultante para garantir que o resultado seja o que eu esperava. Agora que os elementos têm nomes, você pode fazer referência diretamente a eles. Neste exemplo, você está examinando as 6 primeiras linhas para AMC Entertainment Holdings (AMC). Usar head () na lista ao fazer referência a $ AMC retornará uma parte da série temporal para este estoque:


Examinando os dados de estoque.


Quando eu ouço as notícias financeiras, os comentadores geralmente se referem a gráficos. Apesar da negociação de alta freqüência e da gestão ativa realizada por outros, muitos pequenos investidores ainda se referem a gráficos para obter informações. O objeto da série temporal pode ser exibido rapidamente com o enredo. Passe na lista referente ao elemento nomeado, como $ AMC e depois a coluna que deseja exibir, aqui $ Close.


O enredo anterior é estático e não muito interessante.


Vamos usar uma biblioteca de JavaScript para criar um gráfico que você possa explorar. Neste trecho de código, você pode observar o "% & gt;%" ou operador de tubulação. O operador de tubulação é uma boa maneira de escrever um código conciso. Ele encaminha um objeto para a próxima função sem forçar você a reescrever um nome de objeto como você fez anteriormente nesta publicação.


Neste exemplo, você cria um dygraph referente ao estoque do Twitter, $ TWTR e, em seguida, a coluna que deseja traçar, $ Close. Dentro do dygraph, main adiciona um título especificado entre as cotações. Usando o "% & gt;%" este objeto inteiro é encaminhado para a próxima função dyRangeSelector (). Você pode especificar um intervalo de datas padrão usando c () com uma string de data de início e fim. O objeto HTML resultante é uma série de tempo dinâmico para o estoque do Twitter com um controle deslizante de data na parte inferior.


Lembre-se, para alterar o patrimônio exibido, altere o símbolo do ticker na lista stocks. ts e, em seguida, o título do gráfico.


Este é um dígrafo básico para o estoque do Twitter.


Uma Estratégia de Negociação Simples: Trend Following.


Os comerciantes de alta freqüência e os hedge funds usam modelos sofisticados e abordagens baseadas em regras para executar negócios. Se você quiser saber mais, sugiro visitar a parapian para abordagens avançadas. Para abordagens mais simples, comece com esta página na Investopedia.


No código abaixo, você irá visualizar uma estratégia de negociação de impulso simples. Basicamente, você gostaria de calcular as médias móveis de 200 dias e 50 dias para um preço de ações. Em qualquer dia em que a média móvel de 50 dias esteja acima da média móvel de 200 dias, você compraria ou manteria sua posição. Nos dias em que a média de 200 dias é superior à média móvel de 50 dias, você venderia suas ações. Esta estratégia é chamada de estratégia seguindo estratégia. A natureza positiva ou negativa entre as duas médias médias temporais representa o impulso do estoque.


O pacote TTR fornece SMA () para calcular a média móvel simples. Neste trecho de código, você está examinando os primeiros 6 valores para as médias móveis de Twitter e 200 dias. SMA () funciona passando os dados da série temporal para um estoque e uma coluna específica como Close. Este é um único vetor de preços de fechamento do estoque TWTR. O segundo parâmetro é um número inteiro que representa o número de observações para a média móvel. Sem usar head (), a função SMA () retornará todos os valores.


Agora que você examinou detalhadamente a função da média móvel, você precisa se inscrever para cada uma das 70 ações. stocks. ts é uma lista de 70 quadros de dados contendo dados de estoque individuais. A quarta coluna de cada quadro de dados contém o preço de fechamento que queremos usar para as médias móveis.


A função personalizada mov. avgs () aceita um único quadro de dados de estoque para calcular as médias móveis. A primeira linha seleciona os preços de fechamento porque indexa [, 4] para criar stock. close. Em seguida, a função usa ifelse para verificar o número de linhas no quadro de dados. Especificamente se o nrow no quadro de dados for inferior a (2 * 260), então a função criará uma moldura de dados de médias móveis com “NA”.


Eu escolhi esse número porque há cerca de 250 dias de negociação por ano, então isso irá verificar se a série temporal tem cerca de 2 anos ou mais de duração. Loyal3 às vezes pode ter acesso a IPOs e, se o estoque for recém-público, não haverá dados suficientes para uma média móvel de 200 dias. No entanto, se o valor nrow for superior a 2 * 260, a função criará um quadro de dados com os dados originais juntamente com médias móveis de 200 e 50 dias como novas colunas. Usando colnames, eu declaro os nomes das colunas. A última parte da função usa full. cases para verificar os valores na coluna média móvel de 200 dias. Quaisquer linhas que não tenham um valor são descartadas no resultado final.


Armado com esta função mov. avgs (), você pode usar o pblapply () para adicionar os cálculos da média móvel a cada um dos 70 quadros de dados.


Use o código abaixo para visualizar as médias móveis de um estoque usando um dígrafo. Mais uma vez, esse código está usando o operador "% & gt;%" para encaminhar objetos. A função dygraph () aceita a estrutura de dados stocks. ts $ FOX. Especificamente, o quadro de dados é indexado pelo nome da coluna com c ('sma_200', 'sma_50'). Este objeto é passado para dySeries () nas próximas 2 linhas. Você pode se referir a uma coluna por nome para que dySeries () traçam uma linha para os valores "40 e 40" nas linhas 2 e 3. Este objeto é reenviado novamente para o dyRangeSelector () para ajustar a altura do seletor. Por fim, adicionei algum sombreamento para definir períodos em que você quisesse comprar ou manter o patrimônio líquido e um período em que você deveria ter vendido suas ações ou ficado afastado, dependendo da sua posição.


Aqui está o resultado final em uma série de tempo interativa.


As médias móveis FOX com regiões sombreadas para comprar / segurar versus vender.


Conclusão.


Como comerciante algorítmico de brotação, você não precisa traçar todos os 70 compartilhamentos. Em vez disso, você gostaria de executar o código todos os dias e adicionar uma maneira programática para identificar estoques que se encaixam no método baseado em regras, "compre se a média móvel de 50 dias está acima da média móvel de 200 dias". À medida que você revisa o gráfico anterior, a seção verde é uma hora em que você compraria o capital da FOX. A seção vermelha representa o tempo para vender suas ações e não voltar a entrar.


Como o gráfico é interativo, você pode usar o controle deslizante para redimensionar o visual. Com base nesta abordagem simples de troca de algo, agora pode ser um bom momento para comprar FOX! 30 de dezembro de 2018 foi um dia de negociação em que a média móvel de 50 dias mudou US $ 0,01 maior do que a média móvel de 200 dias!


A seção ampliada da equidade FOX.


Claro, lembre-se de todos os investimentos podem perder valor. Para saber mais sobre finanças e trocas comerciais, cheque os cursos da DataCamp aqui.


Negociação de opções algorítmicas 1.


Apesar dos muitos recursos interessantes das opções, os comerciantes privados raramente se aproveitam (claro que eu estou falando aqui de opções sérias, e não de opções binárias). Talvez as opções sejam impopulares devido à sua reputação de ser complexas. Ou devido à sua falta de suporte pela maioria das ferramentas de software de negociação. Ou devido às etiquetas de preço das poucas ferramentas que os suportam e dos dados históricos que você precisa para negociação algorítmica. Qualquer que seja o # 8211; recentemente fizemos vários contratos de programação para sistemas de negociação de opções, e fiquei surpreso que mesmo sistemas simples pareciam produzir lucros relativamente consistentes. Especialmente as opções de venda aparecem mais lucrativas do que a negociação / convencional & # 8217; instrumentos. Este artigo é o primeiro de uma mini-série sobre ganhar dinheiro com negociação de opções algorítmicas.


Opções 101.


As opções são explicadas em muitos sites e em muitos livros de negociação, então aqui é apenas uma visão geral rápida. Uma opção é um contrato que dá ao seu proprietário o direito de comprar (opção de compra) ou vender (opção de venda) um ativo financeiro (o subjacente) a um preço fixo (o preço de exercício) em ou antes de uma data fixa (data de caducidade) . Se você vende uma opção curta (escreva), você está tendo o outro lado do comércio. Então, você pode entrar em uma posição de 4 maneiras diferentes: comprar uma ligação, comprar uma venda, vender uma chamada curta, vender uma curta. E isso com todas as combinações possíveis de preços de exercício e datas de caducidade.


O prémio é o preço que você paga ou coleciona para comprar ou vender uma opção. É muito inferior ao preço do estoque subjacente. Os principais mercados de opções geralmente são liquidos, então você pode comprar, escrever ou vender qualquer momento com qualquer preço de exercício razoável e data de validade. Se o preço subjacente atual (o preço à vista) de uma opção de compra estiver acima do preço de exercício, a opção está no dinheiro; caso contrário, está fora do dinheiro. O contrário é verdadeiro para colocar opções. In-the-money é bom para o comprador e ruim para o vendedor. As opções no dinheiro podem ser exercidas e são então trocadas pelo subjacente ao preço de exercício. A diferença de local e greve é ​​o lucro do comprador e a perda do vendedor. As opções de estilo americano podem ser exercidas a qualquer momento, opções de estilo europeu apenas no vencimento.


As opções fora do dinheiro não podem ser exercidas, pelo menos não com lucro. Mas eles não são inúteis, já que eles ainda têm a chance de entrar no dinheiro antes do vencimento. O valor de uma opção depende dessa chance e pode ser calculado para opções européias de preço à vista, greve, caducidade, taxa de rendimento sem risco, taxa de dividendos e volatilidade subjacente com a famosa fórmula de Black-Scholes. Esse valor é a base da opção premium. O verdadeiro prémio pode desviar ligeiramente devido à oferta, demanda e tentativas de prever a tendência de preços subjacentes.


Ao reverter a fórmula com um processo de aproximação, a volatilidade pode ser calculada a partir do prémio real. Esta volatilidade implícita é como o mercado espera que o subjacente flutue na próxima vez. As derivadas parciais do valor da opção são os gregos (Delta, Vega & # 8211; don & # 8217; t sabe o que a letra grega deve ser & # 8211; e Theta). Eles determinam em que direção e quão forte, o valor irá mudar quando um parâmetro de mercado muda.


Aquela & # 8217; s todas as informações básicas necessárias para opções de negociação. Por sinal, é interessante comparar os desempenhos das estratégias dos livros comerciais. Embora os sistemas de negociação forex ou de estoque descritos nesses livros sejam principalmente de beliche e perca já em um backtest simples, não é assim com os sistemas de opção. Eles muitas vezes ganham no backtests. E isso, embora eu tenha certeza de que quase nenhum autor realmente os testou. Os autores de livros de negociação de opções são apenas mais inteligentes do que outros autores de livros comerciais? Talvez, mas nós veremos que há uma explicação alternativa.


Por que as opções de negociação?


Eles são mais complexos e mais difíceis de negociar, e você precisa de uma fórmula vencedora do Prêmio Nobel para calcular um valor que de outra forma seria simplesmente uma diferença de preço de entrada e saída. Apesar de tudo isso, as opções oferecem muitas vantagens maravilhosas em relação a outros instrumentos financeiros:


Alta alavancagem. Com US $ 100 você pode comprar apenas algumas ações, mas opções de várias centenas de ações. Risco controlado. Uma posição curta em um estoque pode limpar sua conta; As posições nas opções podem ser inteligentes combinadas para limitar o risco de qualquer maneira desejada. E, ao contrário de uma perda de parada, é um limite de risco real. Dimensões adicionais. Os lucros obtidos apenas dependem da subida ou queda dos preços. Os lucros das opções podem ser alcançados com o aumento da volatilidade, a queda da volatilidade, os preços se deslocam em um intervalo, fora de um intervalo ou quase qualquer outro comportamento de preços imagináveis. Fogo e esqueça. As opções expiram, então você não precisa de um algoritmo para fechá-las (a menos que você queira vender ou exercê-las em condições especiais). E você não paga nenhuma comissão de saída por uma opção expirada. Vantagem do vendedor. Devido ao prémio, as opções ainda podem produzir um lucro para o vendedor, mesmo que o subjacente se mova na direção errada.


A ética do hacker exige que você não apenas reivindique algo, mas prová-lo. Para se familiarizar com as opções, deixe colocar a última reclamação, o vendedor aproveita para testar:


Este é um sistema de troca de opções muito simples. Ele escreve aleatoriamente opções de chamada ou colocação e mantém as posições abertas até que expiram. Devido à aleatoriedade de colocar / chamar é agnóstico de tendências. Antes de pesquisar os detalhes do código, basta executá-lo no modo [Teste] algumas vezes (você precisará do Zorro versão 1.53 ou superior). Você notará que o resultado é diferente em qualquer momento, mas é mais frequentemente positivo do que negativo, mesmo que a comissão seja subtraída do lucro. Um resultado típico:


Você pode ver que a maioria dos negócios ganha, mas quando eles perdem, eles perdem grandes. Agora, inverta a estratégia e compre as opções em vez de vendê-las: Substitua enterShort () por enterLong (). Execute-o novamente algumas vezes (o script precisa de cerca de 3 segundos para um backtest). Você verá agora que o resultado é mais freqüentemente negativo. na verdade, quase sempre.


Parece que as opções, pelo menos, os contratos SPY testados, de fato, favorecem o vendedor. Isso é um pouco semelhante à expectativa positiva de posições longas em ações, ETFs ou futuros de índice, mas as vantagens do vendedor de opções são mais fortes e independentes da direção do mercado. Isso pode explicar uma grande parte dos resultados positivos dos sistemas de opções em livros de negociação. Por que há compradores de opções? As opções são muitas vezes compradas sem fins lucrativos, mas como um seguro contra tendências de preços desfavoráveis ​​do subjacente. E por que a vantagem do vendedor não é arbitrada pelos tubarões do mercado? Talvez porque não há muitas negociações algorítmicas com opções, e porque há de qualquer forma mais baleias do que tubarões nos mercados financeiros.


Funções para opções.


Podemos ver que as opções de negociação e backtesting requer algumas mais funções do que apenas negociar o subjacente. Sem opções, o mesmo sistema de comércio aleatório seria reduzido a esse breve script:


As opções exigem (pelo menos) três funções adicionais:


dataLoad (1, & # 8221; SPY_Options. t8 & # 8243 ;, 9) carrega dados de opções históricas do arquivo & # 8220; SPY_Options. t8 & # 8221; em um conjunto de dados. Os dados de opções incluem não apenas os preços de oferta e oferta, mas também o preço de exercício, a data de validade, o tipo & # 8211; colocar ou ligar, americano ou europeu de qualquer opção, e alguns dados adicionais raramente utilizados, como o interesse aberto. Ao contrário dos preços históricos, os dados das opções geralmente são caros. Você pode comprá-lo de fornecedores como iVolatility. Mas existe uma maneira alternativa de obtê-lo gratuitamente, que eu descreverei abaixo.


A coluna do centro lista os preços de exercício e as datas de validade diferentes, as partes direita e esquerda são os preços de oferta e de oferta e os tamanhos de livro de pedidos para a chamada atribuída (esquerda) e as opções de venda (à direita). Os preços são por ação; um contrato de opção sempre cobre um certo número de ações, normalmente 100. Então, você pode ver na lista acima que você coletará $ 15 premium quando você escrever uma opção de chamada SPY que expira na próxima semana (03 de fevereiro de 2017) com US $ 230 preço de exercício. Se a SPY não ganhou mais de $ 230 até essa data, os US $ 15 são seus lucros. Se ele resultou em US $ 230 e 10 centavos e a opção é exercida (acontece automaticamente quando expira no dinheiro), você ainda mantém US $ 5. Mas se de repente subisse para US $ 300 (talvez Trump anunciasse novos muros ao redor dos EUA, tudo pago por si mesmo), você deve suportar uma perda de $ 6985.


A imagem exibe 54 contratos, mas esta é apenas uma pequena parte da cadeia de opções, pois há muitas datas de caducidade e preços de exibição disponíveis. A cadeia de opções SPY pode conter até 10.000 opções diferentes. Todos eles são baixados para o PC com a função contractUpdate acima, o que pode demorar alguns segundos a ser concluído.


contrato (Tipo, 30, preçoClose ()) seleciona uma opção específica da cadeia de opções baixada anteriormente. O tipo (PUT ou CALL), os dias até a expiração (30) e a greve (priceClose () é o preço atual do subjacente) são informações suficientes para selecionar a melhor opção de ajuste. Note-se que, para obter preços de exercício corretos no backtest, baixamos os dados de preços subjacentes com a bandeira UNADJUSTED. Os preços de greve são sempre desajustados.


Uma vez que um contrato é selecionado, o próximo enterLong () ou enterShort () compra ou vende a opção no mercado. A cláusula if () verifica se o contrato está disponível e a data de expiração é diferente do anterior (para garantir que somente contratos diferentes sejam negociados). Os limites de entrada, de paragem ou de lucro funcionariam como de costume, agora só se aplicam ao valor da opção, o prémio, em vez do preço subjacente. O backtest pressupõe que quando uma opção é exercida ou expira no dinheiro, o subjacente é vendido imediatamente e o lucro é registrado na conta do comprador e deduzido da conta do vendedor. Se a opção expirar para fora do dinheiro, a posição simplesmente desaparece. Portanto, não nos preocupamos com a saída de posições nesta estratégia. Além dessas diferenças, as opções de negociação funcionam de acordo com a negociação de qualquer outro instrumento financeiro.


Estratégias de opções de backtesting.


Aqui é uma maneira fácil de se enriquecer. Abra uma conta do IB e execute um software que registre as cadeias de opções e os preços do contrato em intervalos de um minuto. Isso é o que alguns fornecedores de dados fizeram nos últimos 5 anos, e agora eles estão querendo vender seus tesouros de dados. Embora você possa facilmente pagar vários milhares de dólares por algumas cadeias de opções de ações principais, não tenho certeza de quem realmente possui os direitos autorais desses dados # 8211; o vendedor, o corretor, a troca ou os participantes do mercado? Esta pode ser uma área cinzenta legal. De qualquer forma, você precisa de dados históricos para o desenvolvimento de estratégias de opções, caso contrário, você não pode fazer o backtest deles.


Aqui é um método para obtê-lo de graça e sem problemas legais:


Este script é um pouco mais longo do que os scripts Zorro habituais que postei aqui, então eu não o expliquei detalhadamente. Ele gera cadeias de opções artificiais para qualquer dia a partir de 2018-2017 e as armazena em um arquivo de dados histórico. Os preços das opções são calculados a partir do preço subjacente, da volatilidade, da taxa de juros livre de risco atual e da taxa de dividendos do subjacente. Ele usa três faixas de preços de exercício e datas de caducidade em qualquer sexta-feira dos próximos 180 dias. Você precisa de R instalado para executá-lo, e também o pacote RQuantlib para calcular os valores das opções. Todas as funções são descritas no manual Zorro. A função yield () retorna a taxa de rendimento atual das contas do Tesouro dos EUA e contractVal () calcula o prémio ao resolver uma equação diferencial com todos os parâmetros da opção. O código-fonte de ambas as funções pode ser encontrado no arquivo de contrato. c incluir.


Devido ao solucionador de equações diferenciais lentas e ao grande número de opções, o script precisa de várias horas para ser concluído. Aqui é uma comparação dos dados gerados com dados reais de opções SPY:


A linha azul são os preços das opções artificiais, a linha preta são os preços reais comprados de um fornecedor de dados de opções, tanto para contratos SPY de 3 semanas com 10 pontos de distância spot-strike. Você pode ver que os preços combinam bastante bem. Existem pequenas diferenças que podem ser parcialmente aleatórias, parcialmente causadas por anomalias na oferta e na demanda. Para estratégias que exploram essas anomalias & # 8211; que inclui todas as estratégias baseadas em volatilidade implícita e # 8211; Você precisará de preços reais de opções históricas. Para as estratégias de opções que exploram apenas as mudanças de preço ou de volatilidade do subjacente, os dados artificiais provavelmente irão fazer. Veja, lendo este artigo até o final, você já salvou alguns milhares de dólares.


Conclusão.


Opções e combinações de opções podem ser usadas para criar instrumentos financeiros artificiais com propriedades muito interessantes. As estratégias de opções, especialmente as opções de venda, são mais propensas a serem lucrativas do que outras estratégias. As estratégias de opções algorítmicas são um pouco, mas não muito mais complexas do que estratégias com outros instrumentos financeiros.


Eu incluí todos os scripts no repositório de script de 2017 e também um conjunto de dados históricos com as taxas de rendimento (caso contrário, você precisava da ponte Quandl ou do Zorro S para baixá-los). Você precisará do Zorro 1.53 ou superior, atualmente disponível no & # 8220; Beta & # 8221; link da página de download do Zorro. A mensagem de erro da versão Zorro gratuita sobre a ponte Quandl não suportada pode ser ignorada, devido às taxas de rendimento incluídas, o script será executado no entanto.


No próximo artigo, analisaremos mais de perto os valores das opções e os métodos para combinar opções para limitar o risco ou negociar intervalos de preços arbitrários. Essas combinações com nomes engraçados como "Iron Condor" e # 8221; ou & # 8220; Borboleta & # 8221; são muitas vezes referidos como estratégias de opções, mas não são & # 8211; são apenas instrumentos financeiros artificiais. Como você os troca é até a estratégia real. Algumas estratégias de opções simples, mas consistentemente rentáveis ​​serão o tema do terceiro artigo desta mini-série.


49 pensamentos sobre & ldquo; Algorithmic Options Trading 1 & rdquo;


Artigo muito interessante Eu tenho um sistema de troca automático de opções criado pelos desenvolvedores do Zorro (ótimo trabalho, por sinal) e é muito interessante ver que minha estratégia gera resultados semelhantes à sua estratégia # 8220; aleatória # 8221 ;. Estou ansioso para os próximos artigos desta mini-série.


Gostaria de perguntar, você tem alguma idéia se seu livro será traduzido para o inglês em breve? Adoraria ler o livro.


Eu estou totalmente interessado nestes mini artigos da série. Por favor, deixe-me saber a próxima série.


Obrigado # 8211; sim, uma versão de livro em inglês está planejada, eu só devo encontrar algum tempo para revisar a tradução bruta. Andrés: você pode inserir seu e-mail no campo de inscrição à direita.


Bom artigo, gostaria de lhe perguntar o que são bons livros ou onde posso aprender a negociar com opções. Obrigado.


Estou certo, porque esses preços artificiais e reais se relacionam com uma espécie de sintético & # 8221; opção feita como uma série rolada de opções reais com a data de validade mais próxima e greve dinamicamente alterada (dependendo do preço subjacente)?


Investopedia e Tastytrade têm alguns tutoriais e vídeos sobre opções. - Não foi lançada a série, mas uma cadeia de opções com diferentes greves e datas de expiração, assim como na vida real. Caso contrário, o backtest não seria realista.


Quando você está comparando os preços artificiais com os preços reais, você está usando ataque ATM? O ponto inteiro, para mim, de testar uma estratégia de negociação de opções versus dados de opções reais é que, nas asas, os volumes implícitos serão muito superiores aos gerados artificialmente.


As greves utilizadas foram cerca de 10 pontos ITM.


Obrigado por publicar este interessante artigo. Posso saber quando os outros dois artigos desta mini-série serão publicados?


Quando eu tiver algum tempo & # 8230; 🙂


Que bom artigo! Os resultados do sistema de comércio aleatório são semelhantes aos CBOE S & amp; P 500 PutWrite Index e faz sentido.


Muito obrigado por este artigo! Estava pensando nisso no outro dia.


Eu gosto muito dos artigos deste blog. Atualmente, estou negociando opções de compra de prazo de 1 ano de ações específicas.


Meu maior problema com a vantagem do vendedor & # 8221; que contradiz o risco controlado & # 8221; declaração.


& # 8220; Algo que muitas vezes confunde os investidores é se, ou não, ser uma chamada curta e uma longa colocação são iguais. Intuitivamente, isso pode ter algum sentido, uma vez que as chamadas e colocações são contratos quase opostos, mas ser uma chamada curta e um longo tempo não é o mesmo. Quando você é comprido, você tem que pagar o prêmio e o pior caso resultará em perda do prêmio. No entanto, quando você recebe uma chamada curta, você coleciona a opção premium, mas você está exposto a uma grande quantidade de risco & # 8221;


Então, quando você escreve (nua), seu risco é ilimitado. O curto período de tempo de expiração (30 dias) é salva-lo na maioria dos casos, mas isso é uma auto-ilusão. Este método é muito semelhante aos bots de negociação de fraude, onde 99,5% dos bots do tempo estão ganhando pouco (e. G. Call premium) quantidade de dinheiro, no entanto, quando você perde, você arrisca grande quantidade de seu dinheiro.


O risco prolongado ou o risco de comerciantes são limitados e eles escolhem opções fora do dinheiro para multiplicar seus ganhos e, paralelamente, eles reduzem sua chance vencedora.


Eu estaria interessado em LEAPS (1+ ano de expiração longo / put opções) backtest.


Apenas faça isso. Faça o download do Zorro 1.54 no fórum do usuário e execute um sistema com o LEAPS. Para isso, você precisa aumentar o & # 8220; DaysMax & # 8221; variável no script de geração de dados de opções acima de 1 ano (365) ou 2 anos (2 * 365) para incluir contratos de longo prazo. O script precisará um pouco mais de tempo para a geração de dados.


Uma vez que as opções de negociação são um novo recurso Zorro, eu estou me perguntando se a parte do manual Broker do manual (zorro-trader / manual / en / brokerplugin. htm) foi suficientemente atualizada para atender as opções de manipulação.


Eu estou pedindo porque eu estou tentando escrever um plugin DLL para TradeKing (em breve para ser renomeado para Ally Invest). Eles possuem ações, ETFs e contratos de opções. Corretor muito baixo de barreira para entrada também ($ 0 necessário para obter acesso à API).


Para opções, implemente as funções básicas da API mais 5 funções BrokerCommand: GET_POSITION, GET_OPTIONS, GET_UNDERLYING, SET_SYMBOL e SET_MULTIPLIER.


Artigo fantástico, obrigado por compartilhar, testei o código e baixei os dados das opções através do script, tudo pareceu fazer o download de OK e me fazer um arquivo T8 de 48mb para o SPY, mas quando eu executar o script aleatório, não obtenho quaisquer negociações. É a primeira vez que eu corri o zorro (I & # 8217; m na última versão baixada há 2-3 dias), por isso realmente não tenho certeza do que eu estou fazendo de errado.


Qualquer ajuda será apreciada e espero ansiosamente o próximo episódio nesta série fascinante 😉


Aqui está a saída do log:


Opções de testeSellRandom SPY.


Conta simulada AtivosIB.


Período de barra 24 horas (média 2233 min)


Período de teste 12.01.2018-01.06.2018 (1270 bars)


Período de busca 80 bares (16 semanas)


Modo de simulação realista (deslizamento 5,0 segundos)


Spread 2.0 pips (roll 0.00 / 0.00)


Contratos por lote 1.0.


Perda / perda bruta 0,00 $ / -0,00 $ (-1p)


Lucro médio de 0,00 $ / ano, 0,00 $ / mês, 0,00 $ / dia.


Dispensa máxima -0.00 $ -1% (MAE -0.00 $ -1%)


Tempo de inatividade total 0% (TAE 0%)


Tempo máximo de queda 0 minutos a partir de setembro de 2018.


Margem máxima aberta 0.00 $


Risco máximo aberto 0,00 $


Volume comercial 0,00 $ (0,00 $ / ano)


Custos de transação 0.00 $ spr, 0.00 $ slp, 0.00 $ rol.


Capital requerido 0 $


Número de negócios 279 (52 / ano, 1 / semana, 1 / dia)


Percentagem de ganhos de 0,0%


Vitória / perda máxima 0.00 $ / & # 8211; 0.00 $


Lucro médio de lucro 0,00 $ -1. $ P (+ 0.0p / -1. $ P)


Deslizamento do comércio médio 0,00 $ 1. $ p (+ 0.0p / -1. $ P)


Barras de comércio médio 23 (+0 / -23)


Barras comerciais máximas 26 (5 semanas)


Tempo no mercado 506%


Negociações abertas máximas 6.


Raio de perda máxima 279 (não correlacionado 279)


Retorno anual 0%


Taxa Sharpe 0,00.


Critério de Kelly 0,00.


R2 coeficiente 1.000.


Nível de confiança AR DDMax Capital.


Análise de portfólio OptF ProF Win / Loss Wgt%


e um trecho do arquivo de log & # 8230;


[1338: Sex 13.05.16 19:00] +0 +0 6/271 (206.21)


[SPY :: SC1272] Ligue para 20180513 204.0 0@3.5713 não negociado hoje!


[SPY :: SC1272] Expirou 1 Ligue 20180513 204.0 0 @ 207: +0.00 às 19:00:00.


[1339: Seg 16.05.16 19:00] +0 +0 5/272 (204.96)


[1340: Ter 17.05.16 19:00] +0 +0 5/272 (206.46)


[1341: Qua 18.05.16 19:00] +0 +0 5/272 (204.44)


[1342: Qui 19.05.16 19:00] +0 +0 5/272 (204.06)


[SPY :: SC4278] Escreva 1 Ligue 20180624 205.0 0@3.4913 às 19:00:00.


[1343: Sex 20.05.16 19:00] +0 +0 6/272 (204.92)


[SPY :: SP1773] Coloque 20180520 208.0 0@4.2851 não negociado hoje!


[SPY :: SP1773] Expirou 1 Coloque 20180520 208.0 0 @ 204: +0.00 às 19:00:00.


[1344: Seg 23.05.16 19:00] +0 +0 5/273 (205.51)


[1345: Ter 24.05.16 19:00] +0 +0 5/273 (206.17)


[1346: Qua 25.05.16 19:00] +0 +0 5/273 (208.67)


[1347: Qui 26.05.16 19:00] +0 +0 5/273 (209.44)


[SPY :: SC4779] Escreva 1 Ligue 20180701 209.0 0@3.7358 às 19:00:00.


[1348: Sex 27.05.16 19:00] +0 +0 6/273 (209.53)


[SPY :: SP2274] Coloque 20180527 208.0 0@3.3622 não negociado hoje!


[SPY :: SP2274] Expirou 1 Coloque 20180527 208.0 0 @ 209: +0.00 às 19:00:00.


[1349: Ter 31.05.16 19:00] +0 +0 5/274 (210.56)


[SPY :: SC2775] Capa 1 Ligue para 20180531 207.0 0@2.2309: +0.00 às 19:00:00.


[SPY :: SC3276] Capa 1 Ligue 20180531 205.0 0@5.1843: +0.00 às 19:00:00.


[SPY :: SP3777] Capa 1 Coloque 20180531 206.0 0@0.8602: +0.00 às 19:00:00.


[SPY :: SC4278] Capa 1 Ligue para 20180531 205.0 0@4.9463: +0.00 às 19:00:00.


[SPY :: SC4779] Capa 1 Ligue 20180531 209.0 0@2.8347: +0.00 às 19:00:00.


[1350: Qua 01.06.16 19:00] +0 +0 0/279 (209.12)


Eu vejo que as posições são todas abertas com zero volume, como se você tivesse definido a quantidade de contratos para 0. Você usou o script não modificado do repositório?


I & # 8217; m usando o arquivo OptionsSimulate. c diretamente do arquivo Zip.


Eu instalei R e as bibliotecas Quantlib e a ponte R pareceu funcionar bem também.


O topo do arquivo.


string FileName = & # 8220; Histórico \\ SPY_SimOptions. t8 & # 8221 ;;


var StrikeMax [3] =; // 3 intervalos de ataque com diferentes passos.


var StrikeStep [3] =; // larguras de passo para os 3 intervalos.


int DaysMax = 180;


var BidAskSpread = 2.5; // Bid / Ask spread em percentagem.


var Dividendo = 0,02;


int Type = 0; // ou EUROPEO, ou FUTURO.


LookBack = 21; // por volatilidade.


Lamentamos as perguntas do n00b, são ferramentas e sistemas realmente interessantes e queria testar alguns spreads de crédito verticais usando este código como base para o SPY e talvez alguns outros instrumentos!


Não é uma questão de noob, na verdade é minha culpa. Eu apenas vejo que eu esqueci de definir as opções multiplicadoras no script. Isso não importava com a versão anterior do Zorro, uma vez que o multiplicador era 100 por padrão, mas agora deve ser configurado porque as opções podem ter multiplicadores muito diferentes.


I & # 8217; corrigiu o script acima. Obrigado por me notificar!


Sim, foi isso!


Obtendo resultados agora, muito obrigado pela sua ajuda jcl.


I & # 8217; m agora para colocar $ 1mm em uma conta e trocar este bebê 😉


Você tem alguma idéia quando você vai começar a trabalhar no resto dos artigos desta série?


Parece que o código abaixo não está funcionando mais.


O arquivo CSV SPY. csv é preenchido com este conteúdo:


QECx05, O URL que você solicitou está incorreto. Use a seguinte URL em vez disso: / api / v3 / datasets /: database_code /: dataset_code.


Desculpe, na verdade, esse arquivo era de Quandl, e precisa de uma assinatura paga.


Do Yahoo eu recebo o erro Can & # 8217; t baixar o SPY do Yahoo.


Alguém que tenha o mesmo problema?


Eu acho que todos estão tendo o mesmo problema, já que o Yahoo mudou seu protocolo na semana passada. Se você se deparar com problemas como esse, procure uma solução não só no meu blog, mas primeiro no fórum Zorro:


Obrigado por esta informação útil sobre sistemas de negociação automatizados!


Eu sou muito novo para isso, mas acho que este é um negócio muito maior do que você faz parecer som:


& gt; Existem pequenas diferenças que podem ser parcialmente aleatórias, parcialmente causadas por anomalias na oferta e na demanda. Para estratégias que exploram essas anomalias, você precisará de dados históricos reais.


Ter uma volatilidade precisa é essencial. Sem isso, você não está apenas escrevendo uma estratégia que não explore essas anomalias, você está escrevendo uma que as ignora completamente. É comparável ao gerar o preço de estoque, escolhendo um número aleatório com base na distribuição de probabilidade das semanas anteriores e # 8217; preços ou alisando todos os maiores movimentos.


Os preços das opções são baseados em expectativas sobre o futuro, mas (a menos que eu não entenda seu código), você está avaliando-os com base no passado. As diferenças serão mais pronunciadas em subjacentes diferentes de SPY, particularmente em torno do tempo de renda (digamos AAPL, MSFT ou GOOG).


Também acho difícil pensar em uma estratégia que não explore a diferença entre a volatilidade implícita e real. Mesmo um delta de 16/5 colocado na SPY só funciona tão bem como porque a IV é muito mais alta do que deveria ser.


Sim, as mudanças nos preços das opções devido à expectativa de volatilidade, talvez quando a abordagem da notícia da empresa pertence às anomalias mencionadas. A regra geral é: para anomalias que também têm um efeito sobre o subjacente, você pode usar os preços artificiais. Para anomalias que afetam apenas as opções, mas não o subjacente, você precisará comprar dados das opções históricas reais.


Quão bons serão os dados simulados se eu mudar o BarPeriod = 1440 para ser BarPeriod = 1?


Teoricamente, tão bom ou ruim quanto os dados diários, já que o priciple é o mesmo. Mas eu ainda não fiz testes com dados de opções de 1 minuto. Isso é uma grande quantidade de dados.


& # 8220; Devido ao solucionador de equação diferencial lenta e ao grande número de opções, o script precisa de várias horas para concluir. & # 8221;


Quanto mais rápido você acha que isso poderia ser se o R / Quantmod fosse substituído por C / C ++? Estou pensando em gerar muitos dados sintéticos.


Eu acredito que ele é _ C ++, pelo menos o Quantlib subjacente está programado em C ++. A sobrecarga R é provavelmente insignificante. O problema não é o código, mas a matemática. A resolução numérica de equações diferenciais é lenta. Black-Scholes é muito mais rápido, mas apenas para opções europeias. Se você realmente possui muitos dados para gerar, pode fazer sentido verificar a velocidade de diferentes métodos de aproximação para opções americanas.


Percebo que a volatilidade é fixada em 20 no script acima para gerar preços de opções sintéticas. Poderia não haver um argumento para que a volatilidade seja 30 dias e calculada programaticamente a partir do subjacente?


O que você quer dizer com & # 8220: 30 dias e # 8221 ?? 20 is the usual volatility period in financial calculations, since it is roughly equivalent to one month. 30 would probably not make much difference.


You use a one time estimate of Volatility I think: eg 16 for the S&P. But on a rolling basis it will very widely which is of course part of the reason why option prices change so much: as volatility rises so does the price of the option. If therefore you use a rolling 20 (or 30) day moving average of volatility you will obtain more accurate synthetic option prices than simply assuming a one time flat 16 for the S&P when sometimes actual might be 10 , sometimes 30. I have not looked at the architecture of zorro and so don’t now whether its mostly vector, or look or what. Either way it would be possible to include the relevant day’s moving average of the volatility of the underlying instrument rather than a fixed figure.


But there again that is what you do perhaps? HistVolOV = VolatilityOV(20) – maybe this is 20 days? Not 20%?


A question not a statement.


Anyway it looks a wonderful piece of software. Just going to plough my way through the manual.


Yep, looks like Vol is a time series. Sorry to bother you.


Yes, it’s annualized volatility from the last 20 days. If it were 20%, I would have written: HistVolOV = 0.2.


Não. It doesn’t cut it. You can’t use a single measure of historic volatility for everything from a one month option to an expiry 24 months out. Perhaps the whole scheme is invalid. For instance IV for an SPX two year maturity is currently 15%+ while an option expiring in the next few days is 5% ish.


It may be invalid to use manufactured data at all. Except if you treat it as a sort of Monte Carlo test: this is what may/could have happened / might happen.


Anthony, the script is calculating the current price of an option. The current price depends on current volatility. Not on volatility from 24 months ago.


You calculate the value of European options with the Black Scholes formula, and American options, as in the script above, with an approximation method. Both methods normally use 20 days volatility. The volatility sampling method can differ, but the 20 days are pretty common to all options trading software that I know. And you can see from the comparison with real prices above that this period works rather well.


No, you can not calculate the current price of an option on any given day in that way. There is no way to accurately reproduce implied volatility hence price on any given date in the past. And it is the implied volatility we are interested in, not the historic. I totally agree on Black Scholes of course and its uses but it is cart before horse to expect to plug in 20 day volatility as at 3rd January 1985 and expect it to come up with an accurate price as traded at the close on that day for the SPX for any given strike or expiry.


It’s looking at it the wrong way around.


What you can try is to play around with different methods of estimating what the implied vol/ price MAY have been on 3rd Jan 1985 for a given strike and expiry of an SPX option.


For instance you might use 5 day historic volatility for an option expiring in a week and 252 day volatility for an option expiring in a year. Or you might imply volatilities by looking at the term structure of VIX futures contracts from 2004. Or at least use the VIX index itself going back to 1986 as input for 30 day volatility.


Whatever you do you won’t really be producing anything like what was actually traded on the day. Or at least not consistently and accurately over all expiries and strikes.


I believe that the process you describe does have a value but that the outcome of both the prices produced and the back tests resulting therefrom will be more akin to a random moet carlo process than to a back test on actual traded price data.


I believe it is a valuable process but that what is produced is a series of parallel universes: what might have happened to a given strategy over a given period of time using implied volatilities which may or may not have been traded.


Sorry to be long winded and I am an admirer of both your product and your script above. I would not have thought of generating fake option prices had I not seen your excellent article.


But in my opinion at least you need to rethink your input into the BS formula as far as volatility is concerned.


Incidentally please be well aware that I admire your product and your thoughts. Don’t imagine I am being difficult. Equally please don’t imagine I believe I am “right”!


I am just enjoying the journey and the dialogue with you and hoping together we can improve each other’s understanding of the topic.


Mine is limited!


Say the date you are looking atis 7th January 1987. On that day historic SPX volatility calculated over 20 trading days was 15.23. Historic volatility on that day for the past 252 days was 14.65.


For 5 days it was 18.


Now say I am trying to “calculate” (guess) a price (which might have been traded on 7th January 1987) for an option expiring in 5 days, 20 days and 252 days. Lets assume ATM.


My suspicion is that it would not be helpful to use 15.23 for all three expiries.


Thank you for your kind words. Finance is complex. My knowledge is even more limited and I’m daily surprised by some results that I didn’t expect. & # 8211; In your example, the 15.23% volatility is the correct value. If you used a higher volatility period for higher expiration, then it depends on whether it’s still annualized volatility or just volatility of a longer time. In the latter case the results are off by some factor, in the former case they are based on too old volatility and thus not up to date. & # 8211; You’re right about the implied volatility, since it is affected by the difference of theoretical and real option value. So you cannot use the script above for getting it. Otherwise you would just get back some approximation of the current volatility. You need real option prices for IV.


I hope that it’s alright that I discuss this with just a few of my clientele, this will assist.


opções.


62 & # 32; пользователя находятся здесь.


МОДЕРАТОРЫ.


brazeau doougle Opções Bro о команде модераторов & raquo;


Bem-vindo ao Reddit,


a primeira página da internet.


e inscreva-se em uma das milhares de comunidades.


отправлено & # 32; 2 дня назад & # 32; автор & # 32; SAPit.


помощь правила сайта центр поддержки вики реддикет mod guidelines связаться с нами.


приложенияи инструменты Reddit para iPhone Reddit para o site móvel Android кнопки.


Использование данного сайта означает, что вы принимаете & # 32; пользовательского соглашения & # 32; и & # 32; Политика конфиденциальности. &cópia de; 2018 reddit инкорпорейтед. Все права защищены.


REDDIT e o logotipo ALIEN são marcas registradas da reddit inc.


& pi; Rendered by PID 125068 on app-359 at 2018-01-12 14:32:01.005874+00:00 running b995ef9 country code: UA.


How To Price Stock Options Using R?


Options trading has become very popular in recent years. Did you read the post on how to get paid for buying your favorite stock ? In this post you learn an options trading strategy that you can use to buy your favorite stock at a lower price. Options are a type of derivatives. Derivatives have been hailed as the financial revolution of the late 20th century. Derivatives types are forwards, futures, swaps and options. Derivatives are instruments that derive their value from another underlying asset. In the case of stock options, their prices depend on the underlying stock.


In this post first we will build two options pricing models. The first one is the famous Black Scholes Options pricing model and the second one is the Cox-Ross-Rubinstein Options pricing model. After that we will also discuss what options greeks are and how to model implied volatility. We will also discuss why in practice both these options pricing formulas are used in reverse to calculate implied volatility instead of options price. . We will be using R for doing the analysis. You should have installed R and RStudio. I would suggest if you fast a very fast implementation, you should install Microsoft R Open. Quantmod is an important R package that provides technical analysis. Read this post on how to use R package Quantmod in daily stock market analysis .


Options as said above drive their value from the underlying stock. The problem is we don’t know whether the options contract is going to be exercised or not. This brings a level of complexity when we try to price the stock options contract. Black Scholes formula assumes a continuous stochastic process while Cox-Ross-Rubinstein model assumes a discrete stochastic process. So let’s start with Black Scholes Options pricing formula. Read this post on fail safe EMA trading system .


Black Scholes Stock Options Pricing Formula.


Black Scholes options pricing formula makes a few assumptions. The first is market is arbitrage free. This means that there is no price differential possible. The second assumption is that the underlying asset price follows a Brownian motion. The third assumptions says that the underlying stock does not pay any dividend.. Fourth assumption is that there are no transaction costs involved and buying and selling of the underlying stock can be done in any fractional amount. The last assumption is that we know the short term interest rate and this interest rate is constant over time. Now we don’t need to go into the details of how we derive this formula mathematically. We will use R for calculating the stock options price when we know the different parameters used in calculating the stock options price. Below we use R to calculate Apple AAPL stock call option price with expiry 3 months. Apple AAPL stock price is $130 and the stock options contract strike price is $140.


First we load the fOptions library, c means call option. S is the stock price which is $130 per share. X is the stock options strike price which is $140 per share. Short term interest rate is 2%. Implied volatility has been assumed to be 22%. Apple stock call option price is $2.38. É assim que funciona. Apple stock right now is trading at $130 per share. We buy a call option. We believe Apple stock price will increase so we buy a call options with 3 month expiry on Apple stock with strike price of $140. If price goes above $140 we can buy the AAPL stocks at $140 per share. Right now Apple stock is trading at $148 per share. So you can see we can buy Apple stock cheap. We will exercise the Apple stock call options contract at $140 and then sell the stock in the market for $148 making a profit of $8 per share. Since the price was $2.38 per 100 shares we make a good profit. Read this post on a Keltner Chanels trading strategy that made $1.1 million . Suppose our strike price was $135.


In this case stock options price has increased to $3.88. Now as said above we don’t need to know how to derive this Black Scholes Options pricing formula. We just need to plug-in the different parameters in the formula like call/put option, stock price, strike price, short term interest rate, implied volatility etc. Now the problem is we don’t have any way to calculate implied volatility. We just assumed an implied volatility formula. If you don’t know what are the different parameters are use the following formula.


We can also calculate put options price . It is also very easy when using R. Below is a put option price calculation. We changed c to p in the formula. Apple stock price is $130. Put option strike price is $135. Expiry is 3 months. Short term interest rate is 2%. Implied volatility is 22%.


Now as said above Black Scholes Options pricing formula depends on implied volatility a lot. Implied volatility is something we don’t know. So practically we can’t use this Black Scholes Stock Options price formula. Most of the time we use the formula in reverse. We plugin in the stock option price in the formula and calculate implied volatility. We can use the GARCH model to calculate volatility. Read this post on how to use GARCH in trading .


The Cox-Ross-Rubinstein Stock Options Pricing Formula.


Cox-Ross-Rubinstein formula also known as CRR formula is different from Black Scholes Stock Options pricing formula. The fundamental assumption in CRR formula is that the underlying stock price follows a discrete binomial distribution. What this means is that stock price either moves up by a certain amount or moves down by a certain amount in each period. The binomial tree is recombining. What this means is that in 2 periods, price can go up and then down or it can go down and up with the same end price. Below is calculate Apple stock options price using the same strike price, implied volatility, short term interest rate as above for Black Scholes formula.


You can see options prices using Cox-Ross-Rubinstein formula are close to Black Scholes formula but not the same. Now don’t need to do the complex mathematical derivation of the CRR formula. We can also plot the above call options formula as well the put options formula binomial tree for 3 periods. Below is the code for call options binomial tree.


By changing ce to pe we can also plot the put options binomial tree. Read this post on how to do Principle Component Analysis on Dow Jones Industrial Average DJIA. Below is the call options binomial tree plot.


Below is the put options binomial tree.


Now you saw a difference in options price between the both formulas. The price difference is not much. Black Scholes calculated call options price as $3.88 while Cox-Ross-Rubinstein formula calculated call options price as $4.03. The difference is not great but it is there. It is due to the difference in the two formulas mathematical derivations. In Black Scholes formula we assume a continuous stochastic formula while in Cox-Ross-Rubinstein formulas assumes a discrete binomial formula. W can reduce the price difference by reducing the length of the time step in Cox-Ross-Rubinstein formula.


How To Calculate Options Greeks?


Greeks measure sensitivity of an options contract to different market factors. For example delta is the sensitivity to underlying stock price. Gamma is the sensitivity to delta to underlying stock price. You can call gamma delta of delta. Theta is sensitivity to time while rho is sensitivity to risk free rate. Lastly vega is the sensitivity to implied volatility. In mathematical terms all the greeks are partial derivatives that measure the rate of change with respect to some parameter. Below we calculate the greeks using R.


You can see R is very fast in calculating the greeks. Straddle is an important options trading strategy. We construct a stradde by buying a put and a call option at the same time. Below is the delta calculations for a straddle.


Econometrics is an important subject that many traders don’t know. I have developed this course on Econometrics for Traders in which I show you how you can use econometrics in your trading. Below is the delta plot for this straddle option build with Apple stock put and call options.


If you are interested, you can take a look at my course Stochastic Calculus for Traders . In this course, I show you how to mathematically derive Black Scholes options pricing formula as well as Cox-Ross-Rubinstein options pricing formula.


0 comentários.


Join Our Million Dollar Trading Challenge Today. Subscribe To Our Ultimate Swing Trading Newsletter. Download 3 Powerful Artificial Intelligence Machine Learning Swing Trading Indicators FREE!


Sua informação é 100% segura conosco e nunca será compartilhada.


Direitos autorais e cópia; 2018 · Stock. TradingNinja · All Rights Reserved.


Download eBook How I Made $2M in Stock Market FREE!

Comments

Popular posts from this blog

Sistema de negociação binária nadex

Recursos de opções reais e estratégia corporativa

Resultados do robô de negociação forex