Daily and Cumulative Returns, CAPM
This post includes code and notes from python for finance and trading algorithms udemy course and python for finance and trading algorithms udemy course notebooks.
from scipy import stats
# help(stats.linregress)
import pandas as pd
import pandas_datareader as web
start = pd.to_datetime('2020-01-01')
end = pd.to_datetime('today')
FXAIX_stock = web.DataReader('FXAIX', 'yahoo', start, end)
FXAIX_stock.head()
VRTTX_stock = web.DataReader('VRTTX', 'yahoo', start, end)
VRTTX_stock.head()
FNCMX_stock = web.DataReader('FNCMX', 'yahoo', start, end)
FNCMX_stock.head()
FSMAX_stock = web.DataReader('FSMAX', 'yahoo', start, end)
FSMAX_stock.head()
import matplotlib.pyplot as plt
%matplotlib inline
stocks
FXAIX_stock['Cumulative'] = FXAIX_stock['Close']/FXAIX_stock['Close'].iloc[0]
VRTTX_stock['Cumulative'] = VRTTX_stock['Close']/VRTTX_stock['Close'].iloc[0]
FNCMX_stock['Cumulative'] = FNCMX_stock['Close']/FNCMX_stock['Close'].iloc[0]
FSMAX_stock['Cumulative'] = FSMAX_stock['Close']/FSMAX_stock['Close'].iloc[0]
FXAIX_stock['Cumulative'].plot(label='FXAIX_stock',figsize=(10,8))
VRTTX_stock['Cumulative'].plot(label='VRTTX_stock',figsize=(10,8))
FNCMX_stock['Cumulative'].plot(label='FNCMX_stock',figsize=(10,8))
FSMAX_stock['Cumulative'].plot(label='FSMAX_stock',figsize=(10,8))
plt.legend()
plt.title('Cumulative Return')
FXAIX_stock['Daily Return'] = FXAIX_stock['Close'].pct_change(1)
VRTTX_stock['Daily Return'] = VRTTX_stock['Close'].pct_change(1)
FXAIX_stock['Daily Return']
plt.scatter(FXAIX_stock['Daily Return'],VRTTX_stock['Daily Return'],alpha=0.3)
VRTTX_stock['Daily Return'].hist(bins=100)
FXAIX_stock['Daily Return'].hist(bins=100)
beta,alpha,r_value,p_value,std_err = stats.linregress(FXAIX_stock['Daily Return'].iloc[1:],VRTTX_stock['Daily Return'].iloc[1:])
beta
alpha
r_value
FXAIX_stock['Daily Return'].head()
import numpy as np
noise = np.random.normal(0,0.001,len(FXAIX_stock['Daily Return'].iloc[1:]))
#noise
FXAIX_stock['Daily Return'].iloc[1:] + noise
beta,alpha,r_value,p_value,std_err = stats.linregress(FXAIX_stock['Daily Return'].iloc[1:]+noise,FXAIX_stock['Daily Return'].iloc[1:])
beta
alpha