Skip to content

Commit 57402e9

Browse files
ADD: Add synthetic publisher for off-market trades
1 parent 5dde5b8 commit 57402e9

File tree

2 files changed

+36
-0
lines changed

2 files changed

+36
-0
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
- Added optional `heartbeat_interval_s` parameter to `Live` client for configuring the
77
interval at which the gateway will send heartbeat records
88
- Upgraded `databento-dbn` to 0.18.0
9+
- Added new off-market publisher values for `IFEU.IMPACT` and `NDEX.IMPACT`
910

1011
#### Breaking changes
1112
- Renamed `CbboMsg` to `CBBOMsg`.

databento/common/publishers.py

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,8 @@ class Venue(StringyMixin, str, Enum):
100100
MIAX Sapphire.
101101
LTSE
102102
Long-Term Stock Exchange, Inc..
103+
XOFF
104+
Off-Exchange Transactions - Listed Instruments.
103105
104106
"""
105107

@@ -145,6 +147,7 @@ class Venue(StringyMixin, str, Enum):
145147
DBEQ = "DBEQ"
146148
SPHR = "SPHR"
147149
LTSE = "LTSE"
150+
XOFF = "XOFF"
148151

149152
@classmethod
150153
def from_int(cls, value: int) -> Venue:
@@ -235,6 +238,8 @@ def from_int(cls, value: int) -> Venue:
235238
return Venue.SPHR
236239
if value == 42:
237240
return Venue.LTSE
241+
if value == 43:
242+
return Venue.XOFF
238243
raise ValueError(f"Integer value {value} does not correspond with any Venue variant")
239244

240245
def to_int(self) -> int:
@@ -325,6 +330,8 @@ def to_int(self) -> int:
325330
return 41
326331
if self == Venue.LTSE:
327332
return 42
333+
if self == Venue.XOFF:
334+
return 43
328335
raise ValueError("Invalid Venue")
329336

330337
@property
@@ -416,6 +423,8 @@ def description(self) -> str:
416423
return "MIAX Sapphire"
417424
if self == Venue.LTSE:
418425
return "Long-Term Stock Exchange, Inc."
426+
if self == Venue.XOFF:
427+
return "Off-Exchange Transactions - Listed Instruments"
419428
raise ValueError("Unexpected Venue value")
420429

421430

@@ -901,6 +910,10 @@ class Publisher(StringyMixin, str, Enum):
901910
Nasdaq Basic - FINRA/Nasdaq TRF Carteret.
902911
XNAS_BASIC_FINC
903912
Nasdaq Basic - FINRA/Nasdaq TRF Chicago.
913+
IFEU_IMPACT_XOFF
914+
ICE Futures Europe - Off-Market Trades.
915+
NDEX_IMPACT_XOFF
916+
ICE Endex - Off-Market Trades.
904917
905918
"""
906919

@@ -987,6 +1000,8 @@ class Publisher(StringyMixin, str, Enum):
9871000
XNAS_BASIC_XNAS = "XNAS.BASIC.XNAS"
9881001
XNAS_BASIC_FINN = "XNAS.BASIC.FINN"
9891002
XNAS_BASIC_FINC = "XNAS.BASIC.FINC"
1003+
IFEU_IMPACT_XOFF = "IFEU.IMPACT.XOFF"
1004+
NDEX_IMPACT_XOFF = "NDEX.IMPACT.XOFF"
9901005

9911006
@classmethod
9921007
def from_int(cls, value: int) -> Publisher:
@@ -1159,6 +1174,10 @@ def from_int(cls, value: int) -> Publisher:
11591174
return Publisher.XNAS_BASIC_FINN
11601175
if value == 83:
11611176
return Publisher.XNAS_BASIC_FINC
1177+
if value == 84:
1178+
return Publisher.IFEU_IMPACT_XOFF
1179+
if value == 85:
1180+
return Publisher.NDEX_IMPACT_XOFF
11621181
raise ValueError(f"Integer value {value} does not correspond with any Publisher variant")
11631182

11641183
def to_int(self) -> int:
@@ -1331,6 +1350,10 @@ def to_int(self) -> int:
13311350
return 82
13321351
if self == Publisher.XNAS_BASIC_FINC:
13331352
return 83
1353+
if self == Publisher.IFEU_IMPACT_XOFF:
1354+
return 84
1355+
if self == Publisher.NDEX_IMPACT_XOFF:
1356+
return 85
13341357
raise ValueError("Invalid Publisher")
13351358

13361359
@property
@@ -1504,6 +1527,10 @@ def venue(self) -> Venue:
15041527
return Venue.FINN
15051528
if self == Publisher.XNAS_BASIC_FINC:
15061529
return Venue.FINC
1530+
if self == Publisher.IFEU_IMPACT_XOFF:
1531+
return Venue.XOFF
1532+
if self == Publisher.NDEX_IMPACT_XOFF:
1533+
return Venue.XOFF
15071534
raise ValueError("Unexpected Publisher value")
15081535

15091536
@property
@@ -1677,6 +1704,10 @@ def dataset(self) -> Dataset:
16771704
return Dataset.XNAS_BASIC
16781705
if self == Publisher.XNAS_BASIC_FINC:
16791706
return Dataset.XNAS_BASIC
1707+
if self == Publisher.IFEU_IMPACT_XOFF:
1708+
return Dataset.IFEU_IMPACT
1709+
if self == Publisher.NDEX_IMPACT_XOFF:
1710+
return Dataset.NDEX_IMPACT
16801711
raise ValueError("Unexpected Publisher value")
16811712

16821713
@property
@@ -1850,4 +1881,8 @@ def description(self) -> str:
18501881
return "Nasdaq Basic - FINRA/Nasdaq TRF Carteret"
18511882
if self == Publisher.XNAS_BASIC_FINC:
18521883
return "Nasdaq Basic - FINRA/Nasdaq TRF Chicago"
1884+
if self == Publisher.IFEU_IMPACT_XOFF:
1885+
return "ICE Futures Europe - Off-Market Trades"
1886+
if self == Publisher.NDEX_IMPACT_XOFF:
1887+
return "ICE Endex - Off-Market Trades"
18531888
raise ValueError("Unexpected Publisher value")

0 commit comments

Comments
 (0)