aboutsummaryrefslogtreecommitdiffstats
path: root/python/risk
diff options
context:
space:
mode:
Diffstat (limited to 'python/risk')
-rw-r--r--python/risk/indices.py26
1 files changed, 16 insertions, 10 deletions
diff --git a/python/risk/indices.py b/python/risk/indices.py
index 3aaabcf9..8ffe20b2 100644
--- a/python/risk/indices.py
+++ b/python/risk/indices.py
@@ -16,10 +16,11 @@ def get_index_portfolio(
include_strategies: Union[str, None] = None,
exclude_strategies: Union[str, None] = None,
exclude_redcode: Iterable[str] = (),
+ by_strat: bool = True,
**kwargs,
):
sql_str = (
- "SELECT security_id AS redcode, sum(notional) AS notional, maturity "
+ "SELECT security_id AS redcode, security_desc, sum(notional) AS notional, maturity "
"FROM list_cds_positions_by_strat(%s, %s) "
)
params = (d, fund)
@@ -38,22 +39,27 @@ def get_index_portfolio(
params += (exclude_strategies,)
if folder_filter:
sql_str += "WHERE " + " AND ".join(folder_filter)
- sql_str += "GROUP BY security_id, maturity"
+ sql_str += "GROUP BY security_id, security_desc, maturity"
+ if by_strat:
+ sql_str = sql_str.replace("redcode,", "redcode, folder,")
+ sql_str += ", folder"
with conn.cursor() as c:
c.execute(sql_str, params)
trades = [
- CreditIndex(
- redcode=rec.redcode,
- maturity=rec.maturity,
- notional=rec.notional,
- value_date=d,
- freeze_version=True,
+ (
+ CreditIndex(
+ redcode=rec.redcode,
+ maturity=rec.maturity,
+ notional=rec.notional,
+ value_date=d,
+ freeze_version=True,
+ ),
+ (rec.folder if by_strat else "", rec.security_desc),
)
for rec in c
if rec.redcode not in exclude_redcode
]
- trade_ids = [("", f"{t.index_type}{t.series} {t.tenor}") for t in trades]
- portf = Portfolio(trades, trade_ids)
+ portf = Portfolio(*zip(*trades))
portf.mark()
return portf