Gabriel Dias

Cientista de dados. Realiza pesquisa na área de derivativos/risco para o Clube de Finanças. Presidente da organização no ano de 2018. https://www.linkedin.com/in/gabrieldiasmp/
Cientista de dados. Realiza pesquisa na área de derivativos/risco para o Clube de Finanças. Presidente da organização no ano de 2018. https://www.linkedin.com/in/gabrieldiasmp/
Precificação de opções via redes neurais

Precificação de opções via redes neurais

Em 1973, Fischer Black, Myron Scholes e Robert Merton publicaram uma maneira analítica para precificar opções, de modo que se pudesse relacionar a dinâmica do preço do ativo subjacente, uma taxa de juros livre de risco, o intervalo de tempo até a data de expiração da opção, o strike da opção e a volatilidade futura deste ativo, sem depender de um retorno esperado (algo muito mais imprevisível).

HIPÓTESES DO BLACK & SCHOLES

Como já vimos em artigos anteriores, a fórmula de precificação de Black & Scholes (Black 1973) assumia a hipótese de lognormalidade para os retornos do ativo subjacente, além de que a volatilidade implícita do ativo se manteria constante para opções de um mesmo ativo e de mesmo moneyness. Em relação a hipótese de lognormalidade, isso nos diz que temos um método paramétrico de precificação, o que pode ser ruim (temos que assumir uma distribuição que não se ajusta com o que acontece nos mercados, que apresentam caudas longas), e a volatilidade implícita constante também não se concretiza, dando origem ao fenômeno chamado de “smile de volatilidade”, algo também já tratado nos nossos artigos antigos.

ENSINANDO UMA MÁQUINA A PRECIFICAR OPÇÕES

Na década de 70, seria muito difícil construir um método prático e data-driven de precificação de opções, já que não se possuía poder computacional suficiente para realizar a mineração necessária; tínhamos que ter uma maneira analítica de precificação, o que começou com a fórmula de Black & Scholes (que garantiu o Prêmio Nobel aos pesquisadores). A partir da década de 90, com o avanço computacional, alguns pesquisadores começaram a se interessar por métodos data-driven de precificação, podendo se desvencilhar das hipóteses pouco realistas.

Para tanto, podemos pensar em algumas possibilidades: tendo informações sobre as características de uma determinada opção (o seu preço de mercado, uma volatilidade implícita realizada, um determinado intervalo de tempo até a data de expiração, com o moneyness da opção, etc…), teríamos condições de ensinar um algoritmo a precificar esta opção?

Em (Hutchinson 1994), esta abordagem foi realizada com a utilização do método das redes neurais. A abordagem do pesquisadores do MIT era de ensinar uma máquina a precificar opções de maneira não-paramétrica e que não assumisse as hipóteses tão contestadas por outros pesquisadores. Colocando como input as informações teoricamente determinantes para os preços das opções, o artigo buscou ver o ajuste das previsões realizadas com o que realmente aconteceu nos mercados. Outro bom artigo, aplicando a mesma técnica mas para opções de outro mercado, é o de (Huynh 2018).

REDES NEURAIS



Como um resumo sobre o método das redes neurais, (Friedman 2001, 389) traz que a ideia é extrair combinações lineares entre as variáveis explicativas e então modelar a variável dependente (no nosso caso, o prêmio da opção) como uma função não-linear das variáveis explicativas. O modelo de redes neurais também é chamado de multilayer perceptron, onde o modelo comprime diversas camadas de regressões logísticas com não-linearidades contínuas (Bishop 2006, 226); assim é formada a função de máxima verossimilhança que é a base das “redes de treino”.

Ao contrário do que se pensa, a pesquisa sobre métodos de inteligência artificial, e mais especificamente de redes neurais, começou já na década de 40, com (McCulloch 1943), em “A Logical Calculus of The Ideas Immanent in Nervous Activity”. A ideia era de simular as redes neurais do cérebro como forma de computadores estarem aptos a aprenderem e tomarem decisões como um humano.

Para isso, matematicamente, construímos uma função de ativação \(y\), onde \(y\) é uma função de uma função não-linear das combinações lineares entre os inputs dados (\(\phi(x)\)), ponderada por pesos que, inicialmente, são aleatórios (\(w_j\)), entre 0 e 1.

\[ y(\mathbf{x, w})=f\left(\sum_{j=1}^M w_j\phi_j(\mathbf{x})\right) \]

Esses pesos, com o método de treino estipulado (backpropagation), será alterado de forma com que se alcance o erro mínimo da função para os dados inseridos. Temos que M é o número de combinações lineares, que, somados, gerarão o primeiro input para o treino da função.

FEED FORWARD NETWORK

Agora, derivando o algoritmo para chegarmos em \(y(\mathbf{x, w})\), trazido acima:

1º – Primeiramente, teremos o somatório da multiplicação do vetor de pesos \(\mathbf{w}\) com o vetor de inputs \(\mathbf{x}\). Temos que \(w_{ji}\)é um vetor de pesos que serão alterados ao longo do treinamento da rede. Faremos esse mesmo cálculo para todas as nossas variáveis

\[ a_{ji} = \sum_{i = 0}^{D} w_{ji}^{(1)}x_i \]

2º – Temos de transformar o vetor de valores ponderados \(a_{ji}\) através de uma função de ativação, que poderá ser uma função que já é conhecida de econometristas e estudiosos da estatística: a função sigmoidal, que é a utilizada na regressão logística

\[ \sigma(a) = \frac{1}{1 + exp(-a)} \]

Com isso, temos então o que é chamado de “hidden layer”.

3º – Realizar novamente a ponderação dos valores, porém agora utilizando os hidden layers como input.

Logo, teremos uma nova ativação dos outputs pela função sigmoidal, dado por um input de uma função sigmoidal anterior. Nesse caso, duas camadas da rede neural foram utilizadas. Desta forma, podemos combinar estas várias etapas e chegar nesta função para a rede neural:

\[ y(\mathbf{x, w})= \sigma(\sum_{j=0}^M w_{kj}^{(2)} \sigma(\sum_{i=0}^D w_{ji}^{(1)}x_i)) \]

BACKPROPAGATION

Tendo um vetor de outputs, ou seja, valores preditos para o target utilizado, buscamos um vetor de pesos que minimize a seguinte função:

\[ E(\mathbf{w})= \frac{1}{2} \sum_{n=1}^N ||\mathbf{y(x_n, w) – t_n}||^2 \]

Ou seja, sendo \(y(\mathbf{x, w})\) um vetor de outputs e \(\mathbf{t_n}\) o vetor dos targets iniciais, queremos minimizar a soma dos erros quadrados. Os parâmetros que são alteráveis são os pesos, tanto da primeira camada quanto da segunda utilizada. OBS: O fator (½) é adicionado para ser cancelado junto com o expoente durante a diferenciação

A partir daqui, temos um problema computacional: simular infinitas possibilidades de vetores de pesos para identificar quais são os vetores que minimizam a soma do erro quadrado é uma tarefa computacionalmente exigente. Será que temos como usar a matemática para facilitar esse processo?

Para este problema, o método das redes neurais se utiliza do gradient descent, que é uma forma iterativa para se alcançar o mínimo de uma função.



Queremos encontrar os vetores de pesos que minimizem a função erro. Assim, aplicamos a regra da cadeia para derivar a função erro:

\[ {\frac {\partial E}{\partial w_{ij}}}={\frac {\partial E}{\partial o_{j}}}{\frac {\partial o_{j}}{\partial {\text{net}}_{j}}}{\frac {\partial {\text{net}}_{j}}{\partial w_{ij}}} \] Sendo:

\[ 1) {\frac{\partial net_j}{\partial w_{ij}}}={\frac {\partial }{\partial w_{ij}}}\left(\sum _{k=1}^{n}w_{kj}o_{k}\right) \]

que será simplesmente \(o_k\), sendo \(o_k\) um vetor que se for em relação a primeira camada, o input bruto; se for em relação a segunda layer, será o output da função de ativação.

\[ 2) {\frac{\partial o_j}{\partial net_{j}}}={\frac {\partial }{\partial net_{j}}} \varphi(net_j) = \varphi(net_j)(1 – \varphi(net_j)) \]

que é a derivada parcial da função de ativação (neste caso, a função sigmoidal), e a função abaixo, que é a derivada parcial da função perda com relação à hidden layer:

\[ 3) {\frac{\partial E}{\partial o_{j}}}={\frac {\partial E }{\partial y}} = {\frac {\partial}{\partial y}} {\frac {1}{2}}(t – y)^2 = y – t \]

Assim, atualizaremos os pesos com os resultados obtidos através da otimização, e seguiremos o processo iterativo de encontrar o mínimo da função.

OBS: Um problema do método do gradient descent é que ele pode encontrar um mínimo local, não um mínimo global, que é o que nos interessaria. Há formas de contornar este problema, como, por exemplo, assumindo uma versão probabilística para a função perda. Dada a sua complexidade, deixaremos para artigos futuros a sua explicação. Além disso, outras formas de se alcançar melhores resultados com redes neurais para opções seria de segmentar as opções em ATM (at the money), OTM (out of the money), podendo captar melhor as características de ambas as situações.

Também, por utilizarmos um dataset pequeno e gratuito, a estimação foi feita dentro da amostra; vale ressaltar a possibilidade de overfitting. Por ser uma abordagem didática, vale a demonstração. A literatura recomenda alguns anos em informações diárias para uma precificação mais assertiva, mas, por serem bases pagas (e muito bem pagas), deixaremos uma abordagem mais técnica para um futuro post.

REDE NEURAL NO R

Os dados foram retirados do site ivolatility.com

##Importando os dados que serão utilizados

smile_volatilidade <- 
  rio::import("../../static/input/IV_Raw_Delta_surface.csv") %>%
  select(period, moneyness, iv) %>% 
  mutate(period = period/365)

##Executando o algoritmo através do pacote neuralnet
##Foram escolhidas duas hidden layers para análise

rede_neural <- neuralnet(iv ~ period+moneyness, smile_volatilidade, hidden = 2)
iv_predito <- as.data.frame(rede_neural$net.result) 

df_nn <- cbind(smile_volatilidade$iv, iv_predito)

colnames(df_nn) <- c("volatilidade_implicita", "volatilidade_predita")

##Criando uma coluna com os erros da predição

df_nn <- df_nn %>% mutate(erro = volatilidade_implicita - volatilidade_predita)

hist(df_nn$erro,
     main = "Distribuição dos erros da volatilidade realizada pela predita",
     xlab = "Erro",
     ylab = "Frequência",
     xlim = c(-0.04, 0.04))

plot(rede_neural, rep = "best")



Bishop, Christopher M. 2006. Pattern Recognition and Machine Learning. springer.

Black, Myron, Fischer e Scholes. 1973. “The Pricing of Options and Corporate Liabilities.” Journal of Political Economy 81 (3). The University of Chicago Press: 637–54.

Friedman, Trevor e Tibshirani, Jerome e Hastie. 2001. The Elements of Statistical Learning. 10. Springer series in statistics New York.

Hutchinson, Andrew W e Poggio, James M e Lo. 1994. “A Nonparametric Approach to Pricing and Hedging Derivative Securities via Learning Networks.” The Journal of Finance, no. 3. Wiley Online Library: 851–89.

Huynh. 2018. “Modelling and Forecasting Implied Volatility Using Neural Network.” Hanken School of Economics.

McCulloch, Walter, Warren S e Pitts. 1943. “A Logical Calculus of the Ideas Immanent in Nervous Activity.” The Bulletin of Mathematical Biophysics 5 (4). Springer: 115–33.

Posted by Gabriel Dias in Derivativos & Riscos, 1 comment
Tecnologia no Mercado Financeiro

Tecnologia no Mercado Financeiro

Que a tecnologia está mudando o status quo no mundo, todos já sabemos. O aumento vertiginoso do processamento e armazenamento computacional está causando impactos disruptivos em várias esferas, das mais diversas áreas do conhecimento e da vida. Com todo este potencial tecnológico, alguns conceitos (antigos, porém na “moda”) como inteligência artificial e machine learning estão rondando a cabeça de muitos gestores de negócio mundo afora. No entanto, os robôs já estão dominando os afazeres humanos ou ainda temos tempo de nos adaptar? O objetivo deste post é tentar esclarecer como essas mudanças têm modificado o panorama de negócios no mercado financeiro.

Mas, o que são “dados”?

Os principais ingredientes das técnicas de inteligência artificial e machine learning são os dados – que nada mais são do que informações armazenadas. Podemos controlar informações sobre preços de ações ao longo do tempo, os registros contábeis de uma empresa, flutuações no mercado de commodities, moedas, etc…

Porém, dados sempre foram coletados por boa parte das empresas. Mas o real fator disruptivo está na magnitude em que conseguimos fazer isso hoje. Com alguns dólares, podemos processar terabytes de informação em servidores dedicados na nuvem, algo inimaginável de se pensar numa planilha de Excel, no seu próprio computador. Também, os bancos de dados estão cada vez mais robustos, permitindo que armazenemos cada vez mais informação. Cerca de 90% de toda a informação gerada até hoje no mundo foi gerada nos últimos 2 anos (e que continua crescendo de maneira exponencial).

Então, surge a pergunta:

Mas vem cá, como todo esse poder computacional está mudando o mercado financeiro?

Desde gestoras de ativos e grandes fundos de investimento, até seguradoras. Os líderes mais antenados do mercado já estão tendo “dores de cabeça” sobre como criar vantagens competitivas através da tecnologia. Veja alguns exemplos:

Áreas de grande impacto da tecnologia, hoje, no mercado

  • Trading e gestão de portfólios

Duas das áreas mais chamativas do mercado financeiro, por estarem sendo frequentemente retratadas em filmes, documentários, etc… Vemos pessoas de terno berrando ao telefone, inúmeras telas de computador com gráficos sinistros, desespero no rosto de quem colocou aquele zero a mais na ordem de compra/venda, entre outros exemplos. Também, são áreas que contratam toneladas de PhDs em física, matemática e ciência de foguetes.

Traders baseados em estratégias discricionárias (decisão baseada na escolha humana) somam apenas 10% do volume negociado em ações. Fundos quantitativos já somam mais de 60% deste volume, mais do que o dobro de uma década atrás.

Marko Kolanovic, Global Head of Macro Quantitative & Derivatives Strategy do JP Morgan.

Essas informações se baseiam nos volumes negociados nos Estados Unidos. O Brasil ainda está engatinhando nesse processo e com informações inconsistentes sobre a atuação de estratégias sistemáticas na gestão de portfólios.

A aplicação da inteligência artificial no processo de decisão se baseia em modelos quantitativos complexos que buscam capturar, através de observações passadas, sinais de mercado que visam automatizar o processo de decisão, tirando o erro humano do jogo. Os modelos de machine learning e inteligência artificial são cruciais no rebalanceamento e adaptação dos algoritmos à dinâmica (que, aliás, é extremamente dinâmica) de mercado.

  • Detecção de fraudes financeiras

Em um relatório da empresa de segurança digital McAfee, foi estimado que fraudes e crimes cibernéticos custam à economia global cerca de U$600 bilhões. Uma boa parcelas desses crimes (e das mais preveníveis) é a de fraudes em cartão de crédito, que vem crescendo de maneira acelerada por conta do aumento das transações online.

Com grandes massas de dados sobre comportamento dos consumidores, os modelos de inteligência artificial e machine learning são muito utilizados para detectar padrões que ferramentas estatísticas tradicionais não conseguiriam detectar.

No Brasil, esta área já é mais desenvolvida em comparação com o segmento de trading e gestão de portfólios, com grandes bancos e financeiras contratando equipes de cientistas de dados para desenvolver modelos de prevenção de crimes cibernéticos.

  • Precificação e gestão de seguros

Num negócio que basicamente deriva da gestão de riscos, é necessário mensurar diversas dimensões de probabilidades: probabilidade de um furacão ou incêndio acontecer, de uma pessoa se tornar inadimplente ou perder o emprego, de um eventual problema de saúde aparecer, etc…

Para isso, a imensidão de processamento e armazenamento de dados veio revolucionar o setor das seguradoras. Hoje, a informação é o novo petróleo, e o negócio das seguradoras possui como alicerce a informação.

A partir de uma precificação e gestão mais assertiva a partir de análise de dados, é possível alocar os riscos de uma maneira mais eficiente e cobrar o valor adequado para cada perfil de cliente.

Carreiras e outros assuntos

A inteligência artificial e métodos de machine learning estão gerando valor em outras diversas áreas do mercado financeiro, mas, para não tornar o post muito extenso, podemos deixar este papo para o bar.

Com essa variedade de áreas de assuntos demandando conhecimentos matemáticos e estatísticos, há muitas possibilidades de novas carreiras. Se pensarmos em palavras-chave, há cientistas de dados, engenheiros de machine learning, analistas de dados, estrategistas quant, etc… Boa parte dos profissionais vêm das áreas de engenharia, matemática, física, economia, estatística, entre outros cursos com foco analítico. Boa parte dessas profissões necessitam de um conhecimento vastamente disseminado na internet.

Com isso, o Clube de Finanças está construindo núcleos de estudo (com foco em análise de risco, conjuntura macroeconômica e análise de empresas) que incluem estudos em modelagem matemática e utilização de programação, como R e Python. Com isso, preparamos os nossos membros para estarem aptos a abraçarem as inovações tecnológicas.

Posted by Gabriel Dias in Diversos, 0 comments