In [6]:
import numpy as np
import pandas as pd
from pandas import Series, DataFrame
from pandas.io.data import DataReader
import matplotlib.pyplot as plt
import seaborn as sns
sns.set_style('whitegrid')
%matplotlib inline
In [8]:
from datetime import datetime
from __future__ import division
In [9]:
tech_list = ['AAPL', 'GOOG', 'MSFT', 'AMZN']
In [10]:
end = datetime.now()
start = datetime(end.year - 1, end.month, end.day)
In [15]:
stocks = {}
for stock in tech_list:
stocks[stock] = DataReader(stock, 'yahoo', start, end)
In [17]:
stocks['AAPL'].describe()
Out[17]:
In [20]:
stocks['AAPL']['Adj Close'].plot(legend=True, figsize=(10,4))
Out[20]:
In [21]:
stocks['AAPL']['Volume'].plot(legend=True, figsize=(10,4))
Out[21]:
In [22]:
ma_day = [10,20,50]
In [23]:
AAPL = stocks['AAPL']
for ma in ma_day:
column_name = "MA for %s days" %(str(ma))
AAPL[column_name] = pd.rolling_mean(AAPL['Adj Close'], ma)
In [24]:
AAPL[['Adj Close', 'MA for 10 days', 'MA for 20 days', 'MA for 50 days']].plot(subplots=False, figsize=(10,4))
Out[24]:
In [25]:
AAPL['Daily Return'] = AAPL['Adj Close'].pct_change()
AAPL['Daily Return'].plot(figsize=(10,4), legend=True, linestyle='--',marker='o')
Out[25]:
In [26]:
sns.distplot(AAPL['Daily Return'].dropna(), bins=100)
Out[26]:
In [28]:
closing_df = DataReader(tech_list, 'yahoo', start, end)['Adj Close']
In [29]:
tech_rets = closing_df.pct_change()
In [31]:
sns.jointplot('GOOG', 'GOOG', tech_rets, kind='scatter')
Out[31]:
In [32]:
sns.jointplot('GOOG', 'MSFT', tech_rets, kind='scatter')
Out[32]:
In [34]:
sns.jointplot('GOOG', 'AAPL', tech_rets, kind='scatter')
Out[34]:
In [35]:
sns.jointplot('MSFT', 'AAPL', tech_rets, kind='scatter')
Out[35]:
In [36]:
sns.pairplot(tech_rets.dropna())
Out[36]:
In [37]:
returns_fig = sns.PairGrid(tech_rets.dropna())
returns_fig.map_upper(plt.scatter)
returns_fig.map_lower(sns.kdeplot)
returns_fig.map_diag(plt.hist, bins=30)
Out[37]:
In [38]:
returns_fig = sns.PairGrid(closing_df)
returns_fig.map_upper(plt.scatter)
returns_fig.map_lower(sns.kdeplot)
returns_fig.map_diag(plt.hist, bins=30)
Out[38]:
In [41]:
sns.heatmap(tech_rets.dropna().corr(), annot=True)
Out[41]:
In [42]:
sns.heatmap(closing_df.dropna().corr(), annot=True)
Out[42]:
In [ ]: