%load_ext autoreload
%autoreload 2
import pandas as pd
import pandas.io.data as web
import datetime
import pandas.io.pytables
import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as plt
import seaborn as sns
%matplotlib inline
from collections import OrderedDict
from IPython.display import display, HTML
HTML('')
dax_symbols = pd.DataFrame({'Symbol': ['ADS.DE', 'ALV.DE', 'BAS.DE', 'BAYN.DE', 'BEI.DE', 'BMW.DE', 'CBK.DE', 'CON.DE', 'DAI.DE', 'DB1.DE'
'DBK.DE', 'DPW.DE', 'DTE.DE', 'EOAN.DE', 'FME.DE', 'FRE.DE', 'HEI.DE', 'HEN3.DE', 'IFX.DE', 'LHA.DE',
'LIN.DE', 'LXS.DE', 'MRK.DE', 'MUV2.DE', 'RWE.DE', 'SAP.DE', 'SDF.DE', 'SIE.DE', 'TKA.DE', 'VOW3.DE']})
HTML('')
dax_info = """Name Branche Logo Indexgewichtung in % (Letzte) Aufnahme Sitz
Adidas Bekleidung Adidas-group-logo-fr.svg 1,92 22. Juni 1998 Herzogenaurach
Allianz Versicherungen Allianz.svg 6,90 1. Juli 1988 München
BASF Chemie BASF-Logo bw.svg 9,82 1. Juli 1988 Ludwigshafen am Rhein
Bayer Chemie und Pharma Bayer-Logo.svg 10,10 1. Juli 1988 Leverkusen
Beiersdorf Konsumgüter Beiersdorf Logo.svg 0,86 22. Dez. 2008 Hamburg
BMW Automobilproduktion BMW.svg 3,63 1. Juli 1988 München
Commerzbank Banken Commerzbank (2009).svg 1,34 1. Juli 1988 Frankfurt am Main
Continental Automobilzulieferer Continental AG logo.svg 2,26 24. Sep. 2012 Hannover
Daimler Automobilproduktion Daimler AG.svg 8,54 21. Dez. 19981 Stuttgart
Deutsche Bank Banken Deutsche Bank logo without wordmark.svg 3,50 1. Juli 1988 Frankfurt am Main
Deutsche Boerse Boersen Deutsche Boerse Group Logo.svg 1,25 23. Dez. 2002 Frankfurt am Main
Deutsche Post Transport Deutsche Post.svg 3,06 19. Mär. 2001 Bonn
Deutsche Telekom Telekommunikation Telekom Logo 2013.svg 4,75 18. Nov. 1996 Bonn
E.ON Energieversorgung EON Logo.svg 3,52 19. Juni 20001 Düsseldorf
Fresenius Medical Care Medizintechnik Fresenius Medical Care 20xx logo.svg 1,22 20. Sep. 1999 Hof an der Saale
Fresenius Medizintechnik Fresenius.svg 1,73 23. Mär. 2009 Bad Homburg vor der Höhe
HeidelbergCement Baustoffe (Zement) HeidelbergCement Logo.svg 1,08 21. Juni 2010 Heidelberg
Henkel Konsumgüter Henkel-Logo.svg 1,79 1. Juli 1988 Düsseldorf
Infineon Technologies Halbleiter Infineon-Logo.svg 1,25 21. Sep. 2009 Neubiberg
K+S Chemie Ks logo.svg 0,51 22. Sep. 2008 Kassel
Lanxess Chemie LanXess-Logo.svg 0,50 24. Sep. 2012 Köln
Linde Industriegase und Anlagenbau TheLindeGroup-Logo.svg 3,35 1. Juli 1988 München
Lufthansa Luftfahrt Lufthansa-Logo.svg 0,88 1. Juli 1988 Köln
Merck Chemie und Pharma Merck-Logo.svg 1,01 18. Juni 2007 Darmstadt
Munich Re Versicherungen Münchener Rück logo.svg 3,09 23. Sep. 1996 München
RWE Energieversorgung Logo RWE Claim.svg 1,87 1. Juli 1988 Essen
SAP Standardsoftware SAP 2011 logo.svg 6,31 18. Sep. 1995 Walldorf (Baden)
Siemens Elektrotechnik Siemens-logo.svg 9,42 1. Juli 1988 Berlin und München
ThyssenKrupp Stahl ThyssenKruppLogo.svg 1,10 25. Mär. 1999 Duisburg und Essen
Volkswagen Automobilproduktion VWAG-Logo.svg 3,42 1. Juli 1988 Wolfsburg"""
dax_info_en = """Logo Company Prime Standard industry group Ticker symbol Index weighting (%)1 Employees
Adidas Logo.svg Adidas Clothing ADS 2.04 86,824
Allianz Insurance ALV 6.66 151,340
BASF-Logo bw.svg BASF Chemicals BAS 9.62 111,141
Bayer Logo.svg Bayer Pharmaceuticals and Chemicals BAYN 7.55 111,800
Beiersdorf.svg Beiersdorf Consumer goods BEI 0.86 19,130
BMW.svg BMW Manufacturing BMW 3.26 102,007
Commerzbank Banking CBK 1.01 56,221
Continental Manufacturing CON 0.79 170,000
Daimler AG.svg Daimler Manufacturing DAI 5.77 267,274
Deutsche Bank logo without wordmark.svg Deutsche Bank Banking DBK 5.05 100,474
Deutsche Boerse Securities DB1 1.47 3,588
Deutsche Lufthansa Transport Aviation LHA 0.83 118,088
Deutsche Post DHL.svg Deutsche Post Communications DPW 1.90 424,351
Deutsche Telekom.svg Deutsche Telekom Communications DTE 5.38 235,132
Logo E.ON.svg E.ON Energy EOAN 6.24 85,105
Fresenius.svg Fresenius Medical FRE 1.63 149,351
Fresenius Medical Care Medical FME 2.16 73,450
HeidelbergCement.svg HeidelbergCement Building HEI 0.86 53,440
Henkel-Logo.svg Henkel Consumer goods HEN3 1.53 47,753
Infineon Technologies Manufacturing IFX 1.27 26,658
K+S Chemicals SDF 1.18 15,170
LanXess-Logo.svg Lanxess Chemicals LXS 0.73 14,650
Linde Industrial gases LIN 3.81 62,000
Merck Pharmaceuticals MRK 0.97 40,676
Munich Re Insurance MUV2 2.92 46,915
RWE AG.svg RWE Energy RWE 2.19 70,860
SAP 2011 logo.svg SAP IT SAP 7.70 61,344
Siemens AG logo.svg Siemens Industrial, electronics SIE 9.96 405,000
ThyssenKruppLogo.jpg ThyssenKrupp Industrial, manufacturing TKA 1.33 180,050
Volkswagen Group.svg Volkswagen Group Manufacturing VOW3 3.36 549,763"""
from StringIO import StringIO
df_dax_info = pd.read_table(StringIO(dax_info_en))
df_dax_info
df_dax_info['Symbol'] = df_dax_info['Ticker symbol'].map(lambda x: x + ".DE")
df_dax = pd.merge( df_dax_info, dax_symbols, left_on='Symbol', right_on='Symbol')
with pd.io.pytables.get_store('dax30.h5') as store:
# store.remove('dax')
store.append('dax', df_dax)
### NASDAQ100
### http://finance.yahoo.com/q/cp?s=%5ENDX
start = datetime.datetime(2000, 1, 1)
end = datetime.datetime(2014, 1, 1)
stx = web.DataReader(df_dax.Symbol.tolist(), data_source="yahoo", start=start, end=end)
stx['Adj Close'] = stx.ix['Adj Close'].fillna(method='ffill', axis=0, limit=1)
# stx['Close'] = stx.loc['Close'].fillna(method='ffill', axis=0, limit=3)
stx['Returns'] = np.log( stx.loc['Adj Close'] / stx.loc['Adj Close'].shift(1) )
stx.Returns.ix[datetime.datetime(2008,1,1):][stx.Returns['VOW3.DE'].isnull()]
with pd.io.pytables.get_store('dax30.h5') as store:
#store.remove('stx')
store.append('stx', stx)
from IPython.html.widgets import interact, interactive, fixed
from bokeh import mpl as mplbkh
from bokeh.plotting import output_notebook, line, show
output_notebook()
dfclose = stx['Close']
dfclose.ix[pd.Timestamp('20080807'):pd.Timestamp('20080815')].isnull().any(axis=1) #.all(axis=1)
# dfclose.fillna(method='ffill', limit=0).isnull().any(axis=1) #.plot(kind='area')
def plot_close(stock):
ig, axes = plt.subplots(nrows=2, ncols=1)
stx.ix['Adj Close'][stock].plot(legend=True, ax=axes[0], x_compat=True, figsize=(14, 6))
stx.ix['Close'][stock].plot(legend=True, ax=axes[0], x_compat=True, figsize=(14, 6))
axes[0].set_title('Closing price')
axes[0].set_ylabel('Price')
stx.ix['Returns'][stock].plot(legend=False, ax=axes[1], x_compat=True, figsize=(14, 6))
axes[1].set_title('Log returns')
names_dict = OrderedDict(df_dax_info[['Symbol', 'Company']].set_index('Company').to_records() )
interact(plot_close, stock=names_dict)
with pd.io.pytables.get_store('dax30.h5') as store:
ret = store.select('stx').Returns
stx = store.select('stx')
# ret.plot(legend=False, figsize=(14,6))
# ret.hist(bins=100)