Otimização de portfólio em Python | Teoria de portfólio moderna em Python

Conteúdo

Introdução

Neste artigo, Vamos aprender os conceitos de gerenciamento de portfólio e implementá-los usando bibliotecas Python.

O artigo é dividido em três partes, a fim de cobrir os fundamentos da gestão de portfólio, conforme mostrado abaixo:

1. Retorno sobre um ativo e um portfólio

2. Risco associado a um ativo e um portfólio

3. Teoria de portfólio moderna: encontre o portfólio ideal

Retorno sobre um ativo e um portfólio

Antes de mergulharmos no cálculo do retorno de um ativo e um portfólio, vamos visitar brevemente a definição de portfólio e retornos.

pasta: Uma carteira é uma coleção de instrumentos financeiros, como ações, títulos, matérias primas, Caixa e equivalentes de caixa, bem como suas contrapartes de fundos. [Investopedia]

Neste artigo, teremos nosso portfólio que contém 4 ativos (“Portfólio com foco em ações“): Ações da Apple Inc., Nike (NKC), Google e Amazon. A visualização de nossos dados é mostrada abaixo:

23351data-7902264

Devoluções: Refere-se ao ganho ou perda de nossos ativos / portfólio por um período fixo de tempo. Nesta análise, fazemos um retorno como a variação percentual no preço de fechamento do ativo em relação ao preço de fechamento do dia anterior. Vamos calcular os retornos usando.pct_change () função em python.

Abaixo está o código Python para fazer o mesmo e o 5 filas superiores (cabeçalho) de retornos

Observação: a primeira linha é nula se não houver linha anterior para facilitar o cálculo da mudança percentual.

98345pct_change-8183113
73404ativo20 retorna 20 saída-8451066

Devolver uma carteira é definido como a soma ponderada dos retornos sobre os ativos do portfólio.

Para demonstrar como calcular o desempenho do portfólio em Python, vamos inicializar os pesos aleatoriamente (que iremos otimizar). O retorno do portfólio é calculado conforme mostrado no código abaixo e o cabeçalho dos retornos do portfólio também é exibido:

92818port_return-5452233
78623port_tet_output-9728010

Vimos como calcular retornos, agora vamos mudar nosso foco para outro conceito: Risco

O risco associado a ativos e portfólio

O método para calcular o risco de uma carteira está escrito abaixo e posteriormente explicamos e damos a formulação matemática para cada uma das etapas:

  • Calcule a matriz de covariância nos dados de desempenho.
  • Anualize a covariância multiplicando por 252
  • Calcule a variância da carteira, multiplicando-a pelos vetores de peso.
  • Calcule a raiz quadrada da variância calculada acima para obter o desvio padrão. Este desvio padrão é chamado de volatilidade da carteira.

A fórmula para calcular a covariância e anualizá-la é:

covariance = returns.cov () * 252

como está lá 252 dias úteis, nós multiplicamos a covariância por 252 para anualizar.

A variação da carteira, a ser calculado na etapa 3 anterior, depende dos pesos dos ativos na carteira e é definido como:

21018port20var20for-8559619

Onde,

  • opasta é a matriz de covariância do portfólio
  • pesos é o vetor de pesos atribuídos a cada ativo no portfólio

Abaixo está a abordagem para calcular o risco de ativos em Python.

17723var_matrix-4257434

Como explicado acima, nós multiplicamos a matriz de covariância com 252, como não 252 dias de negociação em um ano.

12834var_output-1090802

Os elementos diagonais de varnce_matrix representam a variação de cada ativo, enquanto os termos fora da diagonal representam a covariância entre os dois ativos, por exemplo: o elemento (1,2) representa a covariância entre Nike e Apple.

O código para calcular o risco do portfólio em python, cujo método vimos antes, é como mostrado:

37080port_varvol-6643533
85529port_varvoloutput-9210600

Agora, a tarefa para nós é otimizar os pesos. Por que? Para que possamos maximizar nosso retorno ou minimizar nosso risco, E fazemos isso usando a teoria de portfólio moderna!!

Teoria de portfólio moderna

A teoria de portfólio moderna sustenta que as características de risco e retorno de um investimento não devem ser consideradas isoladamente, Em vez disso, eles devem ser avaliados com base em como o investimento afeta o risco geral e o retorno da carteira.. O MPT mostra que um investidor pode construir uma carteira de vários ativos que maximizará os retornos para um determinado nível de risco.. além do que, além do mais, dado um nível desejado de retorno esperado, um investidor pode construir uma carteira com o menor risco possível. Com base em medidas estatísticas, como variância e correlação, o desempenho de um investidor individual é menos importante do que como afeta todo o portfólio. [Investopedia]

Esta teoria é resumida na figura a seguir. Encontramos a fronteira conforme mostrado abaixo e maximizamos o retorno esperado para o nível de risco ou minimizamos o risco para um determinado nível de retorno esperado.

36018sampef-1787570

Nosso objetivo é escolher os pesos de cada ativo em nosso portfólio de forma que maximizemos o retorno esperado dado um nível de risco..

Matematicamente, a função objetivo pode ser definida como mostrado abaixo:

69651img-6724-2025910

Outra forma de olhar para a Fronteira Eficiente e a função objetivo é que podemos minimizar o risco dado que o retorno esperado é pelo menos maior do que o valor dado.. Matematicamente, esta função objetivo pode ser escrita como:

99523img-6723-5286689

a primeira linha representa que o objetivo é minimizar a variância do portfólio, quer dizer, por sua vez, a volatilidade da carteira e, por tanto, minimizar o risco.

Restrito implica que os retornos devem ser maiores do que um retorno alvo específico, todos os pesos devem adicionar 1 e os pesos não devem ser negativos.

Agora que conhecemos o conceito, Vamos passar para a parte prática agora!

Em primeiro lugar, criamos o limite eficiente executando um loop. Em cada ciclo, consideramos um conjunto diferente de pesos atribuídos aleatoriamente para os ativos em nosso portfólio e calculamos o retorno e a volatilidade para essa combinação de pesos.

Para isso criamos 3 listas vazias, um para armazenar devoluções, outro para armazenar a volatilidade e o último para armazenar os pesos do portfólio.

29899c1-2600534

Depois de criarmos as listas, nós geramos aleatoriamente os pesos de nossos ativos repetidamente, então normalizamos a ponderação para adicionar 1. Em seguida, calculamos os retornos da mesma forma que calculamos acima. Subseqüentemente, Calculamos a variância da carteira e, em seguida, tiramos a raiz quadrada e, em seguida, anualizamos para obter a volatilidade, a medida de risco para nosso portfólio.

16432c2-6971130

Agora agregamos os dados em um dicionário e, em seguida, criamos um quadro de dados para ver a combinação de pesos de ativos e os retornos e volatilidade correspondentes que eles geram.

51715c3-6913887
62289c4-9105515

Aqui está uma prévia dos dados de lucratividade, volatilidade e pesos da carteira.

21078c5-7590957

Agora temos tudo conosco para entrar na última volta desta corrida e encontrar o conjunto ideal de pesos!!

Nós plotamos a Volatilidade contra os retornos que calculamos anteriormente, isso nos dará a fronteira eficiente que queríamos criar no início deste artigo.

21481c6-7412065

E aqui vamos nós!!

97146c7-6006044

Agora que temos a Fronteira Eficiente conosco, vamos encontrar os pesos ideais.

Podemos otimizar o uso de vários métodos, conforme descrito abaixo:

  • Portfólio com volatilidade mínima (risco)
  • Portfólio ideal (Razão máxima de Sharpe)
  • Retorno máximo em nível de risco; Risco mínimo em um nível esperado de retorno; Portfólio com a maior proporção de Sortino

Neste artigo, irei otimizar por meio das duas primeiras abordagens. No terceiro segmento, o ‘Retorno máximo em um nível de risco’ e o ‘Risco mínimo em um nível esperado de retorno’ eles são bastante simples, enquanto o baseado no índice Sortino é semelhante ao índice Sharpe.

1. Volatilidade mínima

Para encontrar a combinação de volatilidade mínima, selecionamos a linha em nosso quadro de dados que corresponde à variância mínima e encontramos essa linha usando a função .idxmin (). O código para fazer o mesmo é mostrado abaixo:

63020c8-3042165

Os pesos que obtemos disso são:

69752c9-1175797

Agora, descubra onde está o ponto mais baixo de volatilidade na curva acima. A resposta é exibida no final! Mas não trapaceie!

2. Maior relação de nitidez

O índice de Sharpe é o retorno médio obtido acima da taxa livre de risco por unidade de volatilidade ou risco total.. A fórmula usada para calcular o índice de Sharpe é fornecida abaixo:

Relação de nitidez = (Rpag – RF)/ DAKOTA DEL ONpag

Onde,

  • Rpag é o retorno do portfólio
  • RF é a taxa livre de risco
  • Dakota del surpag é o desvio padrão dos retornos do portfólio

O código para calcular o portfólio ideal, quer dizer, a carteira com o maior índice Sharpe, mostrado abaixo:

38331c10-3534930

A seguir, Os pesos da carteira que fornecem o índice Sharpe mais alto são mostrados:

82649c11-1437711

Descubra onde está o ponto de relacionamento Sharpe mais alto na curva acima. A resposta é mostrada abaixo! Mais uma vez, não faça armadilhas!

91780c13-9005749

Conforme prometido, aqui está a resposta às duas perguntas acima!!

76675c14-3443834

A estrela azul corresponde ao ponto de relacionamento de Sharpe mais alto e a estrela amarela corresponde ao ponto de volatilidade mínima.

Agora, antes de terminar este artigo, Eu encorajo você a encontrar o portfólio de Retorno Máximo em um nível de risco 'e’ Risco mínimo em um nível de lucratividade esperado 'e marque-os no gráfico anterior.

Além de usar a relação de Sharpe, também podemos otimizar o portfólio usando o relacionamento Sortino.

Dando um breve sobre isso:

a Relacionamento Sortino é uma variação do índice de Sharpe que diferencia a volatilidade prejudicial da volatilidade geral geral, usando o desvio padrão do ativo de retornos negativos da carteira (desvio para baixo) em vez do desvio padrão total dos retornos do portfólio. O índice Sortino pega o retorno de um ativo ou carteira e subtrai a taxa livre de risco, e, em seguida, divida esse valor pela tendência de queda do ativo. [Investopedia]

Taxa de classificação = (Rpag – rF)/ DAKOTA DEL OND

Onde,

  • Rpag é o retorno do portfólio
  • rF é a taxa livre de risco
  • Dakota del surD é o desvio padrão da deficiência

Caso você tenha problemas para implementar ou compreender o 3 métodos de otimização que descrevi acima, escreva-me em [e-mail protegido] | [e-mail protegido] | ou entre em contato com o LinkedIn em https://www.linkedin.com/in/parth-tyagi-4b867452/

Nota sobre o autor: Parth Tyagi está atualmente estudando PGDBA no IIM Calcutta, IIT Kharagpur & Instituto de Estatística Indiano-Calcutá e concluiu o B.Tech do IIT Delhi. Tem ~ 4 anos de experiência de trabalho em análises avançadas.

A mídia mostrada neste artigo de otimização de portfólio Python não é propriedade da DataPeaker e é usada a critério do autor.

Assine a nossa newsletter

Nós não enviaremos SPAM para você. Nós odiamos isso tanto quanto você.