import datetime from analytics import Portfolio, CreditIndex from psycopg2.extensions import connection from typing import Tuple def get_index_portfolio( d: datetime.date, conn: connection, strategies: Tuple[str] = None, **kwargs ): sql_str = ( "SELECT security_id AS redcode, notional, maturity " "FROM list_cds_positions_by_strat(%s) " ) params = (d,) if strategies is not None: sql_str += "WHERE folder in %s" params += (strategies,) with conn.cursor() as c: c.execute(sql_str, params) trades = [ CreditIndex( redcode=rec.redcode, maturity=rec.maturity, notional=rec.notional, value_date=d, ) for rec in c ] portf = Portfolio(trades) portf.mark() return portf