aboutsummaryrefslogtreecommitdiffstats
path: root/python/api_quotes/quotes.py
diff options
context:
space:
mode:
Diffstat (limited to 'python/api_quotes/quotes.py')
-rw-r--r--python/api_quotes/quotes.py46
1 files changed, 46 insertions, 0 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)