aboutsummaryrefslogtreecommitdiffstats
path: root/python/strat_cash_realloc.py
diff options
context:
space:
mode:
Diffstat (limited to 'python/strat_cash_realloc.py')
-rw-r--r--python/strat_cash_realloc.py58
1 files changed, 0 insertions, 58 deletions
diff --git a/python/strat_cash_realloc.py b/python/strat_cash_realloc.py
deleted file mode 100644
index 3727210c..00000000
--- a/python/strat_cash_realloc.py
+++ /dev/null
@@ -1,58 +0,0 @@
-from dataclasses import replace
-from serenitas.ops.funds import Service
-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
-
-
-def generate_csv(date, fund):
- service = Service[fund]
- with WireDeal._conn.cursor() as c:
- c.execute(
- "SELECT 1 FROM wires WHERE trade_date=%s AND fund=%s AND author='auto'",
- (
- date,
- fund,
- ),
- )
- if c.fetchone():
- return
- c.execute(
- "SELECT * FROM list_orphaned_cash(%s, %s) WHERE abs(amount) > 1",
- (
- date,
- fund,
- ),
- )
- for row in c:
- if row.folder not in CASH_STRATEGY_MAPPING:
- obj = WireDeal(**row._asdict())
- offset = replace(
- obj, folder=STRATEGY_CASH_MAPPING[obj.folder], amount=-obj.amount
- )
- obj.stage()
- offset.stage()
- if not WireDeal._insert_queue:
- return
- for wire in WireDeal.commit(returning=True):
- service.push_trade(wire, "NEW")
- buf, dest = service.build_buffer("wire")
- service.upload(buf, dest.name)
- service().clear()
-
-
-if __name__ == "__main__":
- import argparse
-
- parser = argparse.ArgumentParser()
- parser.add_argument(
- "workdate",
- nargs="?",
- type=datetime.date.fromisoformat,
- default=prev_business_day(datetime.date.today()),
- help="working date",
- )
- args = parser.parse_args()
-
- generate_csv(args.workdate, "BOWDST")