aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--python/api_quotes/quotes.py46
-rw-r--r--sql/serenitasdb.sql4
2 files changed, 47 insertions, 3 deletions
diff --git a/python/api_quotes/quotes.py b/python/api_quotes/quotes.py
new file mode 100644
index 00000000..5d3cf8cf
--- /dev/null
+++ b/python/api_quotes/quotes.py
@@ -0,0 +1,46 @@
+from serenitas.ops.trade_dataclasses import Deal
+from dataclasses import dataclass, field
+import datetime
+
+
+@dataclass
+class QuoteDetails(Deal, table="markit_quote_details", deal_type=None):
+ quotetime: datetime
+ quote_source: str
+ id: int
+ sender: str = None
+
+
+@dataclass
+class SNCdsQuote(Deal, table="sn_cds_quotes", deal_type=None):
+ msg_id: id
+ redcode: str
+ ticker: str
+ maturity: datetime.date
+ bid_spread: float
+ bid_upfront: float
+ bid_size: float
+ ask_spread: float
+ ask_upfront: float
+ ask_size: float
+
+ @classmethod
+ def from_markit_line(cls, line):
+ return cls(
+ msg_id=line["message"]["id"],
+ redcode=line["redCode"],
+ ticker=line["ticker"],
+ maturity=datetime.date(
+ line["maturityYear"], line["maturityMonth"], line["maturityDay"]
+ ),
+ bid_spread=line["bidConventionalSpread"],
+ bid_upfront=line["bidUpfront"],
+ bid_size=line["bidSize"],
+ ask_spread=line["askConventionalSpread"],
+ ask_upfront=line["askUpfront"],
+ ask_size=line["askSize"],
+ )
+
+ @property
+ def parent(self):
+ return QuoteDetails.from_tradeid(self.msg_id)
diff --git a/sql/serenitasdb.sql b/sql/serenitasdb.sql
index 4fdd41ce..5cb8f4e2 100644
--- a/sql/serenitasdb.sql
+++ b/sql/serenitasdb.sql
@@ -1235,10 +1235,8 @@ CREATE TABLE dtcc_corrections(
correction bytea)
CREATE TABLE markit_quote_details (
- id serial primary key,
+ id int8 primary key,
quotetime timestamptz NULL,
quote_source varchar(4) NULL,
- msg_id int8 NULL,
sender text NULL,
- CONSTRAINT markit_quote_details_unique UNIQUE (msg_id)
); \ No newline at end of file