Python em Finanças (Jupyter Notebook)
from datetime import datetime
import numpy as np
import pandas as pd
import pandas_datareader as web
import matplotlib.pyplot as plt
plt.style.use('fivethirtyeight')
# Mostrar os simmbolos da carteira
simbolos =["FB","AMZN","AAPL","NFLX","GOOG"]
#Data de inicio
iniciodata = '2013-01-01'
#Data de Hoje formatado YYYY-mm-dd
hoje = datetime.today().strftime('%Y-%m-%d')
# Conseguir o numero de activos da carteira
nactivos=len(simbolos)
print(nactivos)
print('A carteira tem '+str(nactivos)+' activos na nossa carteira')
# Criar uma função para conseguir os preços da carteira com todos os atributos
def mostrarMinhaCarteira(accoes=simbolos, inicio=iniciodata, fim=hoje):
datas = web.DataReader(accoes,data_source='yahoo',start=inicio,end=fim)
return datas
minhasaccoes =mostrarMinhaCarteira(simbolos)
minhasaccoes
# Criar uma função para conseguir os preços da carteira com todos apenasAdj Close
def mostrarMinhaCarteira1(accoes=simbolos, inicio=iniciodata, fim=hoje, col ='Adj Close'):
datas1 = web.DataReader(accoes,data_source='yahoo',start=inicio,end=fim)[col]
return datas1
minhasaccoes1 =mostrarMinhaCarteira1(simbolos)
minhasaccoes1
# Criar uma função que visualiza a carteira
def mostrargrafico(accoes = simbolos, inicio = iniciodata, fim = hoje, col ='Adj Close'):
# Criar o titulo
titulo = 'Preço Histórico das acções ' + col
#mostrar acções
minhasaccoes1 = mostrarMinhaCarteira1(accoes= accoes, inicio=inicio, fim=fim, col = col)
plt.figure(figsize=(12.2,4.5))
for c in minhasaccoes1.columns.values:
plt.plot( minhasaccoes1[c], label=c)
plt.title(titulo)
plt.xlabel('Tempo',fontsize=18)
plt.ylabel('Preço em USD ($)'+ col,fontsize=18)
plt.legend(minhasaccoes1.columns.values, loc='upper left')
plt.show()
# Mostrar o Gráfico
mostrargrafico(simbolos)
# Calcular uma simples rentabilidade
#(N0/N-1)-1
rendibilidade_diaria = minhasaccoes1.pct_change(1)
rendibilidade_diaria
# Mostrar a Correlação
rendibilidade_diaria.corr()
# Mostrar a Covariancia
rendibilidade_diaria.cov()
# Mostrar o Desvio-Padrão
rendibilidade_diaria.std()
# Mostrar a rendibilidade
# Criar o titulo
titulo = 'Volatilidade '
plt.figure(figsize=(12.2,4.5))
for c in rendibilidade_diaria.columns.values:
plt.plot( rendibilidade_diaria[c],lw=2, label=c)
plt.title(titulo)
plt.xlabel('Tempo',fontsize=18)
plt.ylabel('Rentabilidade Diária',fontsize=18)
plt.legend(minhasaccoes1.columns.values, loc='upper left')
plt.show()
# Mostrar a Média
renmedia=rendibilidade_diaria.mean()
renmedia
# Calcular a rendibildade de uma carteira
peso = np.array([0.4,0.1,0.3,0.1,0.1]) # 40% Face, 10% Amazon, 30% Appel, 10% NetF, 10% Google
rentabilidadedacarteira = np.sum(renmedia*peso)
rentibi = rentabilidadedacarteira*100
print("A rendibilidade diária média esperada é de"+" {0:.2f}".format(rentibi) + ' % .')
# Mostrar a rendibilidade anual
rendibilidade_anual = rentabilidadedacarteira*353
rentibanual = rendibilidade_anual*100
print("A rendibilidade anual média esperada é de"+" {0:.2f}".format(rentibanual) + ' % .')
#Calcular a comulativa rendibilidade simples
diariosimplesrendibilidade = (rendibilidade_diaria+1).cumprod()
diariosimplesrendibilidade
#(period_1 + 1)*(period_2 +1)*...*(period_n +1)
(rendibilidade_diaria["GOOG"][1]+1)*(rendibilidade_diaria["GOOG"][2]+1)
plt.figure(figsize = (12.2,4.5))
for c in diariosimplesrendibilidade.columns.values:
plt.plot(diariosimplesrendibilidade.index,diariosimplesrendibilidade[c],lw=2, label=c)
plt.legend(loc='upper left', fontsize = 10)
plt.xlabel('Dados')
plt.ylabel('Crescimento em $ do investimento')
plt.title('Rendibilidade acumalativa diária')
plt.show()
Comentários
Enviar um comentário