Python bindings for the ClearMacro API
Project description
ClearMacro
The ClearMacro Python library provides convenient access to the ClearMacro API from applications written in the Python language. It includes a pre-defined set of methods that make it simple to start interacting with the API.
Installation
To use the package, run:
pip install --upgrade cmqd
Examples
Selection of examples; a reference point of getting started.
// Instantiate a client
>>> from clearmacro import Client
>>> config = {'url': '<HOST HERE>', 'username': '<EMAIL HERE>', 'password': '<PASSWORD HERE>'}
>>> client = Client(**config)
// Get the catalogue
>>> catalogue = client.get_signals_catalogue()
// Consume it as a DataFrame
>>> client.json_to_df(catalogue)
signalId name description universe category
0 8 Crossborder Flow Crossborder Flow Economics Credit
1 9 Crossborder Private Liquidity Crossborder Private Liquidity Economics Credit
2 10 Crossborder Policy Sector Crossborder Policy Sector Economics Credit
3 11 Crossborder Monetized Savings Crossborder Monetized Savings Economics Inflation
...
// Get the markets for which a certain signal is available.
>>> markets_for_my_signal = client.get_markets_for_signal('Bond Valuation Score IHS')
// Consume as DataFrame
>>> client.json_to_df(markets_for_my_signal)
classId name marketCategory
0 86 Australia Country
1 87 Austria Country
2 88 Belgium Country
3 89 Brazil Country
4 90 Canada Country
...
// Request a certain signal series
>>> series = client.get_signal_series(signal='Crossborder Flow', market='US', research_type='Back-test Level', last_date_only=False, start_date='2016-1-1', end_date='2020-10-16')
// Consume it as a DataFrame
>>> client.json_to_df(series)
dateTimes values
0 2016-01-29T23:59:59.99 5.485577
1 2016-02-29T23:59:59.99 5.974441
2 2016-03-31T23:59:59.99 6.388535
3 2016-04-29T23:59:59.99 6.714286
4 2016-05-31T23:59:59.99 6.340190
5 2016-06-30T23:59:59.99 5.599369
6 2016-07-29T23:59:59.99 4.792453
7 2016-08-31T23:59:59.99 3.793103
8 2016-09-30T23:59:59.99 3.207812
9 2016-10-31T23:59:59.99 3.046729
10 2016-11-30T23:59:59.99 3.375776
11 2016-12-30T23:59:59.99 3.981424
...
// If there is no such series, get an exception which can be handled:
>>> client.get_signal_series('Random signal', 'Random market', 'Random research type')
ValueError: Invalid input.
// Request data with a certain frequency e.g. weekly data on Wednesdays.
>>> wedDataSeries = client.get_signal_series('Country Valuation Score TR', 'Germany', 'Back-test Momentum', frequency_key = 'W-WED')
// Consume it as a DataFrame
>>> client.json_to_df(wedDataSeries)
dateTimes values
0 1995-02-15T23:59:59.99 4.449885
1 1995-02-22T23:59:59.99 5.507832
2 1995-03-01T23:59:59.99 5.042825
3 1995-03-08T23:59:59.99 6.214902
4 1995-03-15T23:59:59.99 6.647544
...
Full Python Docstrings
Documentation for each method of the Client
class:
get_signals_catalogue()
"""
Function to retrieve the list of all signals.
Returns:
JSON list of signal objects.
"""
get_all_markets()
"""
Function to retrieve the list of all markets.
Returns:
JSON list of market objects.
"""
get_signal_universes()
"""
Function to retrieve the signal universes.
Returns:
JSON list of universe objects.
"""
get_categories_for_universe(universe: str)
"""
Function to retrieve the list of categories corresponding to the passed universe.
Args:
universe (str): One of the signal universes. Available options are the "name" fields from the list of universe objects obtained by calling the get_signal_universes method.
Returns:
JSON list of category objects.
"""
get_categories_for_universe_id(universe_id: int)
"""
Function to retrieve the list of categories corresponding to the passed universe id.
Args:
universe_id (int): One of the signal universes. Available options are the "universeId" fields from the list of universe objects obtained by calling the get_signal_universes method.
Returns:
JSON list of category objects.
"""
get_signals_for_universe_cat_pair(universe: str, category: str)
"""
Function to retrieve all signals belonging to the given universe, category pair.
Args:
universe (str): One of the signal universes. Available options are the "name" fields from the list of universe objects obtained by calling the get_signal_universes method.
category (str): One of the categories of the above universe. Available options are the "name" fields from the list of category objects obtained by calling get_categories_for_universe(universe).
Returns:
JSON list of signal objects.
"""
get_signals_for_universe_cat_pair_id(universe_id: int, category_id: int)
"""
Function to retrieve all signals belonging to the given universe, category pair by id.
Args:
universe_id (int): One of the signal universes. Available options are the "universeId" fields from the list of universe objects obtained by calling the get_signal_universes method.
category_id (int): One of the categories of the above universe. Available options are the "categoryId" fields from the list of category objects obtained by calling get_categories_for_universe_id(universe_id).
Returns:
JSON list of signal objects.
"""
get_market_categories()
"""
Function to retrieve the list of all market categories.
Returns:
JSON list of market category objects.
"""
get_markets_for_market_cat(market_category: str)
"""
Function to retrieve the list of markets corresponding to the passed market category.
Args:
market_category (str): One of the market categories. Available options are the "name" fields from the list of market category objects obtained by calling the get_market_categories method.
Returns:
JSON list of market objects.
"""
get_markets_for_market_cat_id(market_category_id: int)
"""
Function to retrieve the list of markets corresponding to the passed market category id.
Args:
market_category_id (int): One of the market categories. Available options are the "marketCategoryId" fields from the list of market category objects obtained by calling the get_market_categories method.
Returns:
JSON list of market objects.
"""
get_markets_for_signal(signal: str)
"""
Function to retrieve the list of markets corresponding to the passed signal.
Args:
signal (str): One of the signals. Available options are the "name" fields from the list of signals objects obtained by calling the get_signals_catalogue method.
Returns:
JSON list of market objects.
"""
get_markets_for_signal_id(signal_id: int)
"""
Function to retrieve the list of markets corresponding to the passed signal id.
Args:
signal_id (int): One of the signals. Available options are the "signalId" fields from the list of signals objects obtained by calling the get_signals_catalogue method.
Returns:
JSON list of market objects.
"""
get_signals_for_market(market: str)
"""
Function to retrieve the list of signals available for the given market.
Args:
market (str): One of the valid markets. Available options are the "name" fields from the list of market objects obtained by calling the get_all_markets method.
Returns:
JSON list of signal objects.
"""
get_signals_for_market_id(class_id: int)
"""
Function to retrieve the list of signals available for the given market.
Args:
class_id (int): One of the valid markets. Available options are the "classId" fields from the list of market objects obtained by calling the get_all_markets method.
Returns:
JSON list of signal objects.
"""
get_research_types_for_signal_market_pair(signal: str, market: str)
"""
Function to retrieve the list of research types corresponding to the passed signal and market.
Args:
signal (str): One of the signals. Available options are the "name" fields from the list of signal objects obtained by calling the get_signals_catalogue method.
market (str): One of the valid markets for the above signal. Available options are the "name" fields from the list of market objects obtained by calling the get_markets_for_signal(signal) method.
Returns:
JSON list of research type objects.
"""
get_research_types_for_signal_market_pair_id(signal_id: int, market_id: int)
"""
Function to retrieve the list of research types corresponding to the passed signal id and market id.
Args:
signal_id (int): One of the signals. Available options are the "signalId" fields from the list of signal objects obtained by calling the get_signals_catalogue method.
market_id (int): One of the valid markets for the above signal. Available options are the "classId" fields from the list of market objects obtained by calling the get_markets_for_signal_id(signal_id) method.
Returns:
JSON list of research type objects.
"""
get_signal_series(
signal: str,
market: str,
research_type: str,
last_date_only=False,
start_date=None,
end_date=None,
frequency_key=None,
)
"""
Function to retrieve a signal time series.
Args:
signal (str): Options are "name" fields from list of signal objects returned by get_signals_catalogue.
market (str): Options are "name" fields from list of market objects returned by get_markets_for_signal(signal).
research_type (str): Options are "name" fields from list of research type objects returned by get_research_types_for_signal_market_pair(signal, market).
last_date_only (bool, optional): Flag indicating if only the last date of the time series is desired.
start_date (str, optional): Start date of the series in ISO format YYYY-MM-DD.
end_date (str, optional): End date of the series in ISO format YYYY-MM-DD.
frequency_key (str): One of the desired frequencies (None is for all values available, undetermined frequency):
D, (Daily - all days)
WD, (Weekdays)
W_MON, (Weekly data on Mondays)
W_TUE, (Weekly data on Tuesdays)
W_WED, (Weekly data on Wednesdays)
W_THU, (Weekly data on Thursdays)
W_FRI, (Weekly data on Fridays)
W_SAT, (Weekly data on Saturdays)
W_SUN, (Weekly data on Sundays)
M, (Monthly data - end of month)
MS, (Monthly data - start of month)
Q, (Quarterly data - end of quarter)
QS (Quarterly data - start of quarter)
Examples:
>>> client.get_signal_series('Crossborder Flow', 'US', 'Back-test Level', last_date_only=False, start_date='2016-1-1', end_date='2020-10-16')
Returns:
Time series object.
"""
get_signal_series_id(
signal_id: int,
market_id: int,
research_type_id: int,
last_date_only=False,
start_date=None,
end_date=None,
frequency_key=None
)
"""
Function to retrieve a signal time series by ids.
Args:
signal_id (int): Options are "signalId" fields from list of signal objects returned by get_signals_catalogue.
market_id (int): Options are "classId" fields from list of market objects returned by get_markets_for_signal_id(signal_id).
research_type_id (int): Options are "researchTypeId" fields from list of research type objects returned by get_research_types_for_signal_market_pair_id(signal_id, market_id).
last_date_only (bool): Flag indicating if only the last date of the time series is desired.
start_date (str): Start date of the series in ISO format YYYY-MM-DD.
end_date (str): End date of the series in ISO format YYYY-MM-DD.
frequency_key (str): One of the desired frequencies (None is for all values available, undetermined frequency):
D, (Daily - all days)
WD, (Weekdays)
W_MON, (Weekly data on Mondays)
W_TUE, (Weekly data on Tuesdays)
W_WED, (Weekly data on Wednesdays)
W_THU, (Weekly data on Thursdays)
W_FRI, (Weekly data on Fridays)
W_SAT, (Weekly data on Saturdays)
W_SUN, (Weekly data on Sundays)
M, (Monthly data - end of month)
MS, (Monthly data - start of month)
Q, (Quarterly data - end of quarter)
QS (Quarterly data - start of quarter)
Examples:
>>> client.get_signal_series_id(8, 137, 94, last_date_only=False, start_date='2016-1-1', end_date='2020-10-16')
Returns:
Time series object.
"""
json_to_df(json)
"""
Function to convert JSON/JSON list to a pandas.DataFrame object.
Args:
json: The JSON to be converted - this is the format all methods return.
Returns:
The data contained in the JSON cast as a DataFrame.
If the data is a time series, the dataframe will be indexed by datetimes and there
will be a 'values' column containing the value corresponding to each DateTimeIndex.
"""
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
cmqd-1.0.4.tar.gz
(14.4 kB
view details)
Built Distribution
cmqd-1.0.4-py2.py3-none-any.whl
(20.7 kB
view details)
File details
Details for the file cmqd-1.0.4.tar.gz
.
File metadata
- Download URL: cmqd-1.0.4.tar.gz
- Upload date:
- Size: 14.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.4.1 importlib_metadata/3.7.3 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.59.0 CPython/3.9.2
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | bd405b269d26ab7994ce9beccd74d433bee1d5d65877e0346ab8d220156dbbe5 |
|
MD5 | 047cc22b4405ed1a54e57ff9536aa33e |
|
BLAKE2b-256 | c39259f732d6b2a32e4f5015ccf9f935b1fdaf8438ab3cb0d4bd9fe12116c4fd |
File details
Details for the file cmqd-1.0.4-py2.py3-none-any.whl
.
File metadata
- Download URL: cmqd-1.0.4-py2.py3-none-any.whl
- Upload date:
- Size: 20.7 kB
- Tags: Python 2, Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.4.1 importlib_metadata/3.7.3 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.59.0 CPython/3.9.2
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | df9ac60aae505ce5dbb0eafc92523228de0d333c9d0689879541a522fd0fc251 |
|
MD5 | 77d251338b3b0752503e1c14cbac3b62 |
|
BLAKE2b-256 | aa2dcaf8ed3866bb64b208a768e3ccc8298605dc9bc3a5f7cc4dc93ce1282c7e |