1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
|
import argparse
import datetime
from serenitas.ops.trade_dataclasses import BondDeal
from serenitas.ops.funds import UMB
def upload_to_umb(trade_date, upload):
sql_query = (
"SELECT bonds.*, bond_allocation.notional, fund, custodian, "
"cash_account, "
"counterparties.name, dtc_number "
"FROM bonds "
"INNER JOIN bond_allocation ON bond_allocation.tradeid=bonds.id "
"INNER JOIN accounts USING (code) "
"INNER JOIN counterparties ON counterparties.code = bonds.cp_code "
"WHERE fund= %s and trade_date = %s "
)
with BondDeal._conn.cursor() as c:
c.execute(
sql_query,
(
"SERCGMAST",
args.trade_date,
),
)
for row in c:
UMB.stage(row._asdict(), trade_type="bond", redis_pipeline=None)
buf, dest = UMB.build_buffer("bond")
if upload:
UMB.upload(buf, dest)
if __name__ == "__main__":
parser = argparse.ArgumentParser()
parser.add_argument(
"trade_date",
type=datetime.date.fromisoformat,
default=datetime.date.today(),
nargs="?",
)
parser.add_argument(
"-n",
"--no-upload",
action="store_true",
help="do not upload just drop in the daily directory",
default=False,
)
args = parser.parse_args()
upload_to_umb(args.trade_date, not args.no_upload)
|