diff options
| -rw-r--r-- | python/risk/forwards.py | 6 | ||||
| -rw-r--r-- | python/risk/trs.py | 15 | ||||
| -rw-r--r-- | sql/dawn.sql | 14 |
3 files changed, 32 insertions, 3 deletions
diff --git a/python/risk/forwards.py b/python/risk/forwards.py index 727551b6..9630127e 100644 --- a/python/risk/forwards.py +++ b/python/risk/forwards.py @@ -1,13 +1,13 @@ -from serenitas.analytics import Portfolio, FxForward +from serenitas.analytics.api import Portfolio, FxForward import logging logger = logging.getLogger(__name__) def get_forward_portfolio(date, conn, fund="SERCGMAST", **kwargs): - sql_str = "SELECT dealid FROM spots where settle_date > %s and fund = %s" + sql_str = "SELECT dealid FROM forwards WHERE settle_date > %s AND trade_date <= %s AND fund = %s" with conn.cursor() as c: - c.execute(sql_str, (date, fund)) + c.execute(sql_str, (date, date, fund)) trade_ids = [tid for (tid,) in c] portf = Portfolio([FxForward.from_tradeid(tid) for tid in trade_ids], trade_ids) diff --git a/python/risk/trs.py b/python/risk/trs.py new file mode 100644 index 00000000..59b9ee35 --- /dev/null +++ b/python/risk/trs.py @@ -0,0 +1,15 @@ +from serenitas.analytics.api import Portfolio, TRS +import logging + +logger = logging.getLogger(__name__) + + +def get_trs_portfolio(date, conn, fund="SERCGMAST", **kwargs): + sql_str = "SELECT dealid FROM trs WHERE trade_date <= %s AND maturity_date > %s AND fund = %s" + with conn.cursor() as c: + c.execute(sql_str, (date, fund)) + trade_ids = [tid for (tid,) in c] + + portf = Portfolio([TRS.from_tradeid(tid) for tid in trade_ids], trade_ids) + portf.value_date = date + return portf diff --git a/sql/dawn.sql b/sql/dawn.sql index 295e4d08..1ee89080 100644 --- a/sql/dawn.sql +++ b/sql/dawn.sql @@ -611,6 +611,20 @@ CREATE TABLE fx_swaps ( bbg_ticket_id text UNIQUE REFERENCES fx_tickets(bbg_ticket_id), ); +CREATE OR REPLACE VIEW forwards AS + SELECT UNNEST(ARRAY[dealid || '_near', dealid || '_far']) AS dealid, trade_date, unnest(ARRAY[near_settle_date, far_settle_date]) AS settle_date, + fund, + portfolio, + folder, + cp_code, + UNNEST(ARRAY[near_buy_currency, far_buy_currency]) AS buy_currency, + UNNEST(ARRAY[near_sell_currency, far_sell_currency]) AS sell_currency, + UNNEST(ARRAY[near_buy_amount, far_buy_amount]) AS buy_amount, + UNNEST(ARRAY[near_sell_amount, far_sell_amount]) AS sell_amount, + UNNEST(ARRAY[near_cpty_id, far_cpty_id]) AS cpty_id + FROM fx_swaps + UNION + SELECT dealid, trade_date, settle_date, fund, portfolio, folder, cp_code, buy_currency, sell_currency, buy_amount, sell_amount, cpty_id FROM spots; CREATE TABLE terminations ( id int GENERATED BY default as identity primary KEY, |
