Source code for tradeexecutor.strategy.chart.standard.volatility

"""Volatility across pairs in the universe."""

import pandas as pd
from plotly.graph_objects import Figure
import plotly.express as px


from tradeexecutor.strategy.chart.definition import ChartInput


[docs]def volatility_benchmark( input: ChartInput, avg_volatility: str = "avg_volatility", ) -> Figure: """Render historical volatility for some pairs based on the provided volatility indicator name.""" assert input.pairs and len(input.pairs) > 0, "No pairs provided in the input." indicator_data= input.strategy_input_indicators avg_volatility = indicator_data.get_indicator_series(avg_volatility) volatilities = { "avg_volatility": avg_volatility, } max_displayed_vol = avg_volatility.max() * 3 # TODO: Plotly refuses correctly to plot the third y-axis for pair in input.pairs: symbol = pair.base.token_symbol volatility = indicator_data.get_indicator_series("volatility", pair=pair) volatility = volatility.clip(upper=max_displayed_vol) volatilities[symbol] = volatility volatility_df = pd.DataFrame(volatilities) fig = px.line(volatility_df) return fig