diff options
Diffstat (limited to 'python/analytics')
| -rw-r--r-- | python/analytics/utils.py | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/python/analytics/utils.py b/python/analytics/utils.py index 750f4488..acfab1de 100644 --- a/python/analytics/utils.py +++ b/python/analytics/utils.py @@ -173,16 +173,25 @@ def to_TDate(arr: np.ndarray): def get_external_nav(engine, trade_id, value_date=None, trade_type="swaption"): + if trade_type == "swaption": + upfront_query = ( + "CASE when date < settle_date " + "THEN price * notional/100 * (2 * buysell::integer - 1) " + "ELSE 0." + "END" + ) + elif trade_type == "cds": + upfront_query = ( + "CASE WHEN date < upfront_settle_date " "THEN upfront ELSE 0. " "END" + ) query = ( "SELECT date, " "nav, " - "(case when date < settle_date " - "then price * notional/100 * (2 * buysell::integer - 1) " - "else 0." - "end) as upfront FROM external_marks_deriv " + f"({upfront_query}) AS upfront FROM external_marks_deriv " f"LEFT JOIN {trade_type} " "ON cpty_id = identifier WHERE id=%s " ) + if value_date: query += "AND date=%s" r = engine.execute(query, (trade_id, value_date)) |
