diff options
Diffstat (limited to 'python')
| -rw-r--r-- | python/strat_cash_realloc.py | 30 |
1 files changed, 11 insertions, 19 deletions
diff --git a/python/strat_cash_realloc.py b/python/strat_cash_realloc.py index 748b8de2..29baf7dc 100644 --- a/python/strat_cash_realloc.py +++ b/python/strat_cash_realloc.py @@ -1,24 +1,21 @@ -from serenitas.utils.db import dbconn +from dataclasses import replace from serenitas.ops.funds import Bowdst from serenitas.ops.trade_dataclasses import WireDeal import datetime from serenitas.analytics.dates import prev_business_day from collateral.common import CASH_STRATEGY_MAPPING, STRATEGY_CASH_MAPPING -from serenitas.utils.misc import rename_keys -def generate_csv(date, conn, fund="BOWDST"): - wire_deals = [] - with conn.cursor() as c: +def generate_csv(date, fund="BOWDST"): + with WireDeal._conn.cursor() as c: c.execute( - "SELECT count(*) FROM wires WHERE trade_date=%s AND fund=%s AND author='auto';", + "SELECT 1 FROM wires WHERE trade_date=%s AND fund=%s AND author='auto'", ( date, fund, ), ) - (count,) = c.fetchone() - if count > 0: + if c.fetchone() is None: return c.execute( "SELECT * FROM list_orphaned_cash(%s, %s) ", @@ -28,17 +25,13 @@ def generate_csv(date, conn, fund="BOWDST"): ), ) for row in c: - if row.strat not in CASH_STRATEGY_MAPPING: - obj = WireDeal(**row._asdict(), action="NEW") - offset = obj.offset(STRATEGY_CASH_MAPPING[obj.folder]) + if row.folder not in CASH_STRATEGY_MAPPING: + obj = WireDeal(**row._asdict()) + offset = replace(obj, folder=STRATEGY_CASH_MAPPING[obj.folder]) obj.stage() offset.stage() - wire_deals.extend([obj, offset]) - if wire_deals: - WireDeal.commit() - for wire in wire_deals: - wire.set_id() - Bowdst.staging_queue.append(wire.to_globeop("NEW")) + for wire in WireDeal.commit(returning=True): + Bowdst.staging_queue.append(wire.to_globeop("NEW")) buf, dest = Bowdst.build_buffer("wire") Bowdst.upload(buf, dest.name) Bowdst().clear() @@ -57,5 +50,4 @@ if __name__ == "__main__": ) args = parser.parse_args() - conn = dbconn("dawndb") - generate_csv(args.workdate, conn) + generate_csv(args.workdate) |
