aboutsummaryrefslogtreecommitdiffstats
path: root/python/book_bbg.py
blob: e12646cba93095c79af07138b8084864248ba54b (plain)
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
from serenitas.utils.remote import SftpClient
from trade_dataclasses import Deal, DealType, BbgDeal
import csv
from stat import S_ISREG


def trade_booking_process(file_handle, index, asset_class):
    deal = Deal[DealType(asset_class)]
    for row in csv.DictReader(file_handle):
        line = {"bbg_ticket_id": index, **row}
        trade = deal.from_bbg_line(line)
        trade.stage()
    deal.commit()


def get_bbg_id(name):
    return name.split("_", 1)[1]


if __name__ == "__main__":
    import time

    sftp = SftpClient.from_creds("bbg")
    while True:
        for f in sftp.client.listdir_iter("/"):
            if S_ISREG(f.st_mode):
                if (bbg_id := get_bbg_id(f.filename)) not in BbgDeal._cache:
                    with sftp.client.open(f.filename) as fh:
                        trade_booking_process(fh, bbg_id, f.filename.split("-", 1)[0])
                        BbgDeal._cache[bbg_id] = None

        time.sleep(60)