Fronteira Eficiente em Python


! pip install yfinance

import pandas as pd

from pandas_datareader import data as pdr

import yfinance as yfin

import matplotlib.pyplot as plt

yfin.pdr_override()

 

# Carteira



assets = ['WMT''FB']

carteira = pdr.DataReader(assets, data_source='yahoo', start='2014-01-01')['Adj Close'



import numpy as np

# Rentabilidade da carteira Logaritimizada

rentabilidade=np.log(carteira/carteira.shift(1))



# Média anual

rentabilidade.mean()*250



# Covâriacia anual

rentabilidade.cov()*250



# Corr anual

rentabilidade.corr()

# Matriz da correlação



import seaborn as sn

a=rentabilidade.corr()

sn.heatmap(a, annot=True)

plt.show()



# Número de activos

num_activos = len(assets)

num_activos



pesos = np.random.random(num_activos)

pesos /=np.sum(pesos)

pesos

#Rentabilidade esperada da carteira



np.sum(pesos*carteira.mean())*250

#Volatilidade da carteira esperada



np.dot(pesos.T,np.dot(rentabilidade.cov()*250,pesos))

#Volatilidade da carteira esperada



np.sqrt(np.dot(pesos.T,np.dot(rentabilidade.cov()*250,pesos)))

 



carteira_rentabilidade1 = []

carteir_volatilidade2 = []



for x in range (1000):

    pesos = np.random.random(num_activos)

    pesos /= np.sum(pesos)

    carteira_rentabilidade1.append(np.sum(pesos * rentabilidade.mean()) * 250)

    carteir_volatilidade2.append(np.sqrt(np.dot(pesos.T,np.dot(rentabilidade.cov() * 250, pesos))))

    

carteira_rentabilidade1 = np.array(carteira_rentabilidade1)

carteir_volatilidade2 = np.array(carteir_volatilidade2)



carteira_rentabilidade1, carteir_volatilidade2

 



carteiras1 = pd.DataFrame({'Rentabilidade': carteira_rentabilidade1, 'Volatilidade': carteir_volatilidade2})



carteiras1.head()



carteiras1.tail()

# Gráfico da Fronteira Eficiente em Python



carteiras1.plot(x='Volatilidade', y='Rentabilidade', kind='scatter', figsize=(106));

plt.xlabel('Volatilidae Esperada')

plt.ylabel('Rentabilidade Esperada')

















 

 

 

















Comentários

Mensagens populares deste blogue

Criar Cartões de Visita

12 signos egípcios

Calcular a percentagem de ocupação