Skip to content

Commit c27a58f

Browse files
ADD: Add synthetic publisher for off-market trades
1 parent c9e408d commit c27a58f

File tree

3 files changed

+37
-0
lines changed

3 files changed

+37
-0
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
- Added new `UncrossingPrice` `StatType` variant
1212
- Added new publisher values for `XNAS.BASIC`
1313
- Added `SetDataset(Dataset)` overload to `LiveBuilder`
14+
- Added new off-market publisher values for `IFEU.IMPACT` and `NDEX.IMPACT`
1415

1516
### Breaking changes
1617
- Added `heartbeat_interval` parameter to the `Live` constructors

include/databento/publishers.hpp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,8 @@ enum class Venue : std::uint16_t {
9191
Sphr = 41,
9292
// Long-Term Stock Exchange, Inc.
9393
Ltse = 42,
94+
// Off-Exchange Transactions - Listed Instruments
95+
Xoff = 43,
9496
};
9597

9698
// A source of data.
@@ -327,6 +329,10 @@ enum class Publisher : std::uint16_t {
327329
XnasBasicFinn = 82,
328330
// Nasdaq Basic - FINRA/Nasdaq TRF Chicago
329331
XnasBasicFinc = 83,
332+
// ICE Futures Europe - Off-Market Trades
333+
IfeuImpactXoff = 84,
334+
// ICE Endex - Off-Market Trades
335+
NdexImpactXoff = 85,
330336
};
331337

332338
// Get a Publisher's Venue.

src/publishers.cpp

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -137,6 +137,9 @@ const char* ToString(Venue venue) {
137137
case Venue::Ltse: {
138138
return "LTSE";
139139
}
140+
case Venue::Xoff: {
141+
return "XOFF";
142+
}
140143
default: {
141144
return "Unknown";
142145
}
@@ -276,6 +279,9 @@ Venue FromString(const std::string& str) {
276279
if (str == "LTSE") {
277280
return Venue::Ltse;
278281
}
282+
if (str == "XOFF") {
283+
return Venue::Xoff;
284+
}
279285
throw InvalidArgumentError{"FromString<Venue>", "str",
280286
"unknown value '" + str + '\''};
281287
}
@@ -736,6 +742,12 @@ Venue PublisherVenue(Publisher publisher) {
736742
case Publisher::XnasBasicFinc: {
737743
return Venue::Finc;
738744
}
745+
case Publisher::IfeuImpactXoff: {
746+
return Venue::Xoff;
747+
}
748+
case Publisher::NdexImpactXoff: {
749+
return Venue::Xoff;
750+
}
739751
default: {
740752
throw InvalidArgumentError{
741753
"PublisherVenue", "publisher",
@@ -995,6 +1007,12 @@ Dataset PublisherDataset(Publisher publisher) {
9951007
case Publisher::XnasBasicFinc: {
9961008
return Dataset::XnasBasic;
9971009
}
1010+
case Publisher::IfeuImpactXoff: {
1011+
return Dataset::IfeuImpact;
1012+
}
1013+
case Publisher::NdexImpactXoff: {
1014+
return Dataset::NdexImpact;
1015+
}
9981016
default: {
9991017
throw InvalidArgumentError{
10001018
"PublisherDataset", "publisher",
@@ -1255,6 +1273,12 @@ const char* ToString(Publisher publisher) {
12551273
case Publisher::XnasBasicFinc: {
12561274
return "XNAS.BASIC.FINC";
12571275
}
1276+
case Publisher::IfeuImpactXoff: {
1277+
return "IFEU.IMPACT.XOFF";
1278+
}
1279+
case Publisher::NdexImpactXoff: {
1280+
return "NDEX.IMPACT.XOFF";
1281+
}
12581282
default: {
12591283
return "Unknown";
12601284
}
@@ -1517,6 +1541,12 @@ Publisher FromString(const std::string& str) {
15171541
if (str == "XNAS.BASIC.FINC") {
15181542
return Publisher::XnasBasicFinc;
15191543
}
1544+
if (str == "IFEU.IMPACT.XOFF") {
1545+
return Publisher::IfeuImpactXoff;
1546+
}
1547+
if (str == "NDEX.IMPACT.XOFF") {
1548+
return Publisher::NdexImpactXoff;
1549+
}
15201550
throw InvalidArgumentError{"FromString<Publisher>", "str",
15211551
"unknown value '" + str + '\''};
15221552
}

0 commit comments

Comments
 (0)