aboutsummaryrefslogtreecommitdiffstats
path: root/python/report_ops/__main__.py
diff options
context:
space:
mode:
Diffstat (limited to 'python/report_ops/__main__.py')
-rw-r--r--python/report_ops/__main__.py99
1 files changed, 99 insertions, 0 deletions
diff --git a/python/report_ops/__main__.py b/python/report_ops/__main__.py
new file mode 100644
index 00000000..9dec4db5
--- /dev/null
+++ b/python/report_ops/__main__.py
@@ -0,0 +1,99 @@
+from serenitas.analytics.dates import prev_business_day
+import logging
+import argparse
+import datetime
+from .sma import IsoselSMA, BowdstSMA
+from .cash import NTCashReport, UMBCashReport, BNYCashReport
+from .admin import AccruedReport, AllReport
+from .wires import BowdstWire, NTWire
+from .custodians import BBH, UMB
+
+logger = logging.getLogger(__name__)
+
+parser = argparse.ArgumentParser()
+
+parser.add_argument(
+ "-s",
+ "--sma_positions",
+ action="store_true",
+ help="upload sma positions to hedgemark",
+)
+parser.add_argument(
+ "-c", "--cash_reports", action="store_true", help="process cash reports to database"
+)
+parser.add_argument(
+ "-i",
+ "--isosel_reports",
+ action="store_true",
+ help="download isosel reports to database",
+)
+parser.add_argument(
+ "-w", "--wire_reports", action="store_true", help="download wires to db"
+)
+parser.add_argument(
+ "-sc",
+ "--send_to_custodians",
+ action="store_true",
+ help="upload trade files to notify custodians",
+)
+parser.add_argument(
+ "-n", "--no-upload", action="store_true", help="do not upload, just create files"
+)
+parser.add_argument(
+ "date",
+ nargs="?",
+ type=datetime.date.fromisoformat,
+ default=datetime.date.today(),
+)
+
+args = parser.parse_args()
+
+cob = date = prev_business_day(args.date)
+
+if args.sma_positions:
+ for sma_cls in (
+ IsoselSMA,
+ BowdstSMA,
+ ):
+ sma = sma_cls(cob)
+ try:
+ sma.email_positions()
+ except ValueError as e:
+ logger.warning(e)
+
+if args.cash_reports:
+ for report_cls in (
+ NTCashReport,
+ UMBCashReport,
+ BNYCashReport,
+ ):
+ report = report_cls(args.date)
+ try:
+ report.to_db()
+ except ValueError as e:
+ logger.warning(e)
+
+if args.isosel_reports:
+ for report_cls in (
+ AccruedReport,
+ AllReport,
+ ):
+ try:
+ report_cls.to_db(cob)
+ except ValueError as e:
+ logger.info(e)
+
+if args.wire_reports:
+ for wire_report in (BowdstWire, NTWire):
+ try:
+ wire_report.to_db(args.date)
+ except ValueError as e:
+ logger.info(e)
+
+if args.send_to_custodians:
+ for custodian_cls in (BBH, UMB):
+ custodian = custodian_cls(args.date)
+ try:
+ custodian.upload_to_custodian(not args.no_upload)
+ except ValueError as e:
+ logger.info(e)