Bloomberg data toolkit for humans
Project description
xbbg
| Latest Release | |
| Docs | |
| Build | |
| Coverage | |
| Quality | |
| License |
Bloomberg data toolkit for humans
Requirements
-
Bloomberg C++ SDK version 3.12.1 or higher:
-
Downlaod C++ Experimental Release
-
Copy
blpapi3_32.dllandblpapi3_64.dllunderbinfolder to BloombergBLPAPI_ROOTfolder, normallyblp/DAPI
-
Bloomberg Open API (need to install manually as shown below)
-
pdbdp - pandas wrapper for Bloomberg Open API
-
numpy, pandas, ruamel.yaml and pyarrow
Installation
pip install blpapi --index-url=https://bloomberg.bintray.com/pip/simple
pip install xbbg
What's New
0.1.22 - Remove PyYAML dependency due to security vulnerability
0.1.17 - Add adjust argument in bdh for easier dividend / split adjustments
Tutorial
In[1]: from xbbg import blp
Basics
BDPexample:
In[2]: blp.bdp(tickers='NVDA US Equity', flds=['Security_Name', 'GICS_Sector_Name'])
Out[2]:
security_name gics_sector_name
ticker
NVDA US Equity NVIDIA Corp Information Technology
BDPwith overrides:
In[3]: blp.bdp('AAPL US Equity', 'Eqy_Weighted_Avg_Px', VWAP_Dt='20181224')
Out[3]:
eqy_weighted_avg_px
ticker
AAPL US Equity 148.75
BDHexample:
In[4]: blp.bdh(
...: tickers='SPX Index', flds=['high', 'low', 'last_price'],
...: start_date='2018-10-10', end_date='2018-10-20',
...: )
Out[4]:
ticker SPX Index
field high low last_price
2018-10-10 2,874.02 2,784.86 2,785.68
2018-10-11 2,795.14 2,710.51 2,728.37
2018-10-12 2,775.77 2,729.44 2,767.13
2018-10-15 2,775.99 2,749.03 2,750.79
2018-10-16 2,813.46 2,766.91 2,809.92
2018-10-17 2,816.94 2,781.81 2,809.21
2018-10-18 2,806.04 2,755.18 2,768.78
2018-10-19 2,797.77 2,760.27 2,767.78
BDHexample with Excel compatible inputs:
In[4]: blp.bdh(
...: tickers='SHCOMP Index', flds=['high', 'low', 'last_price'],
...: start_date='2018-09-26', end_date='2018-10-20',
...: Per='W', Fill='P', Days='A',
...: )
Out[4]:
ticker SHCOMP Index
field high low last_price
2018-09-28 2,827.34 2,771.16 2,821.35
2018-10-05 2,827.34 2,771.16 2,821.35
2018-10-12 2,771.94 2,536.66 2,606.91
2018-10-19 2,611.97 2,449.20 2,550.47
BDHwithout adjustment for dividends and splits:
In[5]: blp.bdh(
...: 'AAPL US Equity', 'px_last', '20140605', '20140610',
...: CshAdjNormal=False, CshAdjAbnormal=False, CapChg=False
...: )
Out[5]:
ticker AAPL US Equity
field px_last
2014-06-05 647.35
2014-06-06 645.57
2014-06-09 93.70
2014-06-10 94.25
BDHadjusted for dividends and splits:
In[6]: blp.bdh(
...: 'AAPL US Equity', 'px_last', '20140605', '20140610',
...: CshAdjNormal=True, CshAdjAbnormal=True, CapChg=True
...: )
Out[6]:
ticker AAPL US Equity
field px_last
2014-06-05 85.45
2014-06-06 85.22
2014-06-09 86.58
2014-06-10 87.09
BDSexample:
In[7]: blp.bds('AAPL US Equity', 'DVD_Hist_All', DVD_Start_Dt='20180101', DVD_End_Dt='20180531')
Out[7]:
declared_date ex_date record_date payable_date dividend_amount dividend_frequency dividend_type
ticker
AAPL US Equity 2018-05-01 2018-05-11 2018-05-14 2018-05-17 0.73 Quarter Regular Cash
AAPL US Equity 2018-02-01 2018-02-09 2018-02-12 2018-02-15 0.63 Quarter Regular Cash
- Intraday bars
BDIBexample:
In[8]: blp.bdib(ticker='BHP AU Equity', dt='2018-10-17').tail()
Out[8]:
ticker BHP AU Equity
field open high low close volume num_trds
2018-10-17 15:56:00+11:00 33.62 33.65 33.62 33.64 16660 126
2018-10-17 15:57:00+11:00 33.65 33.65 33.63 33.64 13875 156
2018-10-17 15:58:00+11:00 33.64 33.65 33.62 33.63 16244 159
2018-10-17 15:59:00+11:00 33.63 33.63 33.61 33.62 16507 167
2018-10-17 16:10:00+11:00 33.66 33.66 33.66 33.66 1115523 216
Above example works because 1) AU in equity ticker is mapped to EquityAustralia in
markets/assets.yml, and 2) EquityAustralia is defined in markets/exch.yml.
To add new mappings, define BBG_ROOT in sys path and add assets.yml and
exch.yml under BBG_ROOT/markets.
- Intraday bars within market session:
In[9]: blp.intraday(ticker='7974 JT Equity', dt='2018-10-17', session='am_open_30').tail()
Out[9]:
ticker 7974 JT Equity
field open high low close volume num_trds
2018-10-17 09:27:00+09:00 39,970.00 40,020.00 39,970.00 39,990.00 10800 44
2018-10-17 09:28:00+09:00 39,990.00 40,020.00 39,980.00 39,980.00 6300 33
2018-10-17 09:29:00+09:00 39,970.00 40,000.00 39,960.00 39,970.00 3300 21
2018-10-17 09:30:00+09:00 39,960.00 40,010.00 39,950.00 40,000.00 3100 19
2018-10-17 09:31:00+09:00 39,990.00 40,000.00 39,980.00 39,990.00 2000 15
- Corporate earnings:
In[10]: blp.earning('AMD US Equity', by='Geo', Eqy_Fund_Year=2017, Number_Of_Periods=1)
Out[10]:
level fy2017 fy2017_pct
Asia-Pacific 1.00 3,540.00 66.43
China 2.00 1,747.00 49.35
Japan 2.00 1,242.00 35.08
Singapore 2.00 551.00 15.56
United States 1.00 1,364.00 25.60
Europe 1.00 263.00 4.94
Other Countries 1.00 162.00 3.04
- Dividends:
In[11]: blp.dividend(['C US Equity', 'MS US Equity'], start_date='2018-01-01', end_date='2018-05-01')
Out[11]:
dec_date ex_date rec_date pay_date dvd_amt dvd_freq dvd_type
ticker
C US Equity 2018-01-18 2018-02-02 2018-02-05 2018-02-23 0.32 Quarter Regular Cash
MS US Equity 2018-04-18 2018-04-27 2018-04-30 2018-05-15 0.25 Quarter Regular Cash
MS US Equity 2018-01-18 2018-01-30 2018-01-31 2018-02-15 0.25 Quarter Regular Cash
New in 0.1.17 - Dividend adjustment can be simplified to one parameter adjust:
BDHwithout adjustment for dividends and splits:
In[12]: blp.bdh('AAPL US Equity', 'px_last', '20140606', '20140609', adjust='-')
Out[12]:
ticker AAPL US Equity
field px_last
2014-06-06 645.57
2014-06-09 93.70
BDHadjusted for dividends and splits:
In[13]: blp.bdh('AAPL US Equity', 'px_last', '20140606', '20140609', adjust='all')
Out[13]:
ticker AAPL US Equity
field px_last
2014-06-06 85.22
2014-06-09 86.58
Optimizations
This library uses a global Bloomberg connection on the backend -
more specically, _xcon_ in globals() variable.
Since initiation of connections takes time, if multiple queries are expected,
manual creation of a new connection (which will be shared by all following queries)
is helpful before calling any queries.
- In command line, below command is helpful:
from xbbg import blp
blp.create_connection()
- For functions, wrapper function is recommended (connections will be destroyed afterwards):
from xbbg import blp
@blp.with_bloomberg
def query_bbg():
"""
All queries share the same connection
"""
blp.bdp(...)
blp.bdh(...)
blp.bdib(...)
Data Storage
If BBG_ROOT is provided in os.environ, data can be saved locally.
By default, local storage is preferred than Bloomberg for all queries.
Noted that local data usage must be compliant with Bloomberg Datafeed Addendum
(full description in DAPI<GO>):
To access Bloomberg data via the API (and use that data in Microsoft Excel), your company must sign the 'Datafeed Addendum' to the Bloomberg Agreement. This legally binding contract describes the terms and conditions of your use of the data and information available via the API (the "Data"). The most fundamental requirement regarding your use of Data is that it cannot leave the local PC you use to access the BLOOMBERG PROFESSIONAL service.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file xbbg-0.2.6.tar.gz.
File metadata
- Download URL: xbbg-0.2.6.tar.gz
- Upload date:
- Size: 37.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.19.1 setuptools/40.4.3 requests-toolbelt/0.8.0 tqdm/4.28.1 CPython/3.6.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4ab6f4ae96c5fed5a7b29715c85713bba00d3aaf0b2c6995f56e11d838a837dd
|
|
| MD5 |
9f1d7f6daf9a7944c4b42a3486605847
|
|
| BLAKE2b-256 |
9ebf2865832a383e00055df5f38adf981ee9a75b19aa6e413081f81b4fec8167
|
File details
Details for the file xbbg-0.2.6-py3-none-any.whl.
File metadata
- Download URL: xbbg-0.2.6-py3-none-any.whl
- Upload date:
- Size: 45.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.19.1 setuptools/40.4.3 requests-toolbelt/0.8.0 tqdm/4.28.1 CPython/3.6.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
94586975a121bdf47dfe37107938452d33f4694f3c8032f95634f72e7fa8e626
|
|
| MD5 |
bb3e0c17a79978a58e112f338371d5aa
|
|
| BLAKE2b-256 |
5da6697cf8d4e5d895ef7e6fa7b4d0a0948b7149e60039a45a3d27f33945e4bf
|