In [1]:
import datetime
MY_VERSION = 1,0
print('Verze notebooku:', '.'.join(map(str, MY_VERSION)))
print('Poslední aktualizace:', datetime.datetime.now())
In [2]:
import sys
import datetime
import pandas as pd
import pandas_datareader as pdr
import quandl as ql
# Load Quandl API key
import json
with open('quandl_key.json','r') as f:
quandl_api_key = json.load(f)
ql.ApiConfig.api_key = quandl_api_key['API-key']
print('Verze pythonu:')
print(sys.version)
print('---')
print('Pandas:', pd.__version__)
print('pandas-datareader:', pdr.__version__)
print('Quandl version:', ql.version.VERSION)
Služby jako Google finance, Yahoo! Finance, World Bank, a další poskytují data a informace o finančních trzích. Package pandas-datareader umožňuje velmi jednoduše získat data z těchto zdrojů. Seznam všech zdrojů je možné nalézt v dokumentaci.
Bohužel momentálně nefunguje v pandas-datareader verze 0.4.0 yahoo finance. Nedávno yahoo změnilo api a ještě není zapracováno do pandas-datareaderu, info tady https://github.com/pydata/pandas-datareader/issues/354.
In [ ]:
#import pandas_datareader as pdr
import pandas_datareader.data as pdr_web
import datetime
start_date = datetime.datetime(2015, 1, 1)
end_date = datetime.datetime.now()
sp500 = pdr.get_data_yahoo('^GSPC',
start=start_date,
end=end_date)
sp500
In [5]:
import pandas_datareader.data as pdr_web
start_date = datetime.datetime(2015, 1, 1)
end_date = datetime.datetime.now()
QQQ = pdr_web.DataReader("NASDAQ:QQQ", 'google', start=start_date, end=end_date)
QQQ.head()
Out[5]:
Jedna z nejkvalitnějších volně dostupných databází pro futures je CHRIS-Wiki. A pro volně dostupné data jednotlivých akcií pak Wiki databáze. Obě databáze jsou spravované Quandl komunitou.
Bohužel služba Quandl zrušila databáze Yahoo finance a Google finance. Info o databázích google finance a yahoo na https://www.quantopian.com/posts/quandl-dropping-goog-and-yahoo-databases.
In [6]:
import datetime
import quandl as ql
# Load Quandl API key
import json
with open('quandl_key.json','r') as f:
quandl_api_key = json.load(f)
ql.ApiConfig.api_key = quandl_api_key['API-key']
start_date = datetime.datetime(2015, 1, 1)
end_date = datetime.datetime.now()
ES = ql.get("CHRIS/CME_ES1", start_date=start_date, end_date=end_date)
ES.head()
Out[6]:
In [7]:
start_date = datetime.datetime(2015, 1, 1)
end_date = datetime.datetime.now()
ES = ql.get("CHRIS/CME_ES1", start_date=start_date, end_date=end_date)
ES.head()
Out[7]:
In [8]:
start_date = datetime.datetime(2015, 1, 1)
end_date = datetime.datetime.now()
SPY = pdr_web.DataReader("NYSEARCA:SPY", 'google', start=start_date, end=end_date)
SPY.head()
Out[8]:
In [9]:
start_date = datetime.datetime(2015, 1, 1)
end_date = datetime.datetime.now()
IJH = pdr_web.DataReader("NYSEARCA:IJH", 'google', start=start_date, end=end_date)
IJH.head()
Out[9]:
In [10]:
start_date = datetime.datetime(2015, 1, 1)
end_date = datetime.datetime.now()
MDY = pdr_web.DataReader("NYSEARCA:MDY", 'google', start=start_date, end=end_date)
MDY.head()
Out[10]:
In [11]:
start_date = datetime.datetime(2015, 1, 1)
end_date = datetime.datetime.now()
OEF = pdr_web.DataReader("NYSEARCA:OEF", 'google', start=start_date, end=end_date)
OEF.head()
Out[11]:
In [12]:
start_date = datetime.datetime(2015, 1, 1)
end_date = datetime.datetime.now()
YM = ql.get("CHRIS/CME_YM1", start_date=start_date, end_date=end_date)
YM.head()
Out[12]:
In [13]:
start_date = datetime.datetime(2015, 1, 1)
end_date = datetime.datetime.now()
DIA = pdr_web.DataReader("NYSEARCA:DIA", 'google', start=start_date, end=end_date)
DIA.head()
Out[13]:
In [14]:
start_date = datetime.datetime(2015, 1, 1)
end_date = datetime.datetime.now()
NQ = ql.get("CHRIS/CME_NQ1", start_date=start_date, end_date=end_date)
NQ.head()
Out[14]:
In [15]:
start_date = datetime.datetime(2015, 1, 1)
end_date = datetime.datetime.now()
QQQ = pdr_web.DataReader("NASDAQ:QQQ", 'google', start=start_date, end=end_date)
QQQ.head()
Out[15]:
In [16]:
start_date = datetime.datetime(2015, 1, 1)
end_date = datetime.datetime.now()
USO = pdr_web.DataReader("NYSEARCA:USO", 'google', start=start_date, end=end_date)
USO.head()
Out[16]:
In [17]:
start_date = datetime.datetime(2015, 1, 1)
end_date = datetime.datetime.now()
GLD = pdr_web.DataReader("NYSEARCA:GLD", 'google', start=start_date, end=end_date)
GLD.head()
Out[17]:
In [18]:
tickers = ['AAPL', 'GOOG']
#EODdata = ql.get_table('WIKI/PRICES', ticker=['AAPL'], paginate=True)
EODdata = ql.get_table('WIKI/PRICES', ticker=tickers, qopts = { 'columns': ['ticker', 'date', 'open', 'high', 'low', 'close', 'volume'] }, paginate=True)
EODdata
Out[18]:
Získání dat v pythonu je velmi jednoduché a to díky nástrojům jako je panadas-datareader a Quandl, které získávají finanční data ze služeb Quandl Yahoo! finance a Google Finance, a dalších. Výhodou je, že data získaná pomocí těchto nástrojů jsou připravená přímo ve strukturách DataFrame a Series, které definuje knihovna pandas, vývíjená s cílem analýzy, zpracování, agregování, pivoting dat a mnoho dalších funkcí.
Zajímavost -> Někde jsem dokonce četl, že pandas je takový Excel/Spreadsheet na steroidech.