%load_ext autoreload
%autoreload 2
from IPython.display import Markdown
from tulip.analysis.equity_related.analytics import *
from tulip.analysis.equity_related.visualization import *
from tulip.utils.notebook_related import *
from tulip.data.bloomberg import BloombergClient as bb
from tulip.plots import *
from tulip.libraries.signals.cta import calculate_ema_oscillator
from tulip.utils.string_manipulation import c_titleize as titleize
from tulip.constants import MAIN_ASSET_CLASSES
from tqdm import tqdmCTA Signals¶
This is based on a rudimentary signal that is the same for all assets. We will improve it in the future.
market_data = {}
proxy_cta_positioning = {}
for ac, instruments in MAIN_ASSET_CLASSES.items():
for asset, ticker in tqdm(instruments.items(), leave=False):
market_data[asset] = (
bb.bdh(ticker).droplevel(0, axis=1).rename(columns={"PX_LAST": ticker})
)
proxy_cta_positioning[asset] = (
calculate_ema_oscillator(market_data[asset][ticker], i=[2, 3, 4])
.rolling(5)
.mean()
)last_reading = {}
for ac, instruments in MAIN_ASSET_CLASSES.items():
last_reading[ac] = {}
for asset, ticker in instruments.items():
last_reading[ac][asset] = proxy_cta_positioning[asset].iloc[-1]
summary = pd.DataFrame(last_reading).stack().swaplevel(0, 1).sort_index().to_frame()
summary.columns = ["CTA Positioning"]
# summary.style.background_gradient(cmap='RdYlGn', vmin=-1, vmax=1.0)
display_by_columns(
[
summary.loc[ac]
.rename(columns={"CTA Positioning": ac})
.style.background_gradient(cmap="RdYlGn", vmin=-1, vmax=1.0)
for ac in MAIN_ASSET_CLASSES.keys()
]
)Equities¶
# asset_class = "Equities"
# MAIN_ASSET_CLASSES[asset_class]
# asset = "US_Equities"
# plot_lines(
# proxy_cta_positioning[asset],
# title=f"<b>{titleize(asset)} CTA Positioning</b>",
# show_0=True,
# default_y_range=(-1, 1),
# logo=False,
# years_limit=2,
# source=f"Kate Capital. Updated: {proxy_cta_positioning[asset].last_valid_index().strftime('%Y-%m-%d')}",
# figsize=(600, 640),
# )asset_class = "Equities"
for asset in MAIN_ASSET_CLASSES[asset_class]:
plot_lines(
proxy_cta_positioning[asset],
years_limit=2,
title=f"<b>{titleize(asset)} CTA Positioning</b>",
show_0=True,
default_y_range=(-1, 1),
source=f"Kate Capital. Updated: {proxy_cta_positioning[asset].last_valid_index().strftime('%Y-%m-%d')}",
).show()Treasuries¶
asset_class = "Treasuries"
for asset in MAIN_ASSET_CLASSES[asset_class]:
plot_lines(
proxy_cta_positioning[asset],
years_limit=2,
title=f"<b>{titleize(asset)} CTA Positioning</b>",
show_0=True,
default_y_range=(-1, 1),
source=f"Kate Capital. Updated: {proxy_cta_positioning[asset].last_valid_index().strftime('%Y-%m-%d')}",
).show()Commodities¶
asset_class = "Commodities"
for asset in MAIN_ASSET_CLASSES[asset_class]:
plot_lines(
proxy_cta_positioning[asset],
years_limit=2,
title=f"<b>{titleize(asset)} CTA Positioning</b>",
show_0=True,
default_y_range=(-1, 1),
source=f"Kate Capital. Updated: {proxy_cta_positioning[asset].last_valid_index().strftime('%Y-%m-%d')}",
).show()Currencies¶
asset_class = "Currencies"
for asset in MAIN_ASSET_CLASSES[asset_class]:
plot_lines(
proxy_cta_positioning[asset],
years_limit=2,
title=f"<b>{titleize(asset)} CTA Positioning</b>",
show_0=True,
default_y_range=(-1, 1),
source=f"Kate Capital. Updated: {proxy_cta_positioning[asset].last_valid_index().strftime('%Y-%m-%d')}",
).show()from tulip_mania.notebook_related import notebook_updated
notebook_updated()