import pandas as pd
from datetime import timedelta
#Importando información histórica de las acciones que componen el IGPA
FP = pd.read_csv("Stocks_punto.csv", sep='\t', encoding='utf-8')
FP['Date'] = pd.to_datetime(FP['Date'])
FP = FP[['Date', 'Ticker', 'Close']]
data1 = FP[['Ticker','Date', 'Close']]
data2 = FP[['Ticker','Date', 'Close']]
data3 = FP[['Ticker','Date', 'Close']]
data4 = FP[['Ticker','Date', 'Close']]
#Agregando la columna semana en cada dataset
data1.insert(3, "Week", data1['Date'].dt.year.astype(str) + data1['Date'].dt.week.astype(str))
data2.insert(3, "Week", (data2['Date']+ timedelta(days=-365) ).dt.year.astype(str) + (data2['Date']+ timedelta(days=-365) ).dt.week.astype(str))
data3.insert(3, "Week", (data3['Date']+ timedelta(days=-730) ).dt.year.astype(str) + (data3['Date']+ timedelta(days=-730) ).dt.week.astype(str))
data4.insert(3, "Week", (data3['Date']+ timedelta(days=-365*3) ).dt.year.astype(str) + (data3['Date']+ timedelta(days=-365*3) ).dt.week.astype(str))
#Obteniendo precio promedio para cada semana
data1 = data1.groupby(['Ticker','Week']).mean().reset_index()
data2 = data2.groupby(['Ticker','Week']).mean().reset_index()
data3 = data3.groupby(['Ticker','Week']).mean().reset_index()
data4 = data4.groupby(['Ticker','Week']).mean().reset_index()
#Uniendo los data sets para formar un solo conjunto de datos con las respectivos precios para cada año
s1 = pd.merge(data2, data1, how='left', on=['Ticker', 'Week'])
s1.rename(columns={'Close_y':'Close_y1',
'Close_x':'Close_y2'}, inplace=True) #y1: Year 1
s2 = pd.merge(data3, s1, how='left', on=['Ticker', 'Week'])
s2.rename(columns={'Close':'Close_y3'}, inplace=True)
stock_comparison = pd.merge(data4, s2, how='left', on=['Ticker', 'Week'])
stock_comparison.rename(columns={'Close':'Close_y4'}, inplace=True)
stock_comparison.tail(4)
#Añadir columna correspondiente a la variación porcentual
stock_comparison.insert(5, "yearly_var", (stock_comparison['Close_y2']/stock_comparison['Close_y1'] ) - 1)
stock_comparison.insert(6, "yearly_var2", (stock_comparison['Close_y3']/stock_comparison['Close_y2'] ) - 1)
stock_comparison.insert(7, "yearly_var3", (stock_comparison['Close_y4']/stock_comparison['Close_y3'] ) - 1)
stock_comparison.insert(8, "yearly_var_avg", (stock_comparison['yearly_var']+stock_comparison['yearly_var2'] ) )
stock_comparison.tail(4)
#Filtrar rango de valores para el eje X
stock_comparison = stock_comparison[stock_comparison['yearly_var'] < 4]
stock_comparison = stock_comparison[stock_comparison['yearly_var'] > -4]
#Filtrar rango de valores para el eje Y
stock_comparison = stock_comparison[stock_comparison['yearly_var2'] < 3]
stock_comparison = stock_comparison[stock_comparison['yearly_var2'] > -0.5]
#Plot1
import matplotlib.pyplot as plt
#plt.figure(figsize=(30,30))
#s2.plot( 'monthly_var', 'monthly_var2', linestyle='', marker='o', markersize=0.7)
#s2.plot
fig, ax = plt.subplots()
stock_comparison.plot(kind='scatter', x='yearly_var', y='yearly_var2', ax=ax, figsize=(15,7) )
# Turn on the grid
ax.grid()
#Plot2
import seaborn as sns
stock_comparison.plot(figsize=(10,10))
# Custom the inside plot: options are: “scatter” | “reg” | “resid” | “kde” | “hex”
#s2.plot(kind='scatter', x='monthly_var', y='monthly_var2', ax=ax, figsize=(20,30) )
sns.jointplot(x=stock_comparison["yearly_var"], y=stock_comparison["yearly_var2"], kind='hex')
plt.subplots_adjust(left=2, right=4, top=3, bottom=1.5)
#Filtrar rango de valores para el eje X
stock_comparison = stock_comparison[stock_comparison['yearly_var'] < 0.75]
stock_comparison = stock_comparison[stock_comparison['yearly_var'] > -0.75]
#Filtrar rango de valores para el eje Y
stock_comparison = stock_comparison[stock_comparison['yearly_var2'] < 0.75]
stock_comparison = stock_comparison[stock_comparison['yearly_var2'] > -1]
stock_comparison = stock_comparison[stock_comparison['yearly_var3'] < 0.75]
stock_comparison = stock_comparison[stock_comparison['yearly_var3'] > -1]
#s3 = s2.copy(deep=True)
#Plot3
import matplotlib.pyplot as plt
import seaborn as sns
sns.set(context="notebook", style="whitegrid", rc={"axes.axisbelow": False})
stock_comparison.plot(figsize=(10,10))
sns.jointplot(x=stock_comparison["yearly_var"], y=stock_comparison["yearly_var2"], kind='kde')
plt.subplots_adjust(left=2, right=4, top=3, bottom=1.5)
stock_comparison.head(4)
stock_comparison2 = stock_comparison.loc[(stock_comparison['yearly_var'] >= 0.3) | (stock_comparison['yearly_var'] <= -0.35)]
# library & dataset
import seaborn as sns
sns.set(context="notebook", style="whitegrid", rc={"axes.axisbelow": False})
stock_comparison2.plot(figsize=(10,10))
sns.jointplot(x=stock_comparison2["yearly_var"], y=stock_comparison2["yearly_var2"], kind='kde')
plt.subplots_adjust(left=2, right=4, top=3, bottom=1.5)
stock_comparison2 = stock_comparison[stock_comparison['yearly_var2'] > stock_comparison['yearly_var']]
stock_comparison2 = stock_comparison[stock_comparison['yearly_var_avg'] > 0.3]
# library & dataset
import matplotlib.pyplot as plt
import seaborn as sns
sns.set(context="notebook", style="whitegrid", rc={"axes.axisbelow": False})
stock_comparison2.plot(figsize=(10,10))
sns.jointplot(x=stock_comparison2["yearly_var_avg"], y=stock_comparison2["yearly_var3"], kind='kde')
plt.subplots_adjust(left=2, right=4, top=3, bottom=1.5)