aboutsummaryrefslogtreecommitdiffstats
path: root/python/risk/indices.py
blob: 02aabb5ecde1316783c6df2968b7ae12e612473c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
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