Introdução

Questões como de que modo o risco é medido, como ele é recompensado e quanto risco deve-se assumir são fundamentais em cada decisão de investimento, desde a alocação do recurso até a sua avaliação. Essa é uma area em que há muito debate entre teóricos e práticos sobre qual é o modelo correto a ser utilizado, portanto um bom modelo de risco e retorno deve fazer o seguinte:

  • Oferecer uma medida que seja universal e aplicável a todos os investimentos financeiros ou reais.

  • Especificar que tipos de risco são recompensados e que tipos não o são – oferecer um raciocínio diferenciá-los.

  • Padronizar medidas de risco, permitindo análise e comparação.

  • Traduzir a medida de risco em retorno esperado. Não basta o modelo dizer que investimentos de risco mais elevados devem render retornos esperados mais elevados, sem fornecer uma estimativa específica de prêmio de risco.

  • Principalmente, funcionar!

Risco é usualmente definido como uma medida da variabilidade de possíveis retornos associados a um determinado investimento. O risco, juntamente com o retorno, é uma importante consideração nas decisões. O indivíduo, ou a empresa, deve comparar o retorno esperado de um determinado investimento com o risco associado a ele. Níveis mais elevados de retorno são normalmente necessários para compensar o aumento dos níveis de risco. Em outras palavras, quanto maior o risco empreendido, maior o retorno – e, por outro lado, menor o risco, mais modesto é o retorno.

O equilíbrio entre o risco e o retorno também é conhecido como o espectro risco-retorno. Existem várias classes de possíveis investimentos, cada uma com suas próprias posições no espectro global risco-retorno. A existência de risco aumenta o custo do investimento. Por exemplo, quanto mais arriscado o investimento, mais tempo e esforço são geralmente necessários para se obter informações sobre ele e monitorar seu progresso. Além disso, a importância de uma perda de valor normalmente é maior do que a importância de um ganho deste mesmo valor (assimetria da curva de utilidade), de modo que um investimento mais arriscado atrairá um prêmio de risco maior, mesmo que o retorno previsto seja o mesmo que sobre um investimento menos arriscado. O risco é, portanto, algo que deve ser compensado, e quanto mais risco mais será necessária esta compensação.

Quando se realiza um investimento, no mínimo se deseja recuperar o suficiente para compensar o aumento do custo do valor investido devido à inflação. Assim, a inflação é um insumo fundamental no custo de capital de uma empresa. No entanto, uma vez que as taxas de juros são definidas pelo mercado, acontece frequentemente que elas são insuficientes para compensar a inflação.

A aversão ao risco, mencionada anteriormente, também desempenha um papel importante na determinação do retorno necessário sobre um investimento. A aversão ao risco é um conceito baseado no comportamento de empresas e investidores, quando expostos à incerteza. A aversão ao risco é a relutância em se aceitar um negócio com um pagamento esperado incerto em vez de outro com um pagamento menos incerto, mas possivelmente menor. Por exemplo, um investidor avesso ao risco pode optar por colocar seu dinheiro em uma aplicação bancária com uma taxa de juros baixa, mas garantida, em vez de em uma ação que pode ter altos retornos esperados, mas também envolve uma chance de perder valor. A aversão ao risco pode ser considerada como tendo três níveis:

  1. Aversão ao risco.
  2. Neutralidade em relação ao risco.
  3. Propensão ao risco.

Em resumo, o objetivo na análise estatística dos dados financeiros é entender a distribuição (condicional e dependente do tempo) dos retornos. Os investidores normalmente focam em alguns indicadores, procurando estimar (ou adivinhar) essa distribuição (veremos adiante), ou seja, o risco associado a perdas substanciais.

Risco

As medidas de risco mais utilizadas no mercado são estatísticas baseadas em dados históricos de preço e retorno de investimento e volatilidade, e também são componentes importantes na teoria moderna da carteira (MPT).

Importante - Todas as medidas de risco “calculáveis” se baseiam nos dados históricos, isto é, no passado. Não há qualquer garantia que o comportamento do ativo financeiro repetirá o mesmo comportamento no futuro. O pressuposto teórico de qualquer modelo de previsão é que a série temporal de dados seja estacionária. Uma série temporal é estacionária quando suas características estatísticas (média, variância, autocorrelação, etc.) são invariantes no tempo. Isso significa que a série se desenvolve aleatoriamente no tempo, em torno de uma média e uma variância constantes, refletindo alguma forma de equilíbrio estatístico estável (i.e. as leis de probabilidade que atuam no processo não mudam com o tempo).

Muitas séries são inerentemente não-estacionárias e exibem tendências, ciclos, padrões sazonais e outros comportamentos não-estacionários. Muitos métodos de previsão (forecasting) empregam transformações algébricas para “estacionarizar” uma série e fazer previsões nesta série mais bem comportada, para depois inverter as transformações e obter as previsões para a série original. Transformações comuns são: tomar diferenças sucessivamente, deflacionar, aplicar log (p/estabilizar variâncias), fazer ajustes sazonais, de-trending (isto é, descobrir uma tendência e subtraí-la), entre outras.

Um evento com 25 desvios-padrão

Em agosto de 2007, David Viniar, o CFO do banco BNP Paribas, logo após suspender os resgates de três de seus fundos, declarou ao Financial Times que “estavam observando desvios superiores a 25 desvios-padrão há vários dias seguidos”.

Um conhecimento básico de estatística nos permite traduzir literalmente suas palavras como a constatação da ocorrência de algo com probabilidade ainda menor do que a concentração de princípios ativos no modelo terapêutico homeopático, proposto por Samuel Hahnemann para a maioria dos casos, a escala 30C, correspondente a uma diluição de \(\small 10^{-60}\): em média, isso exigiria dar 2 bilhões de doses por segundo a seis bilhões de pessoas por 4 bilhões de anos para entregar uma única molécula do material original a qualquer paciente. Um outro evento com 25 desvios-padrão seria encontrar uma pessoa com mais de 3,5 metros de altura.

O significado disso? O que Viniar estava dizendo, não necessariamente de propósito, é que os movimentos de preços de ativos financeiros foram muito maiores e mais erráticos do que os seus analistas de risco tinham experimentado ou sequer acreditavam ser possível (o modelo de gestão de risco que utilizavam é o VaR, que veremos a seguir).

Viniar deixou de se fazer uma pergunta básica: o que está acontecendo?.

Principais medidas de risco

Há onze principais medidas de risco utilizadas no mercado, e cada medida fornece uma maneira única de avaliar o risco presente em investimentos que estão em estudo. As medidas de risco podem ser usadas individualmente ou em conjunto para realizar uma avaliação de risco.

Alfa

Alpha (\(\alpha\)) mede o risco em relação ao mercado ou a um índice de referência selecionado e é bastante utilizado para avaliar o desempenho de fundos mútuos ou investimentos similares. Como esses fundos incluem várias taxas normalmente expressas em termos percentuais, o fundo deve que manter um \(\small \alpha\) maior do que suas taxas, a fim de proporcionar ganhos positivos em comparação com a referência. Historicamente, a grande maioria dos fundos tradicionais têm \(\alpha\) negativo, o que levou a uma fuga de capital para fundos de índice e fundos de hedge não tradicionais.

Se utilizarmos o CAPM (capital asset pricing model) para estimar o desempenho teórico da carteira, os retornos da carteira são comparados com o retorno do mercado de referência, e a medida passa a ser conhecida como \(\small \alpha\) de Jensen.

O cálculo do alfa pode ser feito de acordo com um modelo conhecido como Single Index Model, por meio da regressão linear do excesso de retorno do ativo ou da carteira e a diferença do retorno do mercado e a renda fixa, isto é, o parâmetro é o intercepto da Security Characteristic line (SCL):

\[R_{i,t} - R_f = \alpha_i \; + \; \beta_i \, (R_{M,t} \, - \, R_f) \; + \; \epsilon_{i,t} \] onde

  • \(R_i\) é o retorno da carteira,
  • \(R_M\) é o retorno do mercado,
  • \(R_f\) é a renda fixa (livre de risco), e
  • \(\beta_{i,M}\) é o beta da carteira (ver abaixo).

Se explicitarmos o \(\small \alpha\) estimado por regressão na equação, temos

\[\alpha = (R_i - R_f) - \beta_i \, (R_M \, - \, R_f). \]

Podemos utilizar uma simples regra:

  • \(\alpha_i < 0\): o investimento rendeu pouco para o risco assumido (medido pelo \(\beta\))
  • \(\alpha_i = 0\): o retorno foi adequado para o risco assumido
  • \(\alpha_i > 0\): o retorno foi superior àquele esperado para o risco.

Por exemplo, se o IBOVESPA for considerado o benchmark para um determinado fundo, a atividade do fundo seria comparada àquela experimentada por este índice. Se o fundo supera o IBOVESPA, diz-se que tem um \(\alpha\) positivo. Se o fundo ficar abaixo do desempenho do benchmark, considera-se ter um \(\alpha\) negativo.

Beta

O parâmetro Beta é uma medida utilizada para determinar a sensibilidade de retorno de um investimento em relação ao risco geral do mercado. Beta, ou \(\beta\), é o coeficiente da regressão linear entre os retornos de um determinado ativo e algum benchmark com o qual o referido ativo está sendo comparado. Esse benchmark é, geralmente, o mercado financeiro e é frequentemente estimado através do uso de índices representativos, como o IBOVESPA. O \(\beta\) também é referido como elasticidade financeira ou volatilidade relativa, e pode ser considerado como uma medida da sensibilidade dos retornos do ativo em relação ao retorno ao mercado, o risco não diversificável, o risco sistemático ou o risco de mercado. Investimentos com \(\beta\) mais altos tendem a ser mais voláteis e, portanto, mais arriscados, mas fornecem o potencial para maiores retornos. Investimentos com menor \(\beta\) representam menos risco, mas geralmente oferecem retornos mais baixos.

Como vimos, o \(\beta\) mede a volatilidade ou o risco sistêmico de um investimento em comparação com o mercado ou o índice de referência selecionado. Um \(\beta = 1\) indica que o investimento se move em conjunto com o índice. Betas menores que 1 são considerados menos voláteis do que o benchmark, enquanto aqueles maiores do que 1 são considerados mais voláteis do que o benchmark.

O \(\beta\) é o coeficiente da variável independente (retorno do mercado) no modelo de regressão linear (lm() no R) quando a variável dependente é o retorno do ativo. Pode ser calculado diretamente com a seguinte fórmula:

\[\beta_{ativo} = \frac {cov_{ativo,\;mercado}}{\sigma_{mercado}^2}.\]

Se ret.ativo é o vetor de retornos de um ativo e ret.indice é o vetor contendo os retornos do índice de referência, então a expressão

beta <- cov(ret.ativo, ret.indice) / var(ret.indice)

calcula o Beta do ativo.

Coeficiente de determinação

O coeficiente de determinação, ou \(R^2\), indica a porcentagem do movimento de um investimento atribuível aos movimentos em seu índice de referência, a partir de uma regressão linear entre os retornos obtidos pelo investimento e os retornos do índice.

Se ret.ativo é a variável com os retornos de um ativo e ret.indice contém os retornos do índice de referência em um data frame retornos, então as expressões

modelo <- lm(ret.ativo ~ ret.indice, data = retornos)
summary(modelo$r.squared)

extrai o valor de \(R^2\) do modelo de regressão.

Desvio-padrão

O desvio-padrão, ou \(\sigma\) é um medida usual da dispersão de dados em relação ao valor médio do conjunto de dados e fornece uma estimativa da volatilidade de um investimento. No que diz respeito aos investimentos, o desvio-padrão mede o quanto o retorno sobre o investimento está se desviando dos retornos normais ou médios esperados.

Índice de Sharpe

O índice de Sharpe mede o desempenho de um investimento ajustado pelos riscos inerentes. Isso é feito removendo-se a taxa de retorno de um investimento livre de risco da taxa de retorno média estimada do investimento. Este valor é dividido pelo desvio-padrão estimado do investimento. A fórmula do índice de Sharpe é a seguinte:

\[Shape_{ativo}=\frac {E \left[ r_{ativo}-R_f\right]} {\sigma_{ativo} }\]

Por exemplo, pode-se utilizar a taxa SELIC ou o CDI como um benchmark para títulos de renda fixa, enquanto o Índice IBOVESPA funciona como um benchmark para investimentos em ações.

A função SharpeRatio() do pacote PerformanceAnalytics (entre várias outras) calcula o índice de Sharpe de um conjunto de dados.

Índice de Treynor

O índice de Treynor é uma métrica de desempenho para determinar quanto retorno adicional foi gerado para cada unidade de risco assumida por uma carteira. O retorno adicional refere-se ao retorno obtido acima do retorno que poderia ter sido obtido em um investimento livre de risco. A diferença entre o índice de Treynor e o de Sharpe é que risco em Treynor é calculado como o risco sistemático medido pelo \(\beta\) da carteira de investimentos. Sua fórmula é a seguinte:

\[Treynor_{ativo}=\frac { E \left[ r_{ativo}-R_f \right]}{\beta_{ativo}}\]

A função TreynorRatio() do pacote PerformanceAnalytics calcula o índice de Treynor de um conjunto de dados.

Semi-variância (downrisk)

A semivariância é uma estatística que pode ser utilizadas para estimar o risco potencial de maus resultados de uma carteira de investimentos. A semivariância é calculada medindo a dispersão de todas as observações que ficam abaixo da média ou de um determinado valor-alvo de um conjunto de retornos A semivariância é uma média dos desvios quadráticos dos valores inferiores à média (ou ao valor-alvo).

A semivariância é semelhante à variância, mas só considera observações abaixo da média. Enquanto o desvio-padrão e a variância fornecem medidas de volatilidade, a semivariância considera apenas as flutuações negativas de um ativo. A semivariância pode ser usada para calcular a perda média que uma carteira poderia incorrer, pois neutraliza todos os valores acima da média, ou acima do retorno-alvo de um investidor. Para investidores avessos ao risco, determinar as alocações ideais da carteira minimizando a semivariância poderia reduzir a probabilidade de uma grande redução no valor da carteira.

A fórmula para o cálculo da semivariância é a seguinte:

\[ semivar = \frac 1 n \; \sum_1 ^n min[(r_i- alvo),0]^2\] A função DownsideDeviation() do pacote PerformanceAnalytics calcula a semivariência de um conjunto de dados, entre outras medidas de risco.

Índice de Sortino

O índice de Sortino é uma variação do índice de Sharpe que diferencia a volatilidade “prejudicial” da volatilidade total global utilizando o desvio-padrão do ativo de retornos negativos da carteira — desvio negativo — em vez do desvio padrão total dos retornos da carteira. O índice de Sortino subtrai do retorno esperado de um ativo ou de uma carteira a taxa livre de risco e, em seguida, divide esse valor pelo desvio negativo do ativo.

Como o índice de Sortino se concentra apenas nos desvios negativos dos retornos de uma carteira em relação à média, acredita-se que dê uma melhor visão do desempenho ajustado ao risco de uma carteira, uma vez que a volatilidade positiva não deixa de ser um benefício.

A fórmula do índice de Sharpe é a seguinte:

\[Sortino = \frac {E \left[ r_{ativo}-R_f\right]} {\sigma_d }\] A função SortinoRatio() (entre outras) do pacote PerformanceAnalytics calcula o índice de Sortino de um conjunto de dados.

Valor no Risco (VaR)

Valor no risco (VaR) é uma estatística que mede e quantifica o nível de risco financeiro dentro de uma empresa, carteira ou posição em um período específico, isto é, o VaR mede o quantil da distribuição de ganhos e perdas projetada para um determinado horizonte temporal. Essa métrica é mais comumente utilizada por bancos de investimento e comerciais para determinar a extensão e a taxa de ocorrência de potenciais perdas em suas carteiras institucionais. Os gestores de risco usam o VaR para medir e controlar o nível de exposição ao risco. Pode ser aplicado em posições específicas ou carteiras inteiras e para medir a exposição ao risco em toda a empresa.

O VaR tornou-se uma medida-chave do risco de mercado desde que o Comitê de Basileia declarou que os bancos deveriam estar aptos a cobrir as perdas em suas carteiras de renda variável em um horizonte de dez dias, 99% do tempo.

A modelagem VaR determina o potencial de perda e a probabilidade de ocorrência para a perda definida. Mede-se o VaR avaliando-se a quantidade de perda potencial, a probabilidade de ocorrência para a quantidade de perdas e o prazo.

Importante - Como todas as medidas baseadas em valores históricos, o VaR é consideravelmente conservador e se mostra incapaz de auxiliar na previsão de choques de qualquer espécie, como a crise de 2008 e a COVID-19, como vimos no caso do banco Paribas. O VaR deve ser visto como um procedimento necessário, mas não suficiente, para o controle do risco. O VaR não deve ser utilizado como um modelo de gestão de riscos independente, e deve ser considerado um procedimento controlado e limitado.

Por exemplo, uma empresa financeira pode determinar que um ativo tenha um VaR de um mês de 2% com o valor de 3%, representando uma chance de 3% do ativo diminuir em valor em 2% durante o período de um mês.

A função Var() do pacote PerformanceAnalytics calcula o Var de um conjunto de dados.

Valor no Risco Condicional (CVaR)

Apesar de o VaR ser uma medida aceita e largamente utilizada no mundo corporativo (na gestão de riscos), ele sofre várias críticas. Uma delas é que o VaR não fornece estimativa do tamanho da perda esperada uma vez que ela tenha excedido o valor crítico, ou seja, não traz nenhuma informação sobre as perdas maiores que o valor encontrado para probabilidade estabelecida, que muitas vezes podem ser catastróficas. Por exemplo, uma carteira em que o VaR de 95% de confiança é \(\small \$100\) significa que há apenas 5% de chance da carteira perder mais de \(\small \$100\), porém não há indicação de “quão” grande pode ser esta perda.

O Valor no Risco Condicional (CVaR), também conhecido como Perda Média Esperada ou Expected Shortfall (ES), é uma medida que indica a perda média que excede o VaR, ou seja, quantifica “quão” grande é, na média, a perda (risco) a que se está sujeito em uma determinada carteira, fornecendo dessa forma informações sobre a distribuição da cauda. Possui a propriedade de detectar a presença de eventos catastróficos na distribuição avaliada. O CVaR é considerado uma medida coerente de risco e é mais pessimista que o VaR. É utilizado para medir perdas, e pode ser definido como o limite superior para a máxima perda permitida em problemas de portfólio. Portanto, enquanto o VaR responde a pergunta “Qual a perda mínima incorrida pela carteira nos \(\small \alpha\)% piores cenários?”, o CVar responde a questão “Qual a perda média incorrida pela carteira nos \(\small \alpha \%\) piores cenários?”. Um grande benefício do uso do CVaR em relação ao VaR está na detecção das perdas máximas aceitáveis. Matematicamente, pode-se definir o CVaR como o valor esperado condicional de perdas da carteira superiores ao VaR.

A figura mostra a diferença entre o Var e o CVar.

VaR e CVar

VaR e CVar

A função ETL() do pacote PerformanceAnalytics calcula o CVar de um conjunto de dados.

Máximo drawdown (rebaixamento)

O máximo drawdown é uma medida, usualmente expressa em termos percentuais, de um ativo financeiro ou de uma carteira de investimentos. Ele indica a queda máxima (não realizada, o que é importante) que um ativo ou carteira sofre em um determinado período de tempo, ou em toda a sua história.

A função DrawdownPeak() do pacote PerformanceAnalytics calcula o drawdown para cada retorno, isto é, o seu rebaixamento desde o pico anterior. A função Drawdowns() do pacote PerformanceAnalytics encontra o período inicial, o período final e a quantidade e duração do drawdown de uma série de dados.

A figura mostra exemplos de drawdown.

Drawdown

Drawdown

O pacote tseries também tem uma função drawdown() que calcula o máximo drawdown (ou máxima perda) de uma séries temporal univariada (ou um vetor).

Vejamos um exemplo:

library(tseries)

data(EuStockMarkets) # Preços diários de fechamento dos principais índices acionários europeus, 1991-1998

dax <- log(EuStockMarkets[,"DAX"])
mdd <- maxdrawdown(dax)
mdd
## $maxdrawdown
## [1] 0.256471
## 
## $from
## [1] 236
## 
## $to
## [1] 331

A data inicial maior queda foi de 0.256471, iniciando em 1992.4.

plot(dax,
     main = 'Índice DAX - 1991-1998',
     xlab = 'Data',
     ylab = 'DAX')

abline(v = time(dax)[mdd$from], col = 'red')
abline(v = time(dax)[mdd$to], col = 'red')

Apenas o período 1992-1993:

plot(window(dax, start = 1992, end = 1993), # apenas o período 1992-1993
     main = 'Índice DAX - 1992-1993',
     xlab = 'Data',
     ylab = 'DAX')
segments(time(dax)[mdd$from], 
         dax[mdd$from],
         time(dax)[mdd$to], 
         dax[mdd$from], 
         col="red",
         lwd = 2)

segments(time(dax)[mdd$from], 
         dax[mdd$to],
         time(dax)[mdd$to], 
         dax[mdd$to], 
         col="red",
         lwd = 2) 

meio <- time(dax)[(mdd$from + mdd$to)/2]

arrows(meio, dax[mdd$from], 
       meio, dax[mdd$to], 
       col = "red", 
       length = 0.16,
       lwd = 2)

   

Algumas funções auxiliares

Vamos apresentar algumas funções auxiliares que serão úteis durante o desenvolvimento do estudo.

arit.ret <- function(precos) {
####  Calcula o retorno aritmético de uma série de preços ####  
  
####  O primeiro vetor contém todos os valores, exceto o primeiro
####  O segundo vetor contém todos os valores, exceto o último
  
    c(NA, precos[2:length(precos)]/ precos[1:length(precos)-1] - 1)
}

log.ret <- function(precos) {
####  Calcula o retorno logarítimico de uma série de precos #### 
    c(NA, diff(log(precos)))
}

taxa_real <- function(taxa_nominal = 0.1, inflacao = 0.1) {
#### calcula a taxa real dada a taxa nominal e a inflação do período - equação de Fisher
    (1 + taxa_nominal) / (1 + inflacao) - 1
}

 

Retornos

Grande parte dos estudos envolvendo o comportamento de séries temporais financeiras analisam retornos ao invés de preços. Dentre as principais razões, destaca-se o fato de séries de retornos serem mais fáceis de trabalhar do que as séries de preços, porque sua forma possui propriedades estatísticas mais atrativas. Algumas definições fundamentais relativas ao cálculo dos retornos serão abordadas a seguir.

Importante: A utilização de preços ajustados de ativos financeiros, principalmente ações, é fundamental para a realização correta das análises. A maioria dos pacotes que utilizamos para obter dados financeiros inclui a informação de preços ajustados, mas, caso seja necessário efetuar as transformações necessárias aos dados brutos de preço, consulte este link.

Retorno Simples (aritmético)

É o mais simples de ser calculado e para um único período pode ser obtido da seguinte maneira:

\[R_t=\frac {P_t -P_ {t-1}} {P_{t-1}} = \frac {P_t} {P_{t-1}} - 1\] onde:

  • \(R_t\) é o retorno no período t,
  • \(P_t\) é o preço no período t.

Como vimos, é bem fácil calcular os retornos aritméticos. Podemos fazê-lo com apenas uma linha de código, mas utilizaremos a função definida acima.

Vamos utilizar os preços ajustados das ações da Petrobras para um exemplo.

inicio <- Sys.Date() - 365 # há um ano
ontem <- Sys.Date() - 1    # ontem

pbr <- quantmod::getSymbols("PBR",               # Símbolo da Petrobras no Yahoo Finance
                            src = "yahoo",       # "source" Yahoo
                            from = inicio, 
                            to = ontem, 
                            auto.assign = FALSE) # permite nomear o dataset com o nome que quisermos. se = TRUE,
                                                 # o nome será automaticamente o símbolo que estamos buscando, 
                                                 # ou seja, o primeiro argumento

pbr$ret_arit <- arit.ret(as.numeric(pbr$PBR.Adjusted))

head(pbr$ret_arit)
##                ret_arit
## 2021-11-29           NA
## 2021-11-30 -0.012951183
## 2021-12-01 -0.002811534
## 2021-12-02  0.105947066
## 2021-12-03  0.015281625
## 2021-12-06  0.011288785

Para múltiplos períodos, tem-se:

\[ \begin{aligned} R_{t,k} &= \frac {P_t} {P_{t-k}} - 1 \\ R_{t,k} + 1 &= \frac {P_t} {P_{t-k}} = \frac {P_t} {P_{t-1}} \times \frac {P_{t-1}} {P_{t-2}} \times \ldots \times \frac {P_{t-(k-1)}} {P_{t-k}} \\ &= \frac {P_t} {P_{t-k}} = (1+R_t) \times (1+R_{t-1}) \times \ldots \times (1+R_{t-(k-1)} \\ &= \left[ \prod_{i=0}^{k-1} (1+R_{t-i}) \right] - 1 \end{aligned} \]

Retorno Logarítmico

É o logaritmo natural da razão entre preços.

\[r_t = ln(1 + R_t) = ln \frac {P_t}{P_{t-1}} = ln \, P_t - ln \, P_{t-1} = p_t - p_{t-1}\] Uma das grandes vantagens dos retornos logarítmicos é que, para múltiplos períodos de tempo, o retorno é composto pela simples soma dos retornos em cada período de tempo:

\[ \begin{aligned} r_{t,k} &= ln(1+R_{t,k}) = ln \left[ (1+R_t) \times (1+R_{t-1}) \times \ldots \times (1+R_{t-(k-1)}) \right] \\ &= ln(1+R_t) + ln(1+R_{t-1}) + \ldots + ln(1+R_{t-(k-1)}) \\ &= r_t + r_{t-1} + \ldots + r_{t-(k-1)} \\ &= \sum_{i=0}^{k-1} r_{t-i} \end{aligned} \] Quando os retornos são pequenos, o valor do retorno logaritmico se aproxima muito do retorno aritmético, ou seja, quando é satisfeita esta condição, pode-se usar as séries dos retornos logarítmicos dos ativos no lugar do retorno aritmético, isto é \(r_t \approx R_t\).

Esse fato ocorre pela expansão de Taylor da expressão
\[r_t = ln(1+R_t) = \sum_{k=1}^{n} \frac {(-1)^{k+1}}{k} \; R_t^k = R_t-\frac 1 2 R_t^2\; + \frac 1 3 R_t^3 - \ldots \]

Na ampla maioria dos casos, os retornos logarítmicos podem e são empregados. Algumas incompatibilidades podem aparecer quando existem mudanças de sinal nos valores, dado que o domínio da função logarítmica é \(]0, \infty[\). Para estes casos, os retornos aritméticos são a melhor solução.

\[r_t = ln(P_t) - ln(P_{t-1}) = ln\left( \frac {P_t}{P_{t-1}} \right) = ln\left( \frac {P_t - P_{t-1}+P_{t-1}}{P_{t-1}} \right) = ln(1+R_t) \approx R_t\]

Mas qual é a razão para se trabalhar com retornos logarítimicos?

  • Experiência: as séries de preços normalmente são não-estacionárias e assimétricas à direita, isto é, têm picos positivos maiores do que os de picos negativos. Assim, a experiência a partir da análise de séries temporais indica que se deve transformar os dados por meio de logaritmos e tomar diferenças de primeira ordem (lag 1). O que obtemos com este procedimento é justamente \(\small r_t\).

  • Perda Limitada: para muitos ativos financeiros, o máximo que se pode perder é a quantidade que foi colocado neles, ou seja, se alguém possui uma ação que é vale \(\$ 50\), o máximo que se pode perder é \(\$ 50\). Nesse caso, o retorno simples \(\small R_{min} = -100\%\). Por outro lado o retorno simples máximo possível é \(\small R_{max} = +\infty\). Esta assimetria não existe com retornos logarítimicos: uma perda completa rende \(\small r_{min} = -\infty\) , e o máximo é \(\small r_{max} = +\infty\).

  • Composição: como vimos, para se obter o retorno simples de um ativo ao longo de vários períodos é necessário um cálculo bastante complicado e não intuitivo. Quando se emprega retornos logarítimicos, o cálculo é muito mais simples, apenas uma soma.

Taxa de retorno contínua (instantânea)

Uma taxa de retorno discreta composta mede a taxa de mudanças no valor de um ativo ao longo de um período sob o pressuposto de que o número de períodos é contavel (1, 2, …). A maioria dos instrumentos de crédito e de investimento são compostos em períodos discretos e uniformemente espaçados, como anual ou mensalmente. Por exemplo, suponha que o retorno do período de retenção em uma ação ao longo de um ano é de 20%. Se a taxa de retorno for composta trimestralmente, a taxa trimestral composta de retorno sobre as ações é \(\small (1 + 0,2)^{1/4} - 1 = 4,66\%\).

A taxa de retorno continuamente composta mede a taxa de variação no valor de um ativo associado a um período de retenção sob a suposição de composição contínua. É o logaritmo natural de 1 mais o retorno do período de retenção, ou equivalentemente, o logaritmo natural do preço final sobre o preço inicial.

Se considerarmos que \(\small r_t = ln \left( \frac {P_t} {P_{t-1}} \right)\), podemos considerar \(\small r_t\) como a taxa de retorno instantânea, e calcular o preço \(\small P_t\) a partir de \(\small P_{t-1}\) a partir da seguinte fórmula:

\[P_t = P_{t-1} \times e^{r_t}\]

Exemplo 1

\[P_0 = 30, P_1 = \$34,50 \implies R_{0,1} = \frac{\$34,50} {\$30,00} - 1 = 15\%,\]

enquanto que

\[r_{0,1} = ln \left( \frac{\$34,50} {\$30,00} \right) = 13,9762\%.\]

O retorno continuamente composto é menor do que o retorno discreto do período associado.

Exemplo 2

Suponha que uma determinada ação tenha um preço de \(\small \$200\) no início de um período e um preço de \(\small \$250\) no final desse período. Ou seja, \(\small P_0 = 200\), e \(\small P_1 = 250\).

Assim, R, o retorno do período, é:

\[R = [P_1/ P_0] - 1 = (250/200) - 1 = 25\%\]

Utilizando a fórmula para a taxa de retorno continuamente composta dá:

\[ln(1+R) = ln(P_1/P_0) = ln(1,25) = 22,3\%\]

Para ver por que o retorno instantâneo é preferível, considere o seguinte:

Suponha agora que as ações caiam de \(\small \$250\) para \(\small \$200\). Então, \(\small R = (200/250) - 1 = -20 \%\).

Efetivamente, a ação voltou ao seu preço original, mas combinando as duas taxas de retorno e a média delas dá \(\small [(0,25 + (-0,2)] / 2 = 0,05/2 = 2,5\%\), o que é enganoso, pois na verdade as ações voltaram ao seu preço original, e portanto o retorno é efetivamente 0%.

No entanto, \(\small ln(1+R) = ln[(1 + (-0,2)] = ln(0,8) = -22,3\%\), que é exatamente o negativo do retorno original. A média dessas duas taxas dá \(\small [(0,223 + (-0,223)]/2 = 0/2 = 0\%\), que é a verdadeira taxa de retorno para o período.

Assim, um retorno continuamente composto dá um relato mais preciso da imagem real da taxa de retorno ao longo de um período.

Exemplo 3

Calculando os retornos logarítimicos e aritméticos com os preços ajustados da ação da Petrobras entre 29-11-2021 e 25-11-2022, temos:

p0 <- as.numeric(pbr$PBR.Adjusted[start(pbr)])
p1 <- as.numeric(pbr$PBR.Adjusted[end(pbr)])
retorno.log <- log(p1/p0)
retorno.arit <- (p1/p0) - 1


glue::glue('Retorno logarítimico = {format(retorno.log * 100, digits = 4)}%')
## Retorno logarítimico = 55.15%
glue::glue('Retorno aritmético   = {format(retorno.arit * 100, digits = 4)}%')
## Retorno aritmético   = 73.59%

A diferença não é pequena. À medida que os valores absolutos aumentam, a aproximação obtida pela expansão de Taylor se torna mais imprecisa. Podemos visualizar essas diferenças no seguinte gráfico:

retseq <- seq(-.50, .50, length = 200)
plot(retseq, log(retseq + 1), 
     type = "l",
     axes = FALSE, 
     col = "blue", 
     lwd = 2, 
     xlab = "Retorno Simples",
     ylab = "Retorno Logarítimico")
axis(1, at = c(-.5, 0, .5), 
     label = c("-60%", "0%", "60%"))
axis(2, at = c(-.5, 0, .5),
     label=c("-60%", "0%", "60%"))
box()
abline(0, 1, lty = 2, col = "red")

Valor esperado do retorno e o risco medido pela variância

Investidores racionais, imagina-se, não investem em ativos de risco que dão baixos retornos.

A maneira usual é utilizar os dados históricos. Assumindo que o retorno esperado é a taxa média de retorno em uma ação e que o risco é o desvio padrão dos mesmos retornos, podemos verificar se há uma relação positiva entre estas variáveis plotando os dados em um gráfico de dispersão.

Em R isso é bastante fácil. Como exemplo, uytilizaremos os pacotes yfR, GetBCBData e tidyverse.

Primeiro, vamos reunir e organizar todos os dados. Buscamos as ações do Ibovespa e o CDI, que consideraremos a taxa comum de livre risco. Iremos:

  • Importar os dados,
  • Organizá-los com a mesma estrutura (mesmas colunas) e
  • Juntar os dados em um data frame.

Dados das ações e do mercado (IBOVESPA)

Utilizaremos a função yfR::yf_get() para obter as ações que compõem o índice da BOVESPA e os dados de preços.

Obtendo os dados.

library(yfR)
library(tidyverse)

inicio <- '2010-01-01' 
fim <- as.character(Sys.Date() - 1) # Ontem - Sys.Date() é o término padrão
ibov.tickers <- c('^BVSP', paste0(yf_index_composition("IBOV")[['ticker']], '.SA'))

df.precos <- yf_get(ibov.tickers,
                    first_date = inicio,
                    last_date = fim, 
                    freq_data = "yearly",
                    be_quiet = TRUE
)

Calcula os retornos médios anuais da ações e do índice.

tab.acoes <- df.precos %>%
    na.omit() %>%
    group_by(ticker) %>%
    summarise(ret.medio = mean(ret_adjusted_prices),
              dp.ret = sd(ret_adjusted_prices)) %>%
    mutate(ticker = stringr::str_replace_all(ticker, '.SA', '') ) 

tab.indice.mercado <- tab.acoes %>%
               filter(ticker == "^BVSP")

tab.acoes <- tab.acoes %>%
               filter(ticker != "^BVSP")

CDI (taxa livre de risco)

library(GetBCBData)

meu.id <- c(CDI = 4389)

tab.CDI <- gbcbd_get_series(meu.id, first.date = inicio) %>%
  rename(ticker = series.name ) %>%
  mutate(ref.date = format(ref.date, '%Y'),
         value = value/100) %>%
  group_by(ref.date, ticker) %>%
  summarise(ret = mean(value)) %>%
  group_by(ticker) %>%
  summarise(ret.medio = mean(ret),
            dp.ret = sd(ret))

Vejamos o gráfico

p <- ggplot(tab.acoes, aes(x = dp.ret, y = ret.medio, group = ticker)) + 
  geom_point() + 
  geom_text(data = tab.acoes, aes(x = dp.ret, y = ret.medio, label = ticker),
            size = 2.25,
            nudge_y = 0.03,
            check_overlap = TRUE, 
            nudge_x = 0.06) + 
  geom_point(data = tab.CDI, aes(x = dp.ret, y = ret.medio, color = ticker), size = 5) +
  geom_point(data = tab.indice.mercado, 
             aes(x = dp.ret, y = ret.medio, color = ticker), size = 5) +
  labs(x = 'Risco (desvio-padrão)', y = 'Retornos Anuais Esperados (médias)', 
       title = 'Média X Desvio-padrão para B3',
       subtitle = paste0(nrow(tab.acoes), ' ações, ', 
                         min(df.precos$ref_date), 
                         ' a ',
                         max(df.precos$ref_date))) + 
  scale_x_continuous(labels = scales::percent) + 
  scale_y_continuous(labels = scales::percent) +
  #guides(color = guide_legend(title = "Indices"))
  labs(color = 'Índices')
 
print(p)

Observações

No geral, a maioria das ações se saiu melhor que a taxa livre de risco (CDI). Há uma relação positiva entre risco e retorno. Quanto maior o desvio-padrão (eixo x), maior a média de retornos (eixo-y). No entanto, a relação não é perfeita. Se seguirmos a teoria da média-variãncia, há muitas oportunidades de arbitragem. Investiríamos principalmente nessas ações na parte superior esquerda do gráfico.

O índice de mercado, Ibovespa (^BVSP), não está bem posicionado no gráfico, tendo sofrido a debacle ocasionada pela pandemia de Covid-19 e o impacto das incertezas na economia. Por ser uma carteira diversificada, esperava-se que ela estivesse mais perto da fronteira eficiente, em torno da ação EQTL3 (Equatorial Energia).

A tabela a seguir ordena as ações por risco (desvio-padrão do retorno) e apresenta aquelas que obtiveram o máximo retorno médio para o risco.

#library(kableExtra) 
tab.acoes %>% 
  arrange(dp.ret) %>% 
  subset(ret.medio == cummax(ret.medio)) %>% 
  rename(acao = ticker, retorno = ret.medio, risco = dp.ret) %>% 
  kableExtra::kable() %>%
  kableExtra::kable_styling(bootstrap_options = c("striped", "hover", "condensed"))
acao retorno risco
VIVT3 0.0927363 0.1671758
EGIE3 0.1307247 0.1870085
EQTL3 0.2670963 0.1933187
RENT3 0.2701743 0.3870254
WEGE3 0.3132905 0.4317729
PRIO3 0.4462457 1.1719155
MGLU3 1.0599193 2.1113777