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.py31
1 files changed, 5 insertions, 26 deletions
diff --git a/python/strat_cash_realloc.py b/python/strat_cash_realloc.py
index bbe7bf89..2683133f 100644
--- a/python/strat_cash_realloc.py
+++ b/python/strat_cash_realloc.py
@@ -1,39 +1,18 @@
from serenitas.utils.db import dbconn
-from serenitas.utils.env import DAILY_DIR
from ops.funds import Fund
import datetime
-import csv
-from io import StringIO
from serenitas.analytics.dates import prev_business_day
-from serenitas.utils.remote import SftpClient
from collateral.common import CASH_STRATEGY_MAPPING, STRATEGY_CASH_MAPPING
from serenitas.utils.misc import rename_keys
-from csv_headers.globeop_upload import HEADERS
-
-
-def process_upload(trades):
- buf = StringIO()
- csvwriter = csv.writer(buf)
- headers = HEADERS["wire"]
- csvwriter.writerow(headers)
- csvwriter.writerows(trades)
- buf = buf.getvalue().encode()
- dest = Fund["bowdst"].get_filepath(DAILY_DIR, "wire")
- dest.parent.mkdir(exist_ok=True)
- dest.write_bytes(buf)
- sftp = SftpClient.from_creds("hm_globeop")
- sftp.client.chdir("incoming")
- sftp.put(buf, dest.name)
def generate_csv(date, conn):
- headers = HEADERS["wire"]
+ bowdst = Fund["BOWDST"]()
with conn.cursor() as c, conn.cursor() as d:
c.execute(
"SELECT vr.*, accounts2.custodian, accounts2.cp_code, pfm.folder AS dirty_strat FROM (SELECT sum(endqty) AS endqty, port, strat, custacctname, invid FROM valuation_reports v WHERE periodenddate =%s AND fund='BOWDST' AND invid IN ('USD', 'EUR') AND port NOT IN ('GFS_HELPER_BUSINESS_UNIT', 'CASH') GROUP BY (port, strat,custacctname, invid) HAVING sum(endqty) !=0) vr LEFT JOIN accounts2 ON custacctname=cash_account LEFT JOIN portfolio_folder_mapping pfm ON vr.strat::text=pfm.clean_folder where strat is not NULL;",
(date,),
)
- trades = []
for row in c:
if row.strat not in CASH_STRATEGY_MAPPING.keys():
d.execute(
@@ -80,11 +59,11 @@ def generate_csv(date, conn):
offset["Deal Id"] = obj["Deal Id"] + "_O"
offset["Amount"] = -obj["Amount"]
offset["Folder"] = STRATEGY_CASH_MAPPING[obj["Folder"]]
- trades.append([obj.get(h, None) for h in headers])
- trades.append([offset.get(h, None) for h in headers])
+ bowdst.staging_queue.extend([obj, offset])
conn.commit()
- if trades:
- process_upload(trades)
+ if bowdst.staging_queue:
+ buf, dest = bowdst.build_buffer("wire")
+ bowdst.upload(buf, dest)
if __name__ == "__main__":