diff options
| -rw-r--r-- | python/report_ops/__main__.py | 99 |
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) |
