Source code for macrosynergy.panel.view_metrics

"""
Function for visualising the `eop_lag`, `mop_lag` or `grading` metrics for a given set
of cross sections and extended categories.
"""

import pandas as pd

from typing import List, Tuple, Optional
from macrosynergy.management.simulate import make_test_df

import macrosynergy.visuals as msv


[docs]def view_metrics( df: pd.DataFrame, xcat: str, cids: Optional[List[str]] = None, start: Optional[str] = None, end: Optional[str] = None, freq: str = "M", agg: str = "mean", metric: str = "eop_lag", title: Optional[str] = None, figsize: Optional[Tuple[float]] = (14, None), footnote: Optional[str] = None, footnote_fontsize: int = 9, ) -> None: """ A function to visualise the `eop_lag`, `mop_lag` or `grading` metrics for a given JPMaQS dataset. It generates a heatmap, where the x-axis is the observation date, the y-axis is the ticker, and the colour is the lag value. Parameters ---------- df : ~pandas.Dataframe standardized DataFrame with the necessary columns: 'cid', 'xcat', 'real_date' and 'grading', 'eop_lag' or 'mop_lag'. xcat : str extended category whose lags are to be visualized. cids : List[str] cross sections to visualize. Default is all in DataFrame. start : str earliest date in ISO format. Default is earliest available. end : str latest date in ISO format. Default is latest available. metric : str name of metric to be visualized. Must be "eop_lag" (default) "mop_lag" or "grading". freq : str frequency of data. Must be one of "D", "W", "M", "Q", "A". Default is "M". agg : str aggregation method. Must be one of "mean" (default), "median", "min", "max", "first" or "last". title : str string of chart title; if none given default title is printed. figsize : Tuple[float] Tuple (w, h) of width and height of graph. Default is None, meaning it is set in accordance with df. footnote : str Optional text shown at the bottom-left of the figure canvas. footnote_fontsize : int Font size of the footnote. Default is 9. Raises ------ TypeError if any of the inputs are of the wrong type. ValueError if any of the inputs are semantically incorrect. Returns ------- None None """ msv.view_metrics( df=df, xcat=xcat, cids=cids, start=start, end=end, freq=freq, agg=agg, metric=metric, title=title, figsize=figsize, footnote=footnote, footnote_fontsize=footnote_fontsize, )
if __name__ == "__main__": test_cids: List[str] = ["USD", "EUR", "GBP"] test_xcats: List[str] = ["FX", "IR"] dfE: pd.DataFrame = make_test_df( cids=test_cids, xcats=test_xcats, style="sharp-hill" ) dfM: pd.DataFrame = make_test_df( cids=test_cids, xcats=test_xcats, style="four-bit-sine" ) dfG: pd.DataFrame = make_test_df(cids=test_cids, xcats=test_xcats, style="sine") dfE.rename(columns={"value": "eop_lag"}, inplace=True) dfM.rename(columns={"value": "mop_lag"}, inplace=True) dfG.rename(columns={"value": "grading"}, inplace=True) mergeon = ["cid", "xcat", "real_date"] dfx: pd.DataFrame = pd.merge(pd.merge(dfE, dfM, on=mergeon), dfG, on=mergeon) view_metrics( df=dfx, xcat="FX", footnote="JPMaQS data" ) view_metrics( df=dfx, xcat="IR", metric="mop_lag", ) view_metrics( df=dfx, xcat="IR", metric="grading", )