diff options
Diffstat (limited to 'python/innocap_bond_setts.py')
| -rw-r--r-- | python/innocap_bond_setts.py | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/python/innocap_bond_setts.py b/python/innocap_bond_setts.py new file mode 100644 index 00000000..203023c8 --- /dev/null +++ b/python/innocap_bond_setts.py @@ -0,0 +1,57 @@ +from serenitas.analytics.dates import prev_business_day +from serenitas.utils.db import dbconn +from serenitas.utils.exchange import ExchangeMessage +import datetime +import logging + +_recipients = { + "ISOSEL": ( + "simon.oreilly@innocap.com", + "margincalls@innocapglobal.com", + ), +} + + +def _formatting(payment_values): + if not payment_values: + return None + else: + return "\n".join( + f"\t* {settle_date}: {amount:,.2f} {currency}" + for settle_date, (amount, currency) in payment_values.items() + ) + + +def payment_values(ped, conn, fund): + sql_str = "SELECT settle_date, currency, sum(payment_amount) as payment_amount FROM payment_settlements ps2 WHERE fund=%s AND asset_class='bond' AND %s < (settle_date + INTERVAL '5' DAY) group by settle_date, currency;" + with conn.cursor() as c: + c.execute(sql_str, (fund, ped)) + return _formatting( + {row.settle_date: (row.payment_amount, row.currency) for row in c} + ) + + +if __name__ == "__main__": + import argparse + + parser = argparse.ArgumentParser() + parser.add_argument( + "date", + nargs="?", + type=datetime.date.fromisoformat, + default=datetime.date.today(), + help="working date", + ) + args = parser.parse_args() + logger = logging.getLogger(__name__) + conn = dbconn("dawndb") + em = ExchangeMessage() + for fund in ("ISOSEL",): + if vals := payment_values(args.date, conn, fund): + em.send_email( + f"Payment Settlements Bond NT: {fund} {args.date}", + "Good morning, \n\nWe have the following amounts settling in the next few days:\n\n" + + vals, + to_recipients=_recipients[fund], + cc_recipients=("Selene-Ops@lmcg.com",), + ) |
