aboutsummaryrefslogtreecommitdiffstats
path: root/python/trade_dataclasses.py
diff options
context:
space:
mode:
Diffstat (limited to 'python/trade_dataclasses.py')
-rw-r--r--python/trade_dataclasses.py15
1 files changed, 11 insertions, 4 deletions
diff --git a/python/trade_dataclasses.py b/python/trade_dataclasses.py
index 6310dc40..a33bfd52 100644
--- a/python/trade_dataclasses.py
+++ b/python/trade_dataclasses.py
@@ -2,6 +2,7 @@ from dataclasses import dataclass, field, fields
from typing import ClassVar
from decimal import Decimal
from typing import Literal
+import csv
import datetime
from enum import Enum
from psycopg2.extensions import register_adapter, AsIs
@@ -238,6 +239,14 @@ class BbgDeal:
cls._bbg_insert_queue.clear()
cls._insert_queue.clear()
+ @classmethod
+ def process(cls, file_handle, index):
+ for row in csv.DictReader(file_handle):
+ line = {"bbg_ticket_id": index, **row}
+ trade = cls.from_bbg_line(line)
+ trade.stage()
+ cls.commit()
+
@dataclass
class CDSDeal(
@@ -315,8 +324,7 @@ class CDSDeal(
@classmethod
def from_bbg_line(cls, line: dict):
- values = list(line.values())
- cls._bbg_insert_queue.append(values)
+ cls._bbg_insert_queue.append(list(line.values()))
return cls(
fund=_funds[line["Account"]],
folder="*",
@@ -358,8 +366,7 @@ class BondDeal(BbgDeal, Deal, deal_type=DealType.Bond, table_name="bonds"):
@classmethod
def from_bbg_line(cls, line: dict):
- values = list(line.values())
- cls._bbg_insert_queue.append(values)
+ cls._bbg_insert_queue.append(list(line(values)))
return cls(
faceamount=Decimal(line["Quantity"]),
price=Decimal(line["Price (Dec)"]),