In [1]:
import pandas as pd
import tia.bbg.datamgr as dm
In [2]:
# create a DataManager for simpler api access
mgr = dm.BbgDataManager()
# retrieve a single security accessor from the manager
msft = mgr['MSFT US EQUITY']
In [3]:
# Can now access any Bloomberg field (as long as it is upper case)
msft.PX_LAST, msft.PX_OPEN
Out[3]:
In [4]:
# Access multiple fields at the same time
msft['PX_LAST', 'PX_OPEN']
Out[4]:
In [5]:
# OR pass an array
msft[['PX_LAST', 'PX_OPEN']]
Out[5]:
In [6]:
# Have the manager default to returning a frame instead of values
mgr.sid_result_mode = 'frame'
msft.PX_LAST
Out[6]:
In [7]:
# multiple fields returned as data frame
msft[['PX_LAST', 'PX_OPEN']]
Out[7]:
In [8]:
# Retrieve historical data
msft.get_historical(['PX_OPEN', 'PX_HIGH', 'PX_LOW', 'PX_LAST'], '1/1/2014', '1/12/2014').head()
Out[8]:
In [9]:
sids = mgr['MSFT US EQUITY', 'IBM US EQUITY', 'CSCO US EQUITY']
sids.PX_LAST
Out[9]:
In [10]:
sids.get_historical('PX_LAST', '1/1/2014', '11/12/2014').head()
Out[10]:
In [11]:
sids.get_historical(['PX_OPEN', 'PX_LAST'], '1/1/2014', '11/12/2014').head()
Out[11]:
In [12]:
#
# ability to cache requests in memory or in h5 file
#
ms = dm.MemoryStorage()
cmgr = dm.CachedDataManager(mgr, ms, pd.datetime.now())
In [13]:
cmsft = cmgr['MSFT US EQUITY']
cmsft.PX_LAST
Out[13]:
In [14]:
%timeit msft.PX_LAST
In [15]:
%timeit cmsft.PX_LAST
In [16]:
csids = cmgr['MSFT US EQUITY', 'IBM US EQUITY']
sids = mgr['MSFT US EQUITY', 'IBM US EQUITY']
In [17]:
%timeit sids.get_historical('PX_LAST', start='1/3/2000', end='1/3/2014').head()
In [18]:
%timeit csids.get_historical('PX_LAST', start='1/3/2000', end='1/3/2014').head()
In [19]:
#
# HD Storage
# - note after executing the warning from hf api. I decided to leave blanks instead of replacing
#
import tempfile
fh, fp = tempfile.mkstemp()
h5storage = dm.HDFStorage(fp) # Can set compression level for smaller files
h5mgr = dm.CachedDataManager(mgr, h5storage, pd.datetime.now())
h5msft = h5mgr['MSFT US EQUITY']
h5msft.PX_LAST
Out[19]:
In [20]:
# Notice no warning as it is taken from cache
h5msft.PX_LAST
Out[20]:
In [21]:
h5msft.get_historical('PX_LAST', start='1/2/2000', end='1/2/2014').head()
Out[21]:
In [22]:
%timeit h5msft.get_historical('PX_LAST', start='1/2/2000', end='1/2/2014')
In [23]:
# notice only IBM gets warning as MSFT is already cached, so it only retrieves IBM data
h5sids = h5mgr['MSFT US EQUITY', 'IBM US EQUITY']
h5sids.get_historical('PX_LAST', start='1/3/2000', end='1/2/2014').tail()
Out[23]:
In [24]:
# not perfect as it retrieves for each security and then concats BUT better than roundtrip to bloomberg plus consistency added for free
%timeit h5sids.get_historical('PX_LAST', start='1/3/2000', end='1/2/2014')