Simulação Monte Carlo

Expected Shortfall

Expected Shortfall

Expected Shortfall como substituto ao VaR

No artigo anterior foi apresentada a medida de risco conhecida como Value-At-Risk (VaR), nele foram abordados origem, conceito, técnicas de estimação e suas deficiências.

Para lidar com as deficiências que o VaR apresenta, Artzner et al. (1999) introduziram uma nova medida de risco denominada como Expected Shortfall (ES). Durante o decorrer deste artigo, esta medida de risco será apresentada e contextualizada com o VaR além de explorado o porquê do ES ser uma medida que apresenta melhores propriedades.

Alguns pontos a serem levados em conta sobre problemas no mundo real que podem levar o uso do ES ser superior ao do VaR:

  1. Investidores racionais que maximizam seus portfólios podem ser enganados pelo uso do VaR. É provável que construam posições com fragilidades não intencionais e podem resultar em perdas superiores ao VaR.
  2. O VaR não é confiável sob estresse de mercado, sob flutuações extremas de preços de ativos ou sob estrutura de dependência extrema de ativos. Nesses casos, VaR pode subestimar o risco.

Além dos pontos citados acima o ES é uma alternativa ao VaR por ser mais sensível ao formato da cauda de distribuição das perdas e é considerado uma medida de risco coerente por respeitar os quatro axiomas propostos por Artzner.

No artigo sobre Value-at-Risk são abordadas as quatro propriedades que medidas de risco coerentes devem apresentar, sendo elas: Monotonicidade, Homogeneidade, Invariância por Translações e Subaditividade. O VaR satisfaz as três primeiras, contudo não é sempre que ele satisfaz a Subaditividade.

O conceito de subaditividade diz que a soma de dois elementos irá sempre retornar algo menor ou igual à soma dos valores da função de cada elemento e é satisfeita através da fórmula abaixo:

\[ ES(\alpha_1 + \alpha_2, α) = ES(\alpha_1, α) + ES(\alpha_2, α) \]

Esta fórmula demonstra que o ES incorpora os benefícios da diversificação uma vez que o risco total do portfólio é igual ou menor que a soma dos risco dos componentes.

O que é Expected Shortfall?

O Expected Shortfall (ES) é uma medida de risco que produz benefícios adicionais ao Value At Risk (VaR), podendo ser referida como Conditional Value At Risk (CVaR), Average Value At Risk (AVaR) ou Expected Tail Loss (ETL).

Como definição, o Expected Shortfall se conceitua como uma medida de risco quantitativa e responde a seguinte pergunta: qual é a perda média, sabendo que a perda está acima do VaR? E também: se as coisas ficarem ruins, qual é a perda esperada?

Assim como o VaR, o ES apresenta dois parâmetros de cálculo, o horizonte de tempo (T) e o nível de confiança (\(\alpha\)). Sendo representado pela perda esperada durante o período (T), sabendo que a perda está condicionada a ser maior que o \(\alpha\)-ésimo Percentil da distribuição de perdas.

Como exemplo, supondo que o VaR é de 1 milhão de reais e que o nível de confiança (\(\alpha\)) é de 99, horizonte de tempo (T) é 1 dia. Então, o ES é a quantia média perdida em um período de 1 dia, sabendo que a perda será superior a R$ 1 milhão.

A figura abaixo, exemplificada em Yamai and Yoshiba (2005), ilustra os conceitos do próprio ES e também do VaR:

Figura 1: VaR e Expected Shortfall

Técnicas de estimação

Os valores do ES são derivados do cálculo do próprio VaR, as premissas do VaR como a forma de distribuição dos retornos, a periodicidade dos dados, a volatilidade estocástica, o corte utilizado, todos afetarão o valor do ES.

Pode-se definir o ES com um nível de confiança \(\alpha\) para uma distribuição de perdas \(L\) como a esperança das perdas acima do VAR:

\[ ES (L) = E[L | L\geq Var_\alpha(L)] \]

Essa estimação, assim como o VaR, pode ser feita de forma paramétrica ou não-paramétrica.

Método não-paramétrico

A forma histórica, ou não-paramétrica (por não depender de parâmetros e sim de amostras), é calculada a partir do VaR histórico com \(N\) observações, atribuindo um peso \(1/n\) para cada uma das n observações acima do VaR:

\[ ES_\alpha(L) = (\sum_{i=N-n}^NLi)/(n) \]

Métodos Paramétricos

Para modelos paramétricos, supomos uma distribuição a que irá depender de certos parâmetros que serão estimados. Dessa forma podemos definir o ES em termos contínuos como uma integral no intervalo \([1 – α; 1]\):

\[ ES =\frac{1}{1-\alpha}\int_{\alpha}^{1}(\Phi^{-1}(1-u)\sigma + \mu)du \] \[ ES = \frac{1}{1-\alpha}\int_\alpha^1 VaR_u(L)du \] Alguns dos modelos mais comuns para se estimar o ES pelos métodos paramétricos são a distribuição Normal (Gaussiana) e a distribuição t-Student. Algumas variações um pouco mais sofisticados são as distribuições da família johnson e a distribuição t não-central.

Assumindo uma distribuição Normal, podemos resolver a integral substituindo a função quantil da Normal padrão \(\Phi^{-1}\) ajustada para os parâmetros da distribuição \(L\), conforme derivação feita por Smaga (2016) :

\[ ES_\alpha =\sigma \frac{\varphi(\Phi^{-1}(\alpha))}{1-\alpha}-\mu \]

Com \(\varphi\) sendo a função de densidade de probabilidade e \(\Phi^{-1}\) a função quantil da Normal padrão (\(N \sim (0;1)\)).

Como simplificação podemos assumir que: \[ ES_{\alpha} =ƛσ − μ \]

Onde \(ƛ\):

\[ ƛ(α) = \frac{\varphi(\Phi^{-1}(α))}{1 − α} \]

Qual método utilizar?

Questões podem ser levantadas sobre a efetividade de cada método. A primeira vista o histórico pode parecer uma boa escolha devido à disponibilidade de dados no mercado financeiro e o aparente melhor ajustamento aos fatos reais. Enquanto isso pode ser verdadeiro se comparado com a estimação por meio da Normal, a distribuição t (e suas variações) pode se mostrar útil para o caso de termos poucas observações ou se quisermos intuir sobre a cauda da distribuição utilizando todo o conjunto de observações. Outra possibilidade seria utilizar estimadores de máxima verossimilhança para estimar os parâmetros da distribuição utilizada, garantindo uma estimativa mais conservadora nos métodos paramétricos, assim como descrito em Martin and Zhang (2017).

Assim como no VaR, além desses dois métodos podemos usar a simulação de Monte Carlo para gerar as observações e proceder assim como no método histórico.

O que é o comitê de Basileia e como ele vem tratando as medidas de risco?

O Comitê de Supervisão Bancária de Basileia é uma organização constituída por representantes de autoridades de supervisão bancária que promove a discussão sobre o aperfeiçoamento das práticas de supervisão bancária, buscando melhorar as ferramentas de fiscalização internacionalmente, e visa o fortalecimento da solidez dos sistemas financeiros.

Em 1988, o comitê estabeleceu o acordo de Basileia I que teve como objetivo criar exigências mínimas de capital, a qual devem ser respeitadas por bancos comerciais, para precaução contra o risco de crédito.

O Basileia I determinou três regras principais para que houvesse o funcionamento:

– Índice Mínimo de Capital: Determina que o banco deve deixar, pelo menos, 8% de capital em caixa de seus empréstimos.

– Capital Regulatório: Determina que a instituição deva deixar um mínimo de capital próprio em caixa para mitigar riscos.

– Avaliação de Risco: Obriga a todas instituições a avaliarem os riscos de financiamento e empréstimo.

Mesmo com todas as exigências e regras impostas pelo comitê isso não impediu inúmeras falências de instituições financeiras. Em 2004, o comitê lançou um novo acordo denominado Basileia II que teve como objetivo reforçar as medidas propostas pelo primeiro acordo e também deu mais liberdade aos bancos centrais de cada país.

Os três pilares trazidos com o segundo acordo são os seguintes:

1. Critérios para o cálculo dos requerimentos mínimos de capital (riscos de crédito, mercado e operacional);

2. Princípios de supervisão para a revisão de processos internos de avaliação da adequação de capital, de forma a incentivar a aplicação, pelos próprios supervisionados, de melhores práticas de gerenciamento de riscos por meio do seu monitoramento e mitigação.

3. Incentivo à disciplina de mercado por meio de requerimentos de divulgação ampla de informações relacionadas aos riscos assumidos pelas instituições.

Após a crise dos subprimes, observou-se que o acordo anterior era insuficiente, por consequência, surgiu o acordo de Basileia III que é um conjunto de propostas de reforma da regulamentação bancária. O acordo aumentou a regulamentação sobre o sistema financeiro e elevou os limites exigidos para bancos e instituições financeiras.

As principais inovações provenientes deste terceiro acordo foram o aperfeiçoamento dos fatores para ponderação de ativos pelo risco, introdução dos colchões de capital para conservação e contracíclico e novos requerimentos para de liquidez e alavancagem.

Desvantagens do ES

Back-Testing

Realizar o Back-test de uma métrica significa calcular quão bem a medida calculada funcionaria no passado. Supondo uma métrica de cálculo de VaR diário com um nível de confiança \(\alpha\), o back-test consiste em analisar com qual frequência as perdas excedem o VaR diário, cada dia que excede o valor é chamado de exceção. Se as exceções acontecem em aproximadamente (100-\(\alpha\))% das vezes a metodologia usada é relativamente precisa, se ocorrem em mais do que (100-\(\alpha\))% das vezes o VaR está possivelmente subestimado, enquanto se ocorrerem em menos vezes está superestimado.

Essa checagem é uma das razões pelas quais os reguladores têm sido relutantes em trocar o VaR pelo ES na quantificação de risco de mercado, dado pelo fato de ser um procedimento muito mais difícil de realizar para o ES, o que é explicado pela maioria dos métodos de back-testing para ES necessitarem de informações da distribuição de retornos de cada dia, ou pelo menos da distribuição das caudas além do VaR.

Monte Carlo e erros de estimação

Estimativas de Value-at-Risk e Expected Shortfall são afetadas por erros de estimação, os quais representam a variabilidade natural causada por amostras de tamanho limitado. As Simulações de Monte Carlo, que são tipicamente utilizadas em processos os quais não podem ser previstos facilmente devido à intervenção de variáveis aleatórias, variam na estimativa do VaR de acordo com sua aleatoriedade.

Yamai, Yoshiba, and others (2002) observa que em distribuições de perda com caudas longas, o desvio padrão relativo ao ES fica muito maior que aquele relativo ao VaR, enquanto que ao analisar distribuições aproximadamente normais, os desvios padrões relativos são praticamente iguais.

Tal fato é explicado pela probabilidade de perdas grandes e não frequentes em distribuições de caudas longas ser alta, tendo em vista que o ES estimado é afetado por elas. Já o VaR é pouco afetado por essas perdas por negligenciar as perdas além do quantil selecionado.

Ademais, é possível analisar que o aumento no tamanho das amostras é capaz de reduzir o erro da estimação do ES, sendo necessário, para uma distribuição estável de coeficiente de estabilidade igual a 1,5 (quando o coeficiente é 2 a distribuição é normal, sendo que menores valores significam caudas maiores), amostras com centenas de milhares de observações para obter-se o mesmo nível de desvio padrão que aquele relativo ao VaR. Isso faz com que Simulações de Monte Carlo tomem proporções muito grandes, necessitando de poder computacional ainda maior.

Exemplo prático:

A rotina abaixo, elaborada no R, exemplifica a estimação do Expected Shortfall para um portfólio univariado.

library(readr)
library(tidyverse)
library(forcats)
library(ggthemes)
library(PerformanceAnalytics)

Como primeiro passo, instalamos os pacotes acima para importação (readr), manipulação dos dados (tidyverse, forcats), visualização (ggthemes) e para cálculo de indicadores de portfólios (PerformanceAnalytics).

X_GSPC <- read_csv("D:/Programacao/riscoderivativos/static/input/^GSPC.csv")
View(X_GSPC)

sp500 <- as_tibble(X_GSPC)

colnames(sp500) <- c("data", "abertura", "maximo", "minimo", "fechamento","fechamento_adj", "volume") 

Após instalação dos pacotes, deve-se importar os dados do portfólio, nesse caso, univariado. Na rotina referida, foi utilizada uma série do índice S&P500 entre agosto de 2009 e agosto de 2019, com cotação de abertura e fechamento diária.

fechamento <- sp500$fechamento

sp500$variacao2 <- Return.calculate(xts(fechamento,order.by = as.Date(sp500$data))
                                    ,method = "simple")

Returns <- sp500$variacao2

sp500 %>% ggplot(aes(x=variacao2))+ 
  geom_histogram()+ 
  theme_minimal()

Com os dados importados, calcula-se a variação diária do índice através da função “Return.calculate”. A variação também pode ser calculada através do índice em t (\(P_{t}\)) sobre o índice em t-1 (\(P_{t-1}\)), como segue:

\[ \Delta P = \frac{P_{t}}{P_{t-1}}-1 \]

VaR(R = Returns,p = .95,method = "historical")

VaR95 <- VaR(R = Returns,p = .95,method = "historical")

ES(R = Returns,p = .95,method = "historical",)

ES95 <- ES(R = Returns,p = .95,method = "historical",)

Com a variação diária já calculada, tanto o VaR quanto o Expected Shortfall podem ser calculados para intervalos de confiança diferentes. Na função VaR e ES do pacote “PerformanceAnalytics”, o p (nível de confiança) pode ser definido em ambas as funções, assim como o método de estimação, o qual pode ser histórico, gaussiano/normal e modificado (“historical”, “gaussian” e “modified”).

# ES e VaR através de diferentes métodos (paramétricos e não paramétricos)

dfretornos <- data.frame(Returns)

chart.VaRSensitivity(xts(dfretornos,order.by = as.Date(sp500$data)),
                     methods = c("GaussianVaR","HistoricalVaR", "GaussianES", "HistoricalES"), 
                     elementcolor = "darkgrey")

Para elucidar os diferentes métodos de estimação do VaR e ES, o pacote “PerformanceAnalytics” permite gerar o gráfico abaixo, onde no eixo “X” encontra-se o nível de confiança e no eixo “Y” os valores do VaR e ES.


Figura 2: Comparação entre medidas de risco

Referências

Artzner, Philippe, Freddy Delbaen, Jean-Marc Eber, and David Heath. 1999. “Coherent Measures of Risk.” Mathematical Finance 9 (3): 203–28.

Martin, R Douglas, and Shengyu Zhang. 2017. “Nonparametric Versus Parametric Expected Shortfall.” Available at SSRN 2747179.

Yamai, Yasuhiro, and Toshinao Yoshiba. 2005. “Value-at-Risk Versus Expected Shortfall: A Practical Perspective.” Journal of Banking & Finance 29 (4): 997–1015.

Yamai, Yasuhiro, Toshinao Yoshiba, and others. 2002. “Comparative Analyses of Expected Shortfall and Value-at-Risk: Their Estimation Error, Decomposition, and Optimization.” Monetary and Economic Studies 20 (1): 87–121.

Contribuíram como co-autores deste artigo os analistas do núcleo de derivativos e risco Vinícius Custódio, João Pedro Smielevski Gomes e Thiago Ranzolin Barreto.

Posted by Arthur Vier in Derivativos & Riscos, 0 comments
Valor em Risco

Valor em Risco

História do VaR

O termo “Valor em Risco” derivado do inglês Value at Risk (VaR), foi introduzido no vocabulário financeiro apenas no começo dos anos 1990, apesar de suas medidas terem sido originadas muito antes.

Seu início mais provável retrocede à Bolsa de Valores de Nova York (NYSE), por volta de 1922, na qual, inicialmente, uma regra exigia que as firmas mantivessem um capital de 10% de seus ativos composto por posições de capital próprio e contas a receber de clientes. Em 1975, a Comissão de Títulos e Câmbio dos Estados unidos (SEC) estabeleceu novas regras para o capital das firmas, cujo objetivo era proteção contra perdas que poderiam ocorrer durante o período existente na liquidação de posições. Esse sistema dividiu ativos financeiros em várias categorias e subcategorias, para evitar posições muito concentradas em um único ativo.

A volatilidade nos juros americanos levou a SEC a atualizar as regras em 1980, as quais passaram a ser baseadas em análise estatística de dados históricos do mercado. Sua intenção era refletir o .95-quantil da quantidade de dinheiro que uma firma poderia perder em um período de liquidação de um mês. Apesar de não ter sido nomeado na época, essa era uma medida de valor em risco.

Em meados de 1990, muitas firmas careciam de maneiras de gerenciar o risco, foi quando a J.P Morgan desenvolveu um sistema de valor em risco em toda a empresa, modelando inúmeros fatores-chave. Uma matriz de covariância era atualizada trimestralmente com dados históricos e todos os dias as unidades de negociação reportavam a variação de suas posições de acordo com cada fator-chave. Esses dados eram agregados e expressavam o valor do portfólio como um polinômio linear dos fatores de risco, utilizando várias métricas de VaR para analisá-lo.

De 1990 em diante, a pedido do CEO da J.P. Morgan, um dado único de valor em risco deveria ser colocado nos demonstrativos de resultado em um relatório diário para as reuniões de tesouraria às 16:15, representando o risco que seria enfrentado no dia seguinte.

A partir de 1994, a metodologia desenvolvida na J.P Morgan, denominada RiskMetrics foi distribuída sem custo na internet, aumentando o interesse das firmas e investidores no gerenciamento de risco e possibilitando o aprimoramento das métricas de valor em risco.

Como podemos definir o Valor em Risco?

Em sua definição formal, o VaR de um portfólio é uma função com dois parâmetros: o horizonte de tempo (T) e o nível de confiança (X). Ele representa o nível de perda que temos X% de confiança que não vai ser excedido em um período T, podendo ser calculado tanto pela distribuição de probabilidades dos ganhos quanto pela distribuição de probabilidades das perdas.

Como exemplo, ao utilizar T representando três dias e X=90, o Valor em Risco é a perda no décimo percentil da distribuição de ganhos esperados dos próximos três dias. Da mesma forma, é a perda no nonagésimo percentil da distribuição de perdas dos próximos três dias. Genericamente, quando utilizada a distribuição de ganhos, o VaR é igual ao negativo dos ganhos no (100-X)-ésimo percentil da distribuição, como demonstrado na ilustração:

Figura 1: Distribuição de ganhos

Analogamente, quando utilizada a distribuição de perdas, o VaR é igual às perdas no X-ésimo percentil da distribuição:

Figura 2: Distribuição de perdas

Técnicas de estimação do VaR

Definimos o VaR de uma carteira sobre o horizonte T, com nível de confiança X, \(0< X <1\), por meio de:

\[ X=P(\Delta P(T)\leq VaR)=F^{T}(VaR), \]

na qual \(\Delta P(T)\), representa o ganho da posição sobre o horizonte T, e \(F^{T}(\cdot)\) a função de distribuição de ganhos acumulada de \(\Delta P(T)\).

Neste caso, podemos fazer algumas considerações: utilizando a distribuição de ganhos, o (100-X)-quantil de uma posição comprada será tipicamente um número negativo, tendo em vista que há perda no caso de uma queda no preço do ativo, ou seja, \(\Delta P(T)<0\), portanto o VaR é definido como o negativo desse quantil, e será sempre um valor positivo. Este método utiliza a cauda esquerda da distribuição de ganhos para níveis de confiança maiores que 50%.

VaR utilizando o Método Paramétrico

A estimação do VaR utilizando métodos paramétricos, abordada em Morettin (2008), pressupõe que os retornos de um portfólio seguem distribuições de probabilidades, uma dessas técnicas é conhecida como RiskMetrics, a qual supõe que a distribuição condicional dos retornos, dadas as informações passadas, é normal com média zero e variância \(\sigma _{t}^{2}\), ou seja, \[ \mathit{r}_{t}|\mathit{F}_{t-1}\sim \mathit{N}(0,\sigma_{t}^{2}). \] Neste caso, estimamos a volatilidade \(\sigma_{t}^{2}\) por meio do modelo EWMA (Média Móvel Exponencialmente Ponderada), o qual demonstra \[ \sigma^{2}_t=\lambda\sigma^{2}_{t-1}+(1-\lambda)r^{2}_{t-1}, \] onde \(0< \lambda<1\), e utilizando os log-retornos de \(k\) períodos, dados por \[ r_{t}[k]=r_{t+1}+r_{t+2}+…+r_{t+k}. \] A partir disso, \(\sigma_{t}^{2}[k]\), a volatilidade desse retorno, pode ser calculada por meio da modelagem GARCH, que mostra que \[ \sigma _{t}^{2}[k]=k\sigma _{t}^{2}(1). \]

Isto é, podemos escrever que \[ r_{t}[k]|\mathit{F}_{t-1}\sim \mathit{N}(0,k\sigma _{t}^{2}(1)). \] Portanto, sob os modelos adotados, a variância condicional dos log-retornos de \(k\) períodos é proporcional ao horizonte \(k\) e o desvio padrão condicional de \(r_{t}(k)\) é dado por \(\sqrt{k}\sigma_{t+1}\).

Por exemplo, utilizando uma posição comprada e um nível de confiança X=95, o RiskMetrics usa \(-1,65\sigma_{t+1}\) como VaR, representando o 0,05-quantil da distribuição normal com média zero e variância \(\sigma_{t}^{2}\), obtemos

\[ \mathit{-VaR=} \text{(Valor da Posição)}\times(-1,65)\times (\sigma _{t+1}), \]

representando a medida de um período. O VaR de \(k\) períodos é dado por: \[ \mathit{-VaR=} (Valor da Posição)\times(-1,65)\times\sqrt{k}\times (\sigma _{t+1}). \]

VaR utilizando o método de Variância e Covariância

Da mesma forma que a estimação anterior, o método de variância e covariância assume que a distribuição de retornos do portfólio pode ser aproximada por uma normal. Esse método pode ser definido por \[ VaR(a_{1},a_{2},…,a_{n},X)=-\mu +z_{X}\sigma, \] no qual, \(a_{n}\) representa a participação do ativo \(n\) na carteira, \(\mu\) representa a média dos retornos ponderada pela alocação de cada ativo, ou seja, o retorno esperado, e \(z_{X}\) representa o \(X\) quantil da distribuição normal conjunta, dado que são vários ativos. As quais podem ser calculadas por \[ \mu =\sum_{i=1}^{n}a_{i}m_{i} \] e \[ \sigma ^{2}=\sum_{i=1}^{n}\sum _{j=1}^{n}a_{i}a_{j}\sigma _{i,j}, \] nas quais, \(m_{i}\) representa o retorno esperado de cada ativo e \(\sigma_{i,j}\) representa a covariância entre os ativos “i” e “j”.

VaR utilizando o Método Não-Paramétrico ou Simulação Histórica

O método dos quantis empíricos, consiste em reunir dados históricos do portfólio, montando uma distribuição com os retornos através do tempo e, de acordo com a distribuição obtida, selecionar a perda a qual é maior apenas que os (100-X)% retornos históricos. Este é um método não-paramétrico, ou seja, não requer que a distribuição seja caracterizada por parâmetros, sendo útil em casos de dados resistentes à transformações e não normais, além disso, sua vantagem é a adequação às distribuições assimétricas.

VaR utilizando a Simulação de Monte Carlo

Simulações de Monte Carlo são tipicamente utilizadas em processos os quais não podem ser previstos facilmente devido à intervenção de variáveis aleatórias. Uma maneira de utilizá-lo é modelando possíveis movimentos nos preços de um ativo em softwares como o Excel.

Para realizar tal simulação deve-se primeiro estipular um modelo para a evolução dos preços dos ativos. Um dos modelos conhecidos é o Movimento Browniano Geométrico, no qual primeiro observa-se que existem dois componentes no movimento dos preços de um ativo: deriva \((\mu)\), que é um movimento direcional constante, e um componente aleatório \((\alpha)\), representando a volatilidade do ativo. Além disso, obtemos a deriva e o desvio padrão baseando-se em seu histórico, por meio de um processo chamado de calibração do modelo.

Para tanto, projeta-se a trajetória de um ativo, utilizando os dados históricos de seu preço para gerar uma série de retornos diários, usando o logaritmo natural: \[ \text{Retorno Diário}=ln(\frac{\text{Preço do dia}}{ \text {Preço do dia anterior}}). \] Em seguida, calculamos a média de retornos diários \((\bar{r})\), a variância \((\sigma^{2})\), o desvio padrão \((\sigma)\) e obtemos a deriva e a componente aleatória por meio de: \[ \mu=\bar{r}-\frac{\sigma}{2} \] e \[ \alpha=\sigma\times(\text{Valor aleatório}). \] Sendo \((\text{Valor aleatório})\sim N^{-1}(0,1)\), podemos obter o preço do dia seguinte por meio de: \[ \text{Preço do Dia Seguinte}=(\text{Preço do dia})\times e^{(\mu+\alpha)} \] Ao repetir esse cálculo quantas vezes necessário (cada repetição representando um dia), obtemos uma simulação do movimento futuro do preço. Ao gerar um número grande de simulações, pode-se encontrar a probabilidade associada ao preço que o ativo pode atingir em determinado horizonte de tempo.

A frequência dos diferentes retornos gerados por essa simulação formarão uma distribuição normal, assim como o primeiro método apresentado.

Deficiências do VaR

Em sua essência o VaR consegue responder a uma única pergunta “o quanto as perdas podem ser ruins?”. Porém, apesar do VaR proporcionar ao investidor o potencial de perda de um portfólio, ele acaba tendo muitas críticas por conta de suas deficiências.

Inicialmente, pode-se observar que o VaR é inconclusivo para perdas maiores que as especificadas pelo determinado nível de confiança, ou seja, não possuímos informações suficientes para analisar um caso extremo que supere a probabilidade estipulada. Isso é dado pelo fato dessa métrica não utilizar uma relação entre as maiores perdas, e sim escolher o valor da perda no (100-X)-quantil. Tal problema é observado no caso abaixo:

Figura 3: Distribuição de retornos assimétrica

Assim como inúmeras métricas utilizadas nas finanças, o VaR depende das componentes utilizadas na estimação, estando exposto a deficiências nesse processo, por exemplo, no caso de um ativo cuja distribuição de retornos seja assimétrica ou com maior achatamento, ao utilizar o método da variância e covariância, assume-se que a distribuição de retornos segue a normal, ocasionando em uma análise errônea. Além disso, a existência de diferentes métodos para se calcular o VaR de um portfólio faz com que para cada cálculo haja um resultado diferente para o risco.

Por fim, analisando as quatro propriedades de medidas coerentes de risco, observadas em Hull (2012):

Monotonicidade: se um portfólio produz um resultado pior que outro portfólio por qualquer razão, sua medida de risco deve ser maior;

Invariância por translação: se uma quantidade K de capital é adicionada a um portfólio, sua medida de risco deve cair K;

Homogeneidade: mudar o tamanho do portfólio por um fator \(\lambda\) enquanto mantêm-se as quantidades relativas dos ativos, a medida de risco deve ser multiplicada por \(\lambda\);

Subaditividade: a medida de risco de dois portfólios quando é feita sua fusão não deve ser maior que a soma de suas medidas de risco antes da fusão.

Observa-se que, apesar de sempre satisfazer as três primeiras propriedades, há casos nos quais o VaR não satisfaz a quarta, tornando-o uma medida não coerente de risco.

Vantagens

Em meio a essa série de desvantagens o VaR se sustenta como uma das principais ferramentas na análise de riscos. Isso pode ser explicado dado sua capacidade de admitir a comparação de valores, que são expressos em unidade monetárias. Assim sendo, permite a comparação entre ativos de diferentes áreas do mercado. Além disso, sua larga utilização permite a comparação de riscos entre vários âmbitos tais como comparação de portfólios e entre diferentes setores.

Vantagens e Desvantagens de cada método

Método Paramétrico:

Por ser um método simples, requer pouca força computacional, mas sua simplicidade custa na confiabilidade da estimativa, que é limitada pelo uso da distribuição normal, não funciona bem para ativos que tenham retornos não lineares e pode subestimar o VaR em altos níveis de confiança e o sobrestimá-lo em baixos níveis.

Método Não-Paramétrico:

O método de simulação histórica é fácil de ser implementado. Os dados referentes ao cálculo geralmente apresentam-se em domínio público e não são necessários softwares complexos para se realizar o cálculo, de maneira que planilhas de cálculo simples são eficientes. A simulação histórica também não leva em conta suposições em relação a distribuição dos retornos e elimina a necessidade de se utilizar a matriz de covariância e outros parâmetros. Apesar disso, o método supõe que a distribuição de retornos do ativo se manterá a mesma, o que pode não ser razoável, e requer bases de dados sobre o preço do ativo, as quais nem sempre apresentam o tamanho suficiente.

Método de Monte Carlo:

O método de Monte Carlo é capaz de calcular de maneira eficiente o VaR devido ao uso de simulações não-lineares e de parâmetros, à possibilidade de adequá-la a diferentes distribuições estatísticas e ao fato de não ser tão afetada por eventos extremos. Apesar disso, é o mais complicado dentre os métodos apresentados, custando mais tempo para ser desenvolvido e necessitando grande capacidade de processamento de dados.

Referências

Hull, John. 2012. Risk Management and Financial Institutions,+ Web Site. Vol. 733. John Wiley & Sons.

Morettin, Pedro Alberto. 2008. “Econometria Financeira: Um Curso Em Séries Temporais Financeiras.”

Contribuiu como co-autor deste artigo o analista do núcleo de derivativos e risco Vinícius Custódio. LinkedIn

Posted by Arthur Vier in Derivativos & Riscos, 0 comments
Simulação de Monte Carlo

Simulação de Monte Carlo

Em artigo anterior, sobre processos estocásticos, fizemos uso de uma poderosa ferramenta computacional, frequentemente utilizada em finanças para fazer simulações. Naquele artigo simulamos cinco realizações de caminhos de um processo estocástico, cada um com 500 passos a frente. Esta técnica é conhecida como Simulação de Monte Carlo – SMC e será abordada no presente artigo.

Neste artigo também iremos introduzir, no corpo do texto, os códigos em linguagem R utilizados para fazer as simulações, aumentando a didática de nossos artigos. A linguagem R é uma das preferidas para a modelagem estatística, é uma das linguagens de ciência de dados que vem ganhando muitos adeptos e, por conseguinte, é amplamente utilizada pelo mercado financeiro. E claro, é uma das preferidas aqui do CF também.

Nosso problema será simular a posição de um portfólio composto por uma posição comprada em uma ação PETR4 e uma put PETRV17. A opção de venda (put) tem preço de exercício em R$ 16,92, data de expiração em 15/10/2018 e é do tipo europeia. Ao final do pregão do dia 21/09/2018 a ação PETR4 fechou cotada a R$ 20,14 e a put em R$ 0,12. A partir desta data até o dia da expiração da opção haverão 16 dias de pregão, que será nosso horizonte de simulação.

Para melhoria da didática do texto e também para simplificação do problema, manteremos algumas variáveis necessárias para a precificação de opções constantes ao longo do período de análise, são elas:

  • Volatilidade: Será calculada a volatilidade implícita da opção da data de compra do portfólio, 21/09/2018, e será mantida constante a partir daí para fins de precificação na SMC;

  • Taxa de juros: constante no valor de 6,5 %a.a. tem termos contínuos;

  • Taxa de dividendos: suposto igual a zero.

Simulação de Monte Carlo

Para realizar uma SMC de um ativo financeiro deve-se primeiramente estabelecer uma distribuição de probabilidades que os retornos deste ativo deve seguir. Em nosso exemplo, utilizaremos a distrbuição normal para os retornos logarítimicos da ação PETR4, em linha com o clássico modelo Black & Scholes, certamente existem diversas variantes que se ajustam melhor a realidade dos mercados, entretanto este é o modelo mais conhecido e base de todos os demais.

Uma vez escolhida a distribuição dos (log) retornos, tem-se de escolher valores para a média e variância desta distribuição. A média dos retornos iremos tirar do histórico da ação, o retorno médio diário dos último ano. A variância da distribuição será encontrada a partir da volatilidade implícita da opção na data de compra do portfólio. A função utilizada para encontrar esta volatilidade retorna um valor em termos anuais, portanto, conforme visto no artigo sobre processos estocásticos devemos reescalar uma volatilidade anual para diária, e isto é obtido fazendo a divisão por (\sqrt{252}), onde temos 252 dias úteis em 1 ano.

Desta forma é possível fazer a simulação dos log-retornos da ação para cada um dos dias a frente, até a data de exercício da opção, 15/10/2018. Estes retornos são acumulados e o preço simulado da ação PETR4 em uma data intermediária é o preço de compra vezes o retorno acumulado até então.

Faremos 1.000 simulações destas, gerando caminhos possíveis de preços para a ação. É necessário fazer muitas simulações para termos uma boa ideia da distribuição dos preços na data final, não é raro serem feitas mais de mil simulações, as vezes até dez mil podem ser necessárias.

Uma vez gerados todos os caminhos simulados do preço do ativo objeto, podemos então precificar a put com base nestes preços simulados e as outras variáveis necessárias para se precificar uma opção europeia. Assim teremos também todos os caminhos de preço para a opção até sua data de exercício.

O valor de nosso portfólio, em qualquer ponto do intervalo de tempo em análise, será a soma do preço da ação com o preço da opção e será possível verificar o efeito de proteção contra quedas do preço do ativo objeto a compra da put tem no portfólio.

Cabe ressaltar aqui que o preço da opção não é simulado, não diretamente. Como a opção é um instrumento derivativo o seu preço “deriva” do preço do ativo objeto, este sim que é simulado. Uma vez que tenhamos o preço da ação, dadas nossas premissas de precificação, podemos calcular o prêmio da opção com base no modelo Black & Scholes.

Implementação em R

Conforme comentado, utilizamos aqui no CF a linguagem de programação R para realizar nossas atividades que envolvam métodos quantitativos em finanças. Abaixo irei apresentar o código utilizado, trecho a trecho e o resultado obtido ao final.

Primeiramente, no R, devemos carregar em nossa sessão de trabalho os pacotes que serão utilizados ao longo do código. Os pacotes funcionam como extensões ao R base, nestes pacotes encontramos diversas funções já programadas por outras pessoas que facilitam (e muito!) a nossa codificação.

library(tidyverse)
library(ggthemes)
library(tidyquant)
library(RQuantLib)

O pacote RQuantLib, por exemplo, possui já implementado dentro dele funções para fazer a precificação de opções europeias, sem que se tenha que implementar o modelo manualmente. Como a intenção deste artigo não é explicar o modelo Black & Scholes, vamos abstrair esta parte e simplesmente chamar uma função que nos retorna o valor da opção dadas as variáveis de entrada.

Em seguida iremos definir algumas de nossas variáveis, como o ticker da ação para buscar seus dados históricos através da função tq_get() do pacote tidyquant e calcular os retornos logarítimicos e tirar sua média, o preço e data de exercício da opção e também iremos relacionar os dias de negócio entre a data de compra e vencimento.

acao <- "PETR4.SA"
p_exer <- 16.92
d_exer <- as.Date("2018-10-15")
d_atual <- as.Date("2018-09-21")
dias <- seq(d_atual, d_exer, by = 1)
dias <- dias[isBusinessDay("Brazil", dias)]
nsims <- 1000
ndias <- length(dias) - 1
sim_nomes <- paste0("sim", 1:nsims)

# Carregar os precos historicos da acao
p_hist <- tq_get(acao, from = d_atual - years(1), to = d_atual + days(1)) %>% 
  filter(volume != 0.0)
ret_hist <- p_hist %>% 
  tq_mutate(select = adjusted,
            mutate_fun = periodReturn,
            period = "daily",
            type = "log",
            leading = FALSE,
            col_rename = "log_ret") %>% 
  na.omit()
rf <- log(1 + 0.065)
div <- 0
S0 <- last(ret_hist$adjusted)
P0 <- 0.12
mi <- 252 * mean(ret_hist$log_ret) # retorno medio em termos anuais
sigma <- EuropeanOptionImpliedVolatility("put", P0, S0, p_exer, div, rf, 
                                         (ndias + 1) / 252, 0.30)

Com o código acima obtemos basicamente todos os dados com os quais poderemos implementar a simulação de Monte Carlo. Entretanto, para realizar as simulações, necessitamos especificar mais algumas funções customizadas para nossas necessidades.

Primeiro iremos especificar uma função que retorna uma única simulação de log-retornos acumulados em uma coluna de dados, esta função é chamada de mc_sim_fun. A segunda função necessária é a função de precificação da opção europeia. Por padrão, a função do pacote RQuantLib EuropeanOption() retorna uma lista com o valor da opção, mas também todas as suas gregas. Também de forma um tanto quanto estranha, esta função retorna o valor zero na data de exercício, mesmo que a opção esteja In-The-Money, portanto é necessário modificar este comportamento.

# Funcao para realizar uma simulacao
mc_sim_fun <- function(valor_i, N, media, volat){
  med_d <- media / 252
  volat_d <- volat / sqrt(252)
  ans <- tibble(c(valor_i, rnorm(N, med_d - (volat_d^2 / 2), volat_d))) %>% 
    `colnames<-`("log_ret") %>%
    mutate(ret_ac = cumsum(log_ret)) %>% 
    select(ret_ac)

  return(ans)
}

# Funcao para precificar uma opcao europeia
eur_option <- function(type, underlying, strike, dividendYield, riskFreeRate, 
                       maturity, volatility) {
  if (maturity == 0.0) {
    ans <- switch(type,
                  put = max(strike - underlying, 0),
                  call = max(underlying - strike, 0))
    return(ans)
  }

  ans <- EuropeanOption(type = type,
                        underlying = underlying,
                        strike = strike,
                        dividendYield = dividendYield,
                        riskFreeRate = riskFreeRate,
                        maturity = maturity,
                        volatility = volatility)$value
  return(ans)
}

Uma vez com os dados obtidos e as funções auxiliares programadas, podemos passar a SMC propriamente dita. Aqui vamos estabelecer o número de simulações (1.000), calcular um data frame com os log-retornos acumulados e então calcular o preço da ação para cada dia e simulação realizados. O preço da ação na data (t) será (S_t=S_0 e^{r_t}), onde (r_t) é o log-retorno acumulado até a data (t).

Após termos todos os preços do ativo objeto, passamos a computar qual seria o preço da opção, (P_t), naquelas condições. O valor do portfólio é dado pela soma destes dois preços (lembre-se, nosso portfólio é composto por uma ação e uma opção de venda).

# Simulacao de Monte Carlo
# Valores Iniciais
inic <- rep(0, nsims) 
set.seed(12345)
ret_ac_mc <- map_dfc(inic,
                     mc_sim_fun,
                     N = ndias,
                     media = mi,
                     volat = sigma)

precos_acao <- (S0 * exp(ret_ac_mc)) %>% 
  set_names(sim_nomes) %>% 
  mutate(anos_exp = (ndias:0) / 252) %>% 
  gather(key = sims, value = St, -anos_exp)

# Evolucao do Portfolio
port_mc <- precos_acao %>% 
  mutate(Pt = map2_dbl(St, anos_exp, 
                       ~eur_option(type = "put",
                                   underlying = .x,
                                   strike = p_exer,
                                   dividendYield = div,
                                   riskFreeRate = rf,
                                   maturity = .y,
                                   volatility = sigma)),
         port_valor = Pt + St,
         data = rep(dias, nsims))
head(port_mc)
##     anos_exp sims       St         Pt port_valor       data
## 1 0.05952381 sim1 20.14000 0.10666291   20.24666 2018-09-21
## 2 0.05555556 sim1 20.56213 0.06610065   20.62823 2018-09-24
## 3 0.05158730 sim1 21.08354 0.03486500   21.11841 2018-09-25
## 4 0.04761905 sim1 21.01296 0.03001788   21.04297 2018-09-26
## 5 0.04365079 sim1 20.69410 0.03266826   20.72677 2018-09-27
## 6 0.03968254 sim1 21.14278 0.01516756   21.15794 2018-09-28

O data frame port_mc contém todas as informações da SMC de nosso portfólio. Contém as datas desde o dia da compra até a data de vencimento da opção e contém todos os caminhos de (S_t), (P_t) e do portfólio. Vamos plotar os resultados obtidos para a evolução apenas da ação, primeiramente.

brk <- round(sort(c(p_exer, seq(min(port_mc$St),
                                max(port_mc$St),
                                length.out = 5))),
             digits = 2)
ggplot(port_mc, aes(x = data, y = St)) + 
  geom_line(aes(color = sims)) +
  geom_hline(yintercept = p_exer, color = "red") +
  guides(color = FALSE) +
  labs(title = "Simulações do Valor da Ação",
       x = "data",
       y = "Valor (R$)") +
  scale_y_continuous(breaks = brk) +
  scale_x_date(date_breaks = "2 days", date_labels = "%d") +
  scale_color_viridis_d() +
  theme_economist_white()

plot of chunk gr_acao

Podemos verificar pela figura acima que a ação, pela nossa SMC, deve fechar na maioria dos caminhos simulados acima do preço de exercício da put (linha vermelha). Entretanto existe uma menor probabilidade de, até a data de vencimento, o preço da ação cair abaixo do strike desta opção.

Podemos inferir esta probabilidade através do número de caminhos que terminaram em preço da ação abaixo do valor de referência. O custo de proteção contra este risco é o prêmio por nós ao comprarmos a put. O código para esta inferência está abaixo.

p_baixo <- port_mc %>% 
  filter(data == d_exer) %>% 
  summarise(num_baixo = sum(St < p_exer)) %>% 
  as.double()
prob <- p_baixo / nsims

Este cálculo nos mostra que em 82 caminhos simulados do preço de PETR4, este terminou abaixo do preço de exercío da opção PETRV17, ou seja, uma probabilidade de 8.2%.

Para nos precavermos desta possível queda de preço e garantir um valor mínimo de nosso portfólio até a data de 15/10/2018, podemos comprar uma opção de venda, com preço de exercício no valor que desejamos e então o portfólio passa a ser composto pela ação e também pela opção. Caso na data de vencimento o preço da ação seja menor que o preço de exercício da put, esta opção estará ITM e pode ser exercida pelo valor da diferença entre os preços, ou seja, nos garantindo que nosso portfólio estará avaliado em R$ 16,92.

Esta dinâmica pode ser verificada pela figura abaixo, que agora apresenta o valor do portfólio completo, ação mais opção. Verificamos que, de fato, no dia 15/10/2018 nosso investimento não estará em situação pior que o preço garantido pela compra da put.

brk <- round(sort(c(p_exer, seq(min(port_mc$port_valor),
                                max(port_mc$port_valor),
                                length.out = 5)[-1])),
             digits = 2)
ggplot(port_mc, aes(x = data, y = port_valor)) + 
  geom_line(aes(color = sims)) +
  geom_hline(yintercept = p_exer, color = "red") +
  guides(color = FALSE) +
  labs(title = "Simulações do Valor do Portfolio",
       x = "data",
       y = "Valor (R$)") +
  scale_y_continuous(breaks = brk) +
  scale_x_date(date_breaks = "2 days", date_labels = "%d") +
  scale_color_viridis_d() +
  theme_economist_white()

plot of chunk gr_port

Ou seja, ao custo de 0.6% do preço da ação, compramos uma proteção contra uma queda de preços com probabilidade de 8.2%.

Esta é apenas uma (simples) aplicação das inúmeras possíveis que a Simulação de Monte Carlo possui no mundo das finanças. A SMC é uma poderosa ferramenta para avaliação e controle de risco de grandes portfólios, com centenas ou milhares de ativos, onde nem sempre consegue-se aferir medidas de retorno esperado ou de risco de mercado de forma analítica.

Posted by Rafael F. Bressan in Derivativos & Riscos, 0 comments