diff options
Diffstat (limited to 'python/api_quotes/quotes.py')
| -rw-r--r-- | python/api_quotes/quotes.py | 42 |
1 files changed, 39 insertions, 3 deletions
diff --git a/python/api_quotes/quotes.py b/python/api_quotes/quotes.py index 7899529a..38310568 100644 --- a/python/api_quotes/quotes.py +++ b/python/api_quotes/quotes.py @@ -38,9 +38,16 @@ class MarkitQuote(Deal, table_name=None, deal_type=None): } return base_attributes + # Project + # @property + # def message(self): + # return QuoteDetails.from_tradeid(self.msg_id) + @dataclass -class Quote(MarkitQuote, table_name="markit_singlename_quotes", deal_type=None): +class SingleNameQuote( + MarkitQuote, table_name="markit_singlename_quotes", deal_type=None +): quoteid: int msg_id: str quotesource: str @@ -69,12 +76,41 @@ class Quote(MarkitQuote, table_name="markit_singlename_quotes", deal_type=None): d.update(base_attributes | additional_attributes) return cls.from_dict(**d) + +@dataclass +class BondQuote(MarkitQuote, table_name="markit_bond_quotes", deal_type=None): + quoteid: int + msg_id: str + quotesource: str + confidence: int + identifier: str = None + cusip: str = None + bidprice: float = None + bidsize: float = None + askprice: float = None + asksize: float = None + pricelevel: float = None + subtype: str = None + quotetype: str = None + firmness: firmness = None + quotedate: datetime.datetime = None + + @classmethod + def from_markit_line(cls, d): + base_attributes = super().from_markit_line(d) + additional_attributes = { + "identifier": d["internalinstrumentidentifier"], + "pricelevel": d.get("pricelevelnormalized"), + } + d.update(base_attributes | additional_attributes) + return cls.from_dict(**d) + @property def message(self): return QuoteDetails.from_tradeid(self.msg_id) -Quote.init_dbconn(dbconn("serenitasdb")) -Quote._sql_insert = Quote._sql_insert.replace( +MarkitQuote.init_dbconn(dbconn("serenitasdb")) +MarkitQuote._sql_insert = MarkitQuote._sql_insert.replace( "RETURNING *", "ON CONFLICT (quoteid) DO NOTHING RETURNING *" ) |
