aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--python/position.py4
-rw-r--r--python/risk/bonds.py6
-rw-r--r--sql/dawn.sql8
3 files changed, 7 insertions, 11 deletions
diff --git a/python/position.py b/python/position.py
index 3bb6b67b..83bff28f 100644
--- a/python/position.py
+++ b/python/position.py
@@ -18,7 +18,7 @@ def get_list(
):
if workdate:
positions = pd.read_sql_query(
- "SELECT identifier, bbg_type FROM list_positions(%s, %s, %s, %s)",
+ "SELECT identifier, figi, bbg_type FROM list_positions(%s, %s, %s, %s)",
engine,
params=(workdate, asset_class, include_unsettled, fund),
)
@@ -299,7 +299,7 @@ def populate_cashflow_history(engine, session, workdate=None, funds=("SERCGMAST"
secs = get_list(engine, workdate, fund=fund)
for sec in secs.itertuples():
if sec.Index not in securities:
- securities[sec.Index] = sec.identifier
+ securities[sec.Index] = sec.figi
data = retrieve_data(
session,
securities,
diff --git a/python/risk/bonds.py b/python/risk/bonds.py
index 56069b6a..7e0de99a 100644
--- a/python/risk/bonds.py
+++ b/python/risk/bonds.py
@@ -221,14 +221,10 @@ def get_portfolio(date, conn, asset_class: AssetClass, fund="SERCGMAST"):
conn,
params=(date, asset_class.name, fund),
)
- with conn.cursor() as c:
- c.execute("SELECT identifier, figi FROM securities")
- figi_map = {identifier: figi for identifier, figi in c.fetchall()}
- df["figi"] = df["identifier"].replace(figi_map)
if asset_class == AssetClass.CLO:
return df.set_index("figi")
else:
- return df.set_index("cusip")
+ return df.set_index("identifier")
def crt_risk(date, dawn_conn, crt_engine, fund="SERCGMAST"):
diff --git a/sql/dawn.sql b/sql/dawn.sql
index 1c373cb6..486bbad6 100644
--- a/sql/dawn.sql
+++ b/sql/dawn.sql
@@ -939,7 +939,7 @@ CREATE OR REPLACE function risk_positions(p_date date,
(description varchar(32), identifier varchar(12), notional float, price float,
strategy bond_strat, factor float, local_market_value float, usd_market_value float,
curr_cpn float, int_acc float, last_pay_date date, principal_payment float,
-accrued_payment float, last_settle_date date, cusip varchar(9)) AS $$
+accrued_payment float, last_settle_date date, figi varchar(12)) AS $$
BEGIN
RETURN QUERY
SELECT a.description, a.identifier, a.notional, c.price, a.strategy, coalesce(b.factor, 1),
@@ -948,10 +948,10 @@ BEGIN
b.coupon,
a.notional * coalesce(b.factor,1) * fxrate *
yearfrac(case WHEN start_accrued_date>=p_date+1 THEN b.prev_cpn_date ELSE start_accrued_date END, p_date+1, daycount) * b.coupon/100.,
- b.last_pay_date, a.principal_payment, a.accrued_payment, a.last_settle_date, a.cusip
+ b.last_pay_date, a.principal_payment, a.accrued_payment, a.last_settle_date, a.figi
FROM list_positions(p_date, p_assetclass, true, p_fund) a
- LEFT JOIN factors_history(p_date) b USING (identifier)
- LEFT JOIN list_marks(p_date) c USING (identifier)
+ LEFT JOIN factors_history(p_date) b ON a.figi = b.identifier
+ LEFT JOIN list_marks(p_date) c ON a.figi = c.identifier
LEFT JOIN fx_rate(p_date) USING (currency)
ORDER by identifier asc;
END;