Ratios#
This module contains different ratios. A ratio is an object that is aimed at comparing a performance of an asset with another one and generally by controlling risk.
We will load a mock data and calculate the information ratio between two plans
from portfolio_plan import Frequency
from portfolio_plan.resource import File
from portfolio_plan import Assets, Weights, Asset, Portfolio, Frequency, Plan
from portfolio_plan.data import example_prices_path
from datetime import datetime
START_DATE = datetime.strptime("2025-01-30", "%Y-%m-%d")
END_DATE = datetime.strptime("2025-03-01", "%Y-%m-%d")
EXAMPLE = example_prices_path()
def create_benchmark_plan():
resource = File(path=EXAMPLE, frequency=Frequency.BDAILY)
assets = Assets(
[Asset("B")],
resource=resource,
)
portfolio = Portfolio(
assets=assets,
weights=Weights(),
name="B"
)
plan = Plan(
portfolio=portfolio,
start_date=START_DATE,
end_date=END_DATE,
)
return plan
def create_plan():
assets = Assets(
[Asset("A")], # We use a single asset for simplicity of the example,
resource=File(path=EXAMPLE, frequency=Frequency.BDAILY)
)
portfolio = Portfolio(
assets=assets,
name="Portfolio",
weights=Weights(),
)
plan = Plan(
portfolio = portfolio,
start_date=START_DATE,
end_date=END_DATE
)
return plan
from portfolio_plan.ratios import InformationRatio
plan = create_plan()
benchmark_plan = create_benchmark_plan()
ir = InformationRatio(plan, benchmark_plan)
ir_returns = ir.period_returns()
ir_returns.data
| open | low | high | close | ||
|---|---|---|---|---|---|
| symbol | date | ||||
| IR: Portfolio-B | 2025-02-28 | 0.52828 | 0.528309 | 0.528312 | 0.528302 |
ir_cumulative_returns = ir_returns.cumulative("IR - Cumulative", check_base=False)
ir_cumulative_returns
---------------------------------------------------------------------------
| CumulativeReturns for period 2025-02-28 00:00:00 to 2025-02-28 00:00:00 |
---------------------------------------------------------------------------
| IR: Portfolio-B |
---------------------------------------------------------------------------
ir_cumulative_returns.data
| CumulativeReturns | open | low | high | close | |
|---|---|---|---|---|---|
| symbol | date | ||||
| IR: Portfolio-B | 2025-02-28 | 1.52828 | 1.528309 | 1.528312 | 1.528302 |