aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--python/risk/forwards.py6
-rw-r--r--python/risk/trs.py15
-rw-r--r--sql/dawn.sql14
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,