sf_quant.performance.generate_leverage_from_weights#
- sf_quant.performance.generate_leverage_from_weights(weights: PortfolioSchema) LeverageSchema#
Calculate leverage from portfolio weights.
Parameters#
- weights (PortfolioSchema): Portfolio weights validated against PortfolioSchema.
Must include the following columns: -
date(date): The observation date. -barrid(str): Asset identifier. -weight(float): Position weight.
Returns#
- LeverageSchema: A validated DataFrame with columns:
date(date): The observation date.leverage(float): Sum of absolute weights.
Notes#
Leverage is calculated as the sum of absolute weights per date.
Leverage = 1.0 means fully invested with no shorting.
Leverage > 1.0 indicates use of margin or shorting.
Examples#
>>> import polars as pl >>> import sf_quant.performance as sfp >>> import datetime as dt >>> weights = pl.DataFrame( ... { ... 'date': [dt.date(2024, 1, 2), dt.date(2024, 1, 2), dt.date(2024, 1, 3), dt.date(2024, 1, 3)], ... 'barrid': ['USA06Z1', 'USA0771', 'USA06Z1', 'USA0771'], ... 'weight': [0.5, 0.5, 0.3, 0.7] ... } ... ) >>> leverage = sfp.generate_leverage_from_weights(weights) >>> leverage shape: (2, 2) ┌────────────┬──────────┐ │ date ┆ leverage │ │ --- ┆ --- │ │ date ┆ f64 │ ╞════════════╪══════════╡ │ 2024-01-02 ┆ 1.0 │ │ 2024-01-03 ┆ 1.0 │ └────────────┴──────────┘