Source: https://databento.com/docs/conventions


# Standards and conventions

Frequently-used fields, normalization conventions, symbology, encodings, and more.

| Title | Subtitle | Image | Supported languages |
| [Common fields, types, and enums](https://databento.com/docs/conventions/common-fields-enums-types.md) | Date and timestamp formats, price formats, record types, flags, and more. | ![Script image](https://databento.com/docs/fields.svg) | Terminology, List of fields |
| [Normalization](https://databento.com/docs/conventions/normalization.md) | The reasons behind the design of Databento's normalization format. | ![Normalization image of databases](https://databento.com/docs/normalization.svg) | Terminology |
| [Symbology](https://databento.com/docs/conventions/symbology.md) | A guide to our raw symbol, instrument ID, parent, and continuous symbology types. | ![Symbology image](https://databento.com/docs/conventions-symbology.svg) | Symbology |
| [Databento Binary Encoding](https://databento.com/docs/conventions/databento-binary-encoding.md) | Fast, zero-copy message encoding and storage format for market data. | ![Encoding terms image](https://databento.com/docs/dbn.svg) | Encoding |
| [Zstandard (zstd)](https://databento.com/docs/conventions/working-with-zstandard.md) | This lossless compression algorithm is recommended for historical requests. | ![Image placeholder](https://databento.com/docs/zstd.svg) | Compression, Historical only |
| [MBO snapshot](https://databento.com/docs/conventions/mbo-snapshot.md) | Reconstruct the order book with MBO snapshot. | ![MBO snapshot image](https://databento.com/docs/live-snapshot.svg) | MBO snapshot, Live, Historical |
| [Reference data enums](https://databento.com/docs/conventions/reference-data-enums.md) | Specifies descriptions for enumeration field values in reference data responses. | ![Enums image](https://databento.com/docs/reference-data-enums.svg) | Terminology |


# Common fields, enums and types

### Publishers, datasets, and venues

We use a few different terms to describe our data:

- A **dataset** is a source of data.
- A **venue** is an exchange, OTC market (e.g., ATS, ECN) or reporting entity.
- A **publisher** is a specific venue from a specific dataset.

> **See also**
>
> Read our [Venues and publishers](https://databento.com/docs/faqs/venues-and-publishers.md) section for a more detailed explanation.

### Publisher identifiers

All of our schemas include a `publisher_id` field, which is a unique numeric ID assigned by Databento to each publisher.
A full list of publishers can be found using the [metadata.list_publishers](https://databento.com/docs/api-historical/metadata/metadata-list-publishers.md) endpoint.

### Venue and dataset identifiers

Each publisher is also assigned a string identifier (e.g., `OPRA.PILLAR.XCBO`), composed of two parts:

- **Dataset ID** (e.g., `OPRA.PILLAR`). This is used as the `dataset` argument in any API or client method.
Dataset IDs can be found on the Databento portal on each dataset's [details page](https://databento.com/docs/portal/data-catalog.md#dataset-details-page) or via the [metadata.list_datasets](https://databento.com/docs/api-historical/metadata/metadata-list-datasets.md) endpoint.
- **Venue** (e.g., `XCBO`). For most markets, this is its [ISO 10383 MIC code](https://www.iso20022.org/market-identifier-codes),
which is guaranteed to be four characters long.
For entities without a MIC code, this string is arbitrarily assigned by Databento and will also be four characters long.

### Instrument identifiers

All of our schemas contain an `instrument_id` field which is a numeric ID that maps to a given instrument.
In most cases, this numeric ID is assigned by the publisher.
For publishers that do not assign this value, we create a synthetic mapping for it.

`instrument_id` is only guaranteed to be unique within a given day.
Some publishers provide a different instrument ID on different days for the same underlying instrument.
Other publishers may use the same instrument ID for different underlying instruments at different points in time.

Depending on the use case, it may be easier to work with other symbology types such as `raw_symbol`.
Our [symbology](https://databento.com/docs/conventions/symbology.md) documentation outlines the various symbology types we support.

### Timestamps

All the timestamps in our data are expressed as the number of nanoseconds
since the [UNIX epoch](https://en.wikipedia.org/wiki/Unix_time), i.e. UNIX
timestamps. All timestamp fields are prefixed with `ts_`. Some of our timestamps are
encoded as the difference, i.e. delta, relative to another timestamp.
Such timestamp fields are suffixed with `_delta`.

We provide four types of timestamps, through the following fields:

- Event timestamps, `ts_event`
- Publisher sending timestamp, `ts_in_delta`
- Databento receive timestamp, `ts_recv`
- Databento sending timestamp (live only), `ts_out`

`UNDEF_TIMESTAMP` (`UINT64_MAX`, 18446744073709551615) is used to denote a null or undefined timestamp.

The event and publisher sending timestamps are provided by the publisher (or
market), and we provide their original values without any adjustment.

### ts_event

Most users will only need the event timestamp, i.e. `ts_event`. For market
data, this represents the time that the event is received by the
matching engine (tag 60 in FIX encoding).

The exact location where this timestamp is taken varies with matching
engine architecture of each market. Some markets will handle different subsets
of instruments on independent order gateways, while other markets will load
balance the same subset of instruments across independent order gateways.
Some markets take the event timestamp at the time it is received on the
independent order gateways, while others may take this timestamp at the time
it reaches a FIFO matching queue. In the former case, the clocks on independent
order gateways are often not properly synchronized to the same clock source.
Since we do not adjust the publisher's timestamps, any non-monotonicity in
the original data will remain.

### ts_in_delta

The publisher sending timestamp represents the time when the data message
associated with an event is sent (tag 52 in FIX encoding). We encode this
information in `ts_in_delta`, which expresses the number of nanoseconds
between the Databento receive timestamp (`ts_recv`) and the publisher sending timestamp.
To get the sending timestamp itself, simply subtract `ts_in_delta` from
`ts_recv`. Since the publisher and Databento are not necessarily synchronized
to the same clock source, `ts_in_delta` may be negative.

`ts_in_delta` is a 32-bit signed integer. The minimum will clamp to `INT32_MIN`
and the maximum will clamp to `INT32_MAX`, even if the true value exceeds these limits.

Some markets do not provide both match event timestamps and sending timestamps.
Often, they will provide only one of the two. In such cases, we take it that
the event timestamp and sending timestamp assume the same value. As such,
`ts_event` will be the provided timestamp and `ts_in_delta` will be equal to
the difference between `ts_recv` and `ts_event`.

### ts_recv

Unless otherwise specified, Databento receive timestamps, i.e. `ts_recv`, are
synchronized against UTC with sub-microsecond accuracy. Moreover, these receive
timestamps are always guaranteed to be monotonic for any given symbol.

These receive timestamps rely on hardware timestamping on the network adapter
and are synchronized against a GPS clock source using PTP. The clock is
corrected by slewing the time, which prevents discrete jumps backwards
in time. In other words, our local receive timestamps are guaranteed
to be monotonic for any given symbol.

`ts_recv` is also adjusted for leap seconds. The local receive timestamp is not
immediately adjusted intraday when a leap second is introduced. Instead, the
leap second update is applied at the end of the market session.

### ts_out

For live data, we optionally include a timestamp of our data before it leaves our data gateways.
This information is encoded as `ts_out`.
Both `ts_out` and `ts_recv` are synced to the same GPS clock source.
Subtracting `ts_recv` gives the number of nanoseconds spent in our system.
Some records may share a `ts_out` value captured before those records are encoded.

### Index timestamp

All schemas have a primary timestamp that should be used for sorting records as well as indexing into any symbology data structure.
This index timestamp will be `ts_recv` if it exists in the schema, otherwise it will be `ts_event`.

When requesting historical data, the data will be filtered based on the index timestamp.

When requesting data in CSV and JSON encodings, the first field will be set to this index timestamp.
Additionally, for schemas that contain `ts_recv`, the second field will be set to `ts_event`.

### Encodings

We support [DBN](https://databento.com/docs/conventions/databento-binary-encoding.md), [CSV](https://datatracker.ietf.org/doc/html/rfc4180), and [JSON](https://datatracker.ietf.org/doc/html/rfc8259) encodings for our data.
DBN is an extremely fast message encoding and storage format for normalized market data.
All official Databento client libraries use DBN under the hood, both as a data interchange format and for in-memory representation of data.
DBN is also the default encoding for all Databento APIs, including live data streaming, historical data streaming, and batch flat files.

Our batch download system also supports CSV and JSON encodings.

### Time zone

By default, all of our data is set in UTC time zone.
Likewise, our site displays all dates and times in UTC by default.

### Dates and times

We use the [ISO 8601 date and time format](https://www.iso.org/iso-8601-date-and-time-format.html) to express dates and times used as parameters to our APIs.
All dates and times used as parameters are in UTC by default.

The "reduced precision" concept in the ISO 8601 standard allows for dates and times to be represented with varying levels of detail.
Any number of values may be dropped from any of the date and time representations, but in the order from the least to the most significant.
For example, "2024-05" corresponds to "2024-05-01T00:00:00".

Any parameter that takes an ISO 8601 timestamp can instead be given a timestamp
in nanoseconds since the UNIX epoch, as described in the above section.

All of our timestamp parameters are start-inclusive and end-exclusive.

### Forward filling end parameters

For our APIs that take an optional `end` parameter as an ISO 8601 string, we will implement the following behavior when the end parameter is not provided:

We will *forward fill* any date or time components of the associated `start` parameter that are omitted.
This "rounds up" the `start` timestamp for use as the `end` timestamp, and is done for more concise usage.

Examples of this behavior are shown below.

> **Info**
>
> We will only *forward fill* timestamps with less than one-second resolution.

| Start timestamp | Effective start timestamp | Forward filled end timestamp |
| "2024" | "2024-01-01T00:00:00" | "2025-01-01T00:00:00" |
| "2024-03" | "2024-03-01T00:00:00" | "2024-04-01T00:00:00" |
| "2024-03-10" | "2024-03-10T00:00:00" | "2024-03-11T00:00:00" |
| "2024-03-10T01" | "2024-03-10T01:00:00" | "2024-03-10T02:00:00" |
| "2024-03-10T00:01" | "2024-03-10T00:01:00" | "2024-03-10T00:02:00" |

For example, a query for the entire month of March 2024 can be specified with `start="2024-03"` without an `end`.

### rtype

An rtype or record type is an unsigned 8-bit discriminant in the header of every [DBN](https://databento.com/docs/conventions/databento-binary-encoding.md) record that indicates the type of record structure.
Each [schema](https://databento.com/docs/schemas.md) has one rtype and by extension one record structure associated with it.

> **Info**
>
> Some rtypes are not associated with a schema and are only present in live data.

| Name | Hex | Decimal | Description |
| MBP-0 | `0x00` | 0 | A market-by-price record with a book depth of 0. Used for the trades schema. |
| MBP-1 | `0x01` | 1 | A market-by-price record with a book depth of 1. Used for the TBBO and MBP-1 schemas. |
| MBP-10 | `0x0A` | 10 | A market-by-price record with a book depth of 10. |
| Status | `0x12` | 18 | An exchange status record. |
| Definition | `0x13` | 19 | An instrument definition record. |
| Imbalance | `0x14` | 20 | An order imbalance record. |
| Error | `0x15` | 21 | An [error record](https://databento.com/docs/api-live/basics/errors.md) from the live gateway. |
| Symbol mapping | `0x16` | 22 | A [symbol mapping record](https://databento.com/docs/conventions/symbology.md#symbolmappingmsg) from the live gateway. |
| System | `0x17` | 23 | A [non-error record](https://databento.com/docs/api-live/basics/system-messages.md) from the live gateway. |
| Statistics | `0x18` | 24 | A statistics record from the publisher. |
| OHLCV-1s | `0x20` | 32 | An OHLCV record at a 1-second cadence. |
| OHLCV-1m | `0x21` | 33 | An OHLCV record at a 1-minute cadence. |
| OHLCV-1h | `0x22` | 34 | An OHLCV record at an hourly cadence. |
| OHLCV-1d | `0x23` | 35 | An OHLCV record at a daily cadence. |
| MBO | `0xA0` | 160 | A market-by-order record. |
| CMBP-1 | `0xB1` | 177 | A consolidated market-by-price record with a book depth of 1. |
| CBBO-1s | `0xC0` | 192 | A consolidated market-by-price record with a book depth of 1 at a 1-second cadence. |
| CBBO-1m | `0xC1` | 193 | A consolidated market-by-price record with a book depth of 1 at a 1-minute cadence. |
| TCBBO | `0xC2` | 194 | A consolidated market-by-price record with a book depth of 1 with only trades. |
| BBO-1s | `0xC3` | 195 | A market-by-price record with a book depth of 1 at a 1-second cadence. |
| BBO-1m | `0xC4` | 196 | A market-by-price record with a book depth of 1 at a 1-minute cadence. |

### Prices

Prices are expressed as signed integers in fixed-precision format, whereby every 1 unit corresponds to 1e-9, i.e. 1/1,000,000,000 or 0.000000001.
For example, a price of 5411750000000 corresponds to 5411.75 (decimal format).

When requesting data via batch download in CSV and JSON encodings, you can optionally choose for prices to be returned in decimal format.
If you are requesting data using the online portal, you can select **Decimal prices** in the [Advanced customization](https://databento.com/docs/portal/batch-download.md#advanced-customization) section.
Otherwise, you can specify the `pretty_px` parameter in [batch.submit_job](https://databento.com/docs/api-historical/batch/batch-submit-job.md) using the client libraries.

Additionally, our client libraries support functionality to view prices in decimal format.

In certain scenarios--such as calendar spreads in futures--prices can be negative.

`UNDEF_PRICE` is used to denote a null or undefined price.
It will be equal to 9223372036854775807 (`INT64_MAX`) when using the fixed-precision integer format.
When expressed in decimal format, it will be equal to `null` in JSON, or `""` (an empty string) in CSV.

### Side

The `side` field contains information about the side of an order event.
It's meaning will vary depending on the `action` field.

- When `action` is **T**rade:
  - `A` - The trade aggressor was a seller
  - `B` - The trade aggressor was a buyer
  - `N` - No side specified

- When `action` is **F**ill:
  - `A` - A resting sell order was filled
  - `B` - A resting buy order was filled
  - `N` - No side specified

- When `action` is **A**dd, **M**odify, and **C**ancel:
  - `A` - A resting sell order updated the book
  - `B` - A resting buy order updated the book
  - `N` - No side specified

- When `action` is clea**R** book, `side` will always be `N`

`side` can be `N` in the following cases:

- The source does not disseminate a side for trades.
- Trades happening during opening and closing auctions
- Trades against non-displayed orders
- Trades involving implied orders
- Off-exchange trades

The [Venues and datasets](https://databento.com/docs/datasets.md) section provides more information regarding the specific cases for each dataset where no side will be specified.

### Action

The `action` field contains information about the type of order event contained in the message.

| Name | Value | Action |
| Add | `A` | Insert a new order into the book. |
| Modify | `M` | Change an order's price and/or size. |
| Cancel | `C` | Fully or partially cancel an order from the book. |
| Clear | `R` | Remove all resting orders for the instrument. |
| Trade | `T` | An aggressing order traded. Does not affect the book. |
| Fill | `F` | A resting order was filled. Does not affect the book. |
| None | `N` | No action: does not affect the book, but may carry `flags` or other information. |

### Flags

The `flags` field is a [bit field](https://en.wikipedia.org/wiki/Bit_field) that contains information about the message.

The meaning of each bit is as follows:

| Flag | Value | Decimal | Description |
| `F_LAST` | `1 << 7` | 128 | Marks the last record in a single event for a given `instrument_id`. |
| `F_TOB` | `1 << 6` | 64 | Top-of-book message, not an individual order. |
| `F_SNAPSHOT` | `1 << 5` | 32 | Message sourced from a replay, such as a snapshot server. |
| `F_MBP` | `1 << 4` | 16 | Aggregated price level message, not an individual order. |
| `F_BAD_TS_RECV` | `1 << 3` | 8 | The `ts_recv` value is inaccurate due to clock issues or packet reordering. |
| `F_MAYBE_BAD_BOOK` | `1 << 2` | 4 | An unrecoverable gap was detected in the channel. |
| `F_PUBLISHER_SPECIFIC` | `1 << 1` | 2 | Semantics depend on the `publisher_id`. Refer to the relevant [dataset supplement](https://databento.com/docs/datasets.md) for more details. |
|  | `1 << 0` | 1 | Reserved for internal use can safely be ignored. May be set or unset. |

Multiple flags can be set on a single message, in which case the field value is the sum of the individual flag values.
For example, a `flags` value of 160 means `F_LAST` and `F_SNAPSHOT` are set: 160 = 128 + 32.
Test for an individual flag with a bitwise AND: `flags & 128` is non-zero when `F_LAST` is set, `flags & 64` is zero when `F_TOB` is not.

> **Warning**
>
> Comparing the field with a single flag's value, such as `flags == 128` to check for `F_LAST`, will miss any record that has other flags set too.

### Top-of-book datasets

Some datasets are built on feeds from vendors that only provide top-of-book information (best bid and offer).
Top-of-book messages are normalized into a pair of MBO records with the **A**dd action and the `F_TOB` flag (`0x40`, 64) set.
Typically for these datasets, there is no information available about the passive side of trades, so there are no **F**ill records and the `side` of the **T**rade record is always set to **N**one.

The removal of a price level is normalized as an **A**dd action with a size of 0 and price of `UNDEF_PRICE` (`INT64_MAX`, 9223372036854775807) or NaN in Python.
This indicates there's currently no quotes for that side.

Other schemas, such as MBP-1, Trades, and OHLCV remain the same for top-of-book datasets.

### Market-by-price datasets

Some datasets are built on feeds from vendors that only provide market-by-price information (with limited depth).

Messages adding/modifying/deleting a price level are normalized into an MBO record with the **A**dd/**M**odify/**C**ancel action, with the `size` field containing the full quantity at that level and the `F_MBP` flag (`0x10`, 16) set.
A price level can be identified from the combination of the `side` and the `price`.
The `order_id` field should be ignored for those messages.

If the upstream feed has a maximum depth, an additional record with **C**ancel action will be sent whenever a price level falls outside the maximum depth - even if there are still orders at that price level.

Typically for these datasets, there is no information available about the passive side of trades, so there are no **F**ill records.

MBP-10 will only include depth up to the depth provided by the publisher.
The remaining levels will always be empty.

Other schemas, such as Trades and OHLCV are otherwise unaffected.


# Normalization

**Normalization** refers to the process of exporting data in their various
source formats to a single, unified format. Such a unified format is often
called a **normalization format** (or **normalized schema**). The primary
reason for normalizing market data is to abstract away differences between
source formats, making the data easier to work with.

The normalization process is one of the most likely places where inaccuracies
or data errors are introduced. This article describes these issues, the
trade-offs for addressing them, and the reasons behind the design of
Databento's normalization schema.

### Examples of normalized data

- For example, Nasdaq's proprietary TotalView data feed has a protocol with its own message format and provides market-by-order data,
while IEX's proprietary TOPS data feed has a completely different protocol with another message format and provides top-of-book data.
These are examples of **raw data** formats.
- When you consume market data from a data redistributor's feed, the redistributor will have its own protocol and
message format, distinct from the venues'. This is an example of **normalized data**.
- The most sophisticated trading firms will generally collect data directly
from their sources and normalize them to a proprietary format.

### Common issues found in normalized market data

There are many ways in which normalization can introduce data errors, lossiness
or performance issues.

| Issue | Definition | Examples |
| **Incompatible schema** | The source schema and normalized schema are mismatched. | A direct market feed with an order-based schema is normalized to a vendor's schema that only provides aggregated market depth. |
| **Truncated timestamps** | A direct market feed which originally includes nanosecond-resolution timestamps is normalized to a schema that truncates the timestamps to a lower resolution. | Some vendors have a legacy data schema designed for older FIX dialects, forcing them to truncate nanosecond-resolution timestamps found in modern markets to millisecond resolution. |
| **Discarded timestamps** | A direct market feed which originally includes more than one timestamp field is normalized to a schema that discards that timestamp. This introduces imprecision when the normalized data is used for strategy backtesting. | A proprietary exchange feed may include both match (Tag 60) and sending (Tag 52) timestamps but a vendor's schema may preserve only one of the two. |
| **Discarded or remapped sequence numbers** | The normalized schema either discards the original message sequence numbers or remaps them to a vendor's own message sequence numbers. | This creates problems if you need to resolve post-trade issues with the market or your broker, as it makes it harder to identify the exact event. |
| **Loss of price precision** | The normalized schema represents prices in a type that loses precision. | Many vendors use floating point representation for prices, losing precision past 6 decimal places. This can create issues for trading Japanese yen spot rates, fixed income instruments and cryptocurrencies. |
| **Loss of null semantics** | The normalized schema represents null values in a way that changes the meaning. | Some data feeds will represent null prices with zeros or a negative value like -1. This can introduce errors downstream if the price is interpreted to be non-null. This is also problem if your application needs to handle both asset classes that can have negative prices (such as futures and spreads) and asset classes which cannot. |
| **Loss of packet structure** | The normalized schema does not preserve packet-level structure. | Many markets publish multiple events within a packet. Without packet-level structure, it may create the appearance of artificial trading opportunities between any two events within a packet. |
| **Lossy or irreversible symbology mappings** | The normalized schema adopts a proprietary symbology that is different from the original source's symbology. Sometimes, such proprietary symbology cannot be mapped back to the original. | Some vendors adopt a symbology system that only includes lead months of futures contracts, causing the far month contracts to be discarded. |
| **Lossy abstraction** | The normalized schema does not adequately standardize information across multiple datasets, resulting in the end user needing to understand the specifications of the various source schemas anyway in order to determine the lost information. | This often happens when normalizing less commonly used features such as matching engine statuses or instrument definitions. This puts significant burden on the user to study the specifications of various data feeds to understand the lost information. |
| **Statelessness** | The normalized schema provides incremental changes but does not provide snapshots or replay of order book state. | This presents an issue when using the normalized data in real-time, as the user loses information in the event of a disconnection or late join. |
| **Coalescing** | The normalized schema aggregates the information at a lower granularity. | A vendor may coalesce a feed of tick data with second bar aggregates or subsample a source feed. |
| **Conflation** | A normalized feed batches multiple updates into one at some lower frequency, to alleviate bandwidth limitations. Often present along with coalescing. | This is a common practice for retail brokerages, whose data feeds are designed more for display use and consumption over sparse WAN links. |
| **Dropped packets** | A normalized data feed deliberately discards data when the network or system is unable to keep up. | This is often present when the source feed or upstream parts of the vendor's infrastructure uses UDP for transmission. |
| **Buffering** | The data server sends stale data either because there is insufficient network bandwidth or the client is reading too slowly. The client misinterprets the stale data, either obscuring this effect or injecting incorrect timestamps. | This often manifests when the data feed uses TCP for transmission - which is a common practice when disseminating data over WAN links. |
| **Ex post cleaning** | A data source is cleaned, during the normalization process, using future information. This enhances the historical data with artificial information that may not have been actionable in real-time. | The data may be reordered; trades that were canceled after the end of market session may be removed, or prices may be adjusted with information from a future rollover or dividend event. |
| **Schema bloat** | A normalized schema represents some data fields with types that take up unnecessary space or make the data more difficult to compress, which increases storage costs and reduces application performance. | Common cases of this include representing timestamps as ISO 8601 strings or prices as strings, especially on vendor feeds that use JSON encoding. |

Our normalization schema is designed to mitigate most of these issues.

### Why use normalized data?

Though it may seem counterintuitive, some degree of lossiness introduced
during normalization can be preferable.

A normalized schema that has too many
data fields, as a result of trying to preserve information from too many
different source schemas, is hard to use.

Here are some ways in which lossiness can be useful:

- Discarding unnecessary data fields can reduce storage and bandwidth
requirements, and improve application performance. For example, many
strategies execute at time scales where extra timestamps are
unnecessary.
- Most status or reference data events are irrelevant for any given
business use case. For example, many users only trade during the
regular market session and their applications do not need to be
aware of special matching conditions that are more typically found
outside of regular hours or during pre-market.
- Floating point prices can be easier to use and the modeling error
introduced by them could be negligible compared to other, more
likely sources of error for the given use case.
- Order book snapshots can be unnecessary on liquid products whose
orders turnover very quickly, as pre-existing orders in the snapshot
will eventually be filled or canceled - a process which is commonly
referred to as *natural refresh*.

It should be noted that normalized data is not necessarily going
to be smaller or have a simpler specification than the source data.
If your use case only requires a single dataset, there may be complexity using
normalized data whose schema was designed to accommodate differences between
multiple datasets.

We normalize to our proprietary [Databento Binary Encoding (DBN)](https://databento.com/docs/conventions/databento-binary-encoding.md).


# Symbology

Financial datasets usually contain symbols or [product](https://databento.com/docs/faqs/instruments-and-products.md) identifiers.
The mapping of symbols to their corresponding product names can be extracted from our [definition schema](https://databento.com/docs/schemas/instrument-definitions.md)
as well as the metadata packaged with our data.

Databento supports four symbology types, also referred to as **stypes**. They are: [raw_symbol](https://databento.com/docs/conventions/symbology.md#raw-symbol), [instrument_id](https://databento.com/docs/conventions/symbology.md#instrument-id), [parent](https://databento.com/docs/conventions/symbology.md#parent), and [continuous](https://databento.com/docs/conventions/symbology.md#continuous).

We include methods for mapping between symbology types and resolving symbols under
the [symbology](https://databento.com/docs/api-historical/symbology.md) family of methods.

We do not retroactively reassign symbols in our historical data. Symbols found in
our historical data are exactly as they appeared in the live data at the original event
time. For example, if a stock symbol was changed due to a corporate action, we preserve
the original symbol for data before the event and the new symbol for data after the
event. This approach guarantees that the historical data looks identical to the live data
at the original time, and encourages our users to write their integration in a manner that
handles historical and live data in the same way.

A symbol can be reused and point to two different instruments on two different dates.

### Supported symbology combinations

When requesting data, such as with the [timeseries.get_range](https://databento.com/docs/api-historical/timeseries/timeseries-get-range.md) or [batch.submit_job](https://databento.com/docs/api-historical/batch/batch-submit-job.md) endpoints, an input (`stype_in`) and output (`stype_out`) symbology type are specified.
Not all symbology types are supported for output and some symbology types are not available in certain datasets.

| `stype_in` ↓ / `stype_out` → | `instrument_id` | `raw_symbol` | `parent` | `continuous` |
| `instrument_id` | ✓ | ✓ |  |  |
| `raw_symbol` | ✓ |  |  |  |
| `parent` | ✓ |  |  |  |
| `continuous` | ✓ |  |  |  |

All datasets support bidirectional conversion between `raw_symbol` and `instrument_id`.

The table below outlines the datasets that support [parent symbology](https://databento.com/docs/conventions/symbology.md#parent) and [continuous contract symbology](https://databento.com/docs/conventions/symbology.md#continuous) (futures contracts only).

| `stype_in` | `parent` | `continuous` |
| [GLBX.MDP3](https://databento.com/docs/datasets/glbx-mdp3.md) | ✓ | ✓ |
| [IFEU.IMPACT](https://databento.com/docs/datasets/ifeu-impact.md) | ✓ | ✓ |
| [IFLL.IMPACT](https://databento.com/docs/datasets/ifll-impact.md) | ✓ | ✓ |
| [IFUS.IMPACT](https://databento.com/docs/datasets/ifus-impact.md) | ✓ | ✓ |
| [NDEX.IMPACT](https://databento.com/docs/datasets/ndex-impact.md) | ✓ | ✓ |
| [OPRA.PILLAR](https://databento.com/docs/datasets/opra-pillar.md) | ✓ |  |
| [XCBF.PITCH](https://databento.com/docs/datasets/xcbf-pitch.md) | ✓ | ✓ |
| [XEEE.EOBI](https://databento.com/docs/datasets/xeee-eobi.md) | ✓ | ✓ |
| [XEUR.EOBI](https://databento.com/docs/datasets/xeur-eobi.md) | ✓ | ✓ |

### Raw symbol

Raw symbols are the original string symbols used by the publisher in the source data. This can be useful for environments with direct market connectivity.
Examples of raw symbols include `AAPL`, `ESH3`, etc.

This symbology is used by setting the `stype_in=raw_symbol` parameter in the API.

#### CMS vs. Nasdaq symbology in US equities

In US equities, the same security may carry slightly different ticker symbols across venues.
The two competing conventions are **Nasdaq** and **CMS** (CTA/UTP Consolidated Market System).
For multi-class shares, units, warrants, preferred shares, and similar securities, the conventions differ in the suffix delimiter and codes used:

| Security | Nasdaq | CMS |
| Berkshire Hathaway Class B | `BRK.B` | `BRK B` |
| AAC Holdings warrant | `AAC+` | `AAC WS` |
| Heico Class A | `HEI.A` | `HEI A` |
| Moog Class A | `MOG.A` | `MOG A` |

The reference for the suffix mappings is the [Nasdaq Symbol Convention](https://www.nasdaqtrader.com/Trader.aspx?id=CQSSymbolConvention) document.

`raw_symbol` returns the symbol as published by the source, so the convention varies with the dataset.
The table below shows the convention for each US equities dataset:

| Dataset | Native convention |
| [ARCX.PILLAR](https://databento.com/docs/datasets/arcx-pillar.md) | CMS |
| [BATS.PITCH](https://databento.com/docs/datasets/bats-pitch.md) | Nasdaq |
| [BATY.PITCH](https://databento.com/docs/datasets/baty-pitch.md) | Nasdaq |
| [EDGA.PITCH](https://databento.com/docs/datasets/edga-pitch.md) | Nasdaq |
| [EDGX.PITCH](https://databento.com/docs/datasets/edgx-pitch.md) | Nasdaq |
| [EPRL.DOM](https://databento.com/docs/datasets/eprl-dom.md) | Nasdaq |
| [EQUS.MINI](https://databento.com/docs/datasets/equs-mini.md) | Nasdaq |
| [EQUS.SUMMARY](https://databento.com/docs/datasets/equs-summary.md) | Nasdaq |
| [IEXG.TOPS](https://databento.com/docs/datasets/iexg-tops.md) | Nasdaq |
| [MEMX.MEMOIR](https://databento.com/docs/datasets/memx-memoir.md) | CMS |
| [OCEA.MEMOIR](https://databento.com/docs/datasets/ocea-memoir.md) | CMS |
| [XASE.PILLAR](https://databento.com/docs/datasets/xase-pillar.md) | CMS |
| [XBOS.ITCH](https://databento.com/docs/datasets/xbos-itch.md) | Nasdaq |
| [XCHI.PILLAR](https://databento.com/docs/datasets/xchi-pillar.md) | CMS |
| [XCIS.TRADESBBO](https://databento.com/docs/datasets/xcis-tradesbbo.md) | CMS |
| [XNAS.BASIC](https://databento.com/docs/datasets/xnas-basic.md) | Nasdaq |
| [XNAS.ITCH](https://databento.com/docs/datasets/xnas-itch.md) | Nasdaq |
| [XNYS.PILLAR](https://databento.com/docs/datasets/xnys-pillar.md) | CMS |
| [XPSX.ITCH](https://databento.com/docs/datasets/xpsx-itch.md) | Nasdaq |

### Instrument ID

Instrument IDs are the unique numeric ID assigned to each instrument by the publisher. Most venues use such numeric IDs under the hood. Numeric IDs have the benefit of taking less space than most string symbols.
However, numeric IDs can be difficult to work with, especially as some publishers remap them daily.

This symbology is used by setting the `stype_in=instrument_id` parameter in the API.

### Parent

Parent symbology is a smart symbology feature that allows you to easily refer to groups of related symbols using a single root symbol.
The root symbols are sourced from the `asset` field of the [definition schema](https://databento.com/docs/schemas/instrument-definitions.md).
All futures for a root symbol can be referenced using the parent symbol `[ROOT].FUT`, for options: `[ROOT].OPT`.
For example, `ES.FUT` refers to all E-mini S&P 500 futures and futures spreads and `ES.OPT` refers to all quarterly E-mini S&P 500 options and option spreads.

The type of instrument will be specified in the `instrument_class` field.
When requesting data using futures parent symbology, this field will indicate whether the instrument is a future or futures spread.
When requesting data using options parent symbology, it will indicate whether the instrument is a call or put.
A full list of variants can be found in the [instrument class documentation](https://databento.com/docs/schemas/instrument-definitions.md#instrument-class).

This symbology is used by setting the `stype_in=parent` parameter in the API.

### Continuous

> **Info**
> Our continuous contract symbology is a notation that maps to an actual, tradable instrument on any given date.
> The continuous contract prices returned are the original, unadjusted prices. We don't create a synthetic time
> series by back-adjusting the prices to remove jumps during rollovers.

Continuous contract symbology is a smart symbology feature that allows a single symbol to refer to different instruments over time.
For example, continuous contract symbology allows you to query a single symbol that changes or *rolls* forward before expiration.

For futures outrights, we use the format `[ROOT].[ROLL_RULE].[RANK]` to refer to continuous contracts that change over time according to a roll rule and rank.
Like with parent symbology, the root symbol corresponds with the `asset` field of the [definition schema](https://databento.com/docs/schemas/instrument-definitions.md).

`RANK` is a zero-indexed integer, and `ROLL_RULE` is either `c`, `n`, or `v` from the table below.

This symbology is used by setting the `stype_in=continuous` parameter in the API.
It is not currently possible to select continuous contracts through our web portal.

| Roll rule | Code | Overview | Example |
| Calendar | `c` | Refers to the offset from the closest expiration or front month. | On September 28, 2022 `NG.c.0` referred to the October NG future (NGV2) and `NG.c.1` referred to the November future (NGX2). However, because the October contract expired at the end of trading on September 28 and the continuous smart symbol would be rolled forward, on September 29, 2022, `NG.c.0` then referred to the November future (NGX2) and `NG.c.1` referred to the December future (NGZ2). |
| Open interest | `n` | Will rank the expirations by the open interest at the previous day's close. | `CL.n.1` refers to the CL future with the second-highest open interest. |
| Volume | `v` | Will rank the expirations by the previous day's trading volume. | `ZN.v.0` refers to the ZN future with the most volume. |

### All symbols

It is possible to request all symbols within a dataset without providing them explicitly.
This is done by specifying `ALL_SYMBOLS` with `stype_in=raw_symbol` or `stype_in=parent` in the API.

When requesting all symbols using [timeseries.get_range](https://databento.com/docs/api-historical/timeseries/timeseries-get-range.md) symbology data is not provided.
This means that for the CSV and JSON encodings the parameter `map_symbols=True` is not allowed.
For the DBN encoding, the metadata header will not contain symbology mappings.

When requesting all symbols using [batch.submit_job](https://databento.com/docs/api-historical/batch/batch-submit-job.md), the [symbology.json](https://databento.com/docs/portal/download-center.md#support-files) support file will not contain symbology mappings.

### Symbology.resolve endpoint

Databento offers symbology resolution for free in our [symbology.resolve endpoint](https://databento.com/docs/api-historical/symbology/symbology-resolve.md) and in our client libraries.
This endpoint can be used to request mappings from one symbology type to another and contains all the data necessary to perform these conversions.

| Field | Description |
| `result` | The symbology mapping result. For each requested symbol, a list of symbology mappings is provided. |
| `symbols` | The requested symbols. |
| `stype_in` | The requested input symbology type. |
| `stype_out` | The requested output symbology type. |
| `start_date` | The requested symbology start date, as an ISO 8601 date string. |
| `end_date` | The requested symbology end date, as an ISO 8601 date string. |
| `partial` | The list of symbols, if any, that partially resolved inside the start date and end date interval. |
| `not_found` | The list of symbols, if any, that failed to resolve inside the start date and end date interval. |
| `message` | A short message indicating the overall symbology result. Can be one of: "OK", "Not found", or "Partially resolved". |
| `status` | A numerical status field indicating the overall symbology result. Can be one of: 0 (OK), 1 (Partially resolved), or 2 (Not found). |

### Symbology support file

For some batch downloads, symbology information for the job is contained in `*.symbology.json` support files.
This file is automatically included when the batch job files do not contain symbology information, such as
when requesting CSV or JSON encodings when symbol mapping is not requested.
Below is a sample file. It's contents are directly obtained from the [symbology.resolve](https://databento.com/docs/api-historical/symbology/symbology-resolve.md) endpoint:

```json
{
   "result": {
      "ES.c.0": [
         { "d0": "2023-01-01", "d1": "2023-03-19", "s": "206299"},
         { "d0": "2023-03-19", "d1": "2023-06-01", "s": "95414"}
      ]
   },
   "symbols": ["ES.c.0"],
   "stype_in": "continuous",
   "stype_out": "instrument_id",
   "start_date": "2023-01-01",
   "end_date": "2023-06-01",
   "partial": [],
   "not_found": [],
   "message": "OK",
   "status": 0
}
```

Examining this sample we can see a requested mapping of the `stype_in` ("continuous") `symbol` ("ES.c.0") to `stype_out` ("instrument_id") over the date range `start_date` ("2023-01-01") to the `end_date` ("2023-06-01").

We can check the `message` ("OK") and `status` (0) fields to confirm that our request was successful over the entire date interval. Additionally, the `not_found` and `partial` fields are empty.

Most importantly, the `result` field contains our symbology mappings keyed by each input `symbol`. Each `symbol` entry in the `result` mapping will contain a list of entries. These entries contain a start date in the `d0` field, and an end date in the `d1` field for the mapping. The `s` field contains the output symbol.

| Continuous contract | Start date (d0) | End date (d1) | Instrument ID (s) |
| ES.c.0 | 2023-01-01 | 2023-03-19 | 206299 |
| ES.c.0 | 2023-03-19 | 2023-06-01 | 95414 |

### SymbolMappingMsg

Databento's live data publishes symbology information using the `SymbolMappingMsg`.
This message will always contain the input symbol and the resolved output symbol.
The record header of the `SymbolMappingMsg` will always contain the `instrument_id`.
See our [DBN encoding](https://databento.com/docs/conventions/databento-binary-encoding.md) article for more information on our binary format.

| Field | Type | Description |
| `stype_in` | uint8_t | The input symbology type (DBN version 2 only). |
| `stype_in_symbol` | char\[symbol_cstr_len\] | The input symbol from the subscription, where `symbol_cstr_len` is specified in the [Metadata](https://databento.com/docs/conventions/databento-binary-encoding.md#metadata). |
| `stype_out` | uint8_t | The output symbology type (DBN version 2 only). Will always be `raw_symbol`. |
| `stype_out_symbol` | char\[symbol_cstr_len\] | The output symbol from the subscription, where `symbol_cstr_len` is specified in the [Metadata](https://databento.com/docs/conventions/databento-binary-encoding.md#metadata). |
| `start_ts` | uint64_t | The start of the mapping interval expressed as the number of nanoseconds since the UNIX epoch. |
| `end_ts` | uint64_t | The end of the mapping interval expressed as the number of nanoseconds since the UNIX epoch. |



# Databento Binary Encoding

**Databento Binary Encoding (DBN)** is an extremely fast message encoding and
storage format for normalized market data. The DBN specification includes a simple,
self-describing metadata header and a fixed set of struct definitions, which
enforce a standardized way to normalize market data.

All official Databento client libraries use DBN under the hood, both as a data
interchange format and for in-memory representation of data. DBN is also the default
encoding for all Databento APIs, including live data streaming, historical data
streaming, and batch flat files.

### Getting started with DBN

The easiest way to get started with DBN is through any of the official Databento
client libraries, which support reading and writing DBN files. See:
- The [`DBNStore.from_file`](https://databento.com/docs/api-historical/helpers/dbn-store-from-file.md?lang=python)
and [`DBNStore.to_file`](https://databento.com/docs/api-historical/helpers/dbn-store-to-file.md?lang=python)
methods for [Python](https://github.com/databento/databento-python)
- The [`DbnFileStore::Replay`](https://databento.com/docs/api-historical/helpers/dbn-store.md?lang=cpp)
method for [C++](https://github.com/databento/databento-cpp)
- The [`AsyncDbnStore::from_file`](https://databento.com/docs/api-historical/helpers/dbn-store-from-file.md?lang=rust)
method, and [`databento::dbn::encode`](https://docs.rs/dbn/latest/dbn/encode/index.html)
module for [Rust](https://github.com/databento/databento-rs)

Other resources are also available:
- The [dbn](https://crates.io/crates/dbn) Rust crate is the reference implementation
of DBN and provides a library for decoding and encoding DBN, and also for converting
from DBN to CSV, JSON, Apache Parquet, and Apache Arrow.
- [dbn-cli](https://crates.io/crates/dbn-cli) is a command line tool that can be used
to read DBN files; transcode DBN to CSV, JSON, Apache Parquet, or Apache Arrow; print the output, or write it to
disk.
See [Installing dbn-cli](https://databento.com/docs/conventions/databento-binary-encoding.md#installing-dbn-cli) below for setup instructions.

### Installing dbn-cli

Pre-built `dbn` binaries are attached to every release of the
[databento/dbn](https://github.com/databento/dbn/releases) repository on GitHub.
Builds are available for the following targets:

- Linux: `x86_64` and `aarch64`, both `gnu` and `musl`
- macOS: `x86_64` and `aarch64`
- Windows: `x86_64` and `aarch64`

Each release ships a `dbn-<version>-<target>.tar.gz` archive (or `.zip` on Windows)
together with a `.sha256` checksum file.
Download the archive for your platform, verify the checksum, extract the archive,
and put the `dbn` binary somewhere on your `PATH`.

Alternatively, if you have a Rust toolchain installed, you can build and install
from source with [Cargo](https://doc.rust-lang.org/cargo/getting-started/installation.html):

```sh
cargo install dbn-cli
```

### Why should you use DBN?

The key advantages of using DBN are:
- **End-to-end.** DBN can be used to store and transport normalized data across all
components of a typical trading system. It can fulfill the requirements of a file
format for efficient storage; a message encoding for fast real-time streaming, and an
in-memory representation of market data for a low latency system--all at once.
This simplifies your trading system and eliminates the
use of multiple serialization formats. It also ensures that market
data is immutable, lossless, and consistent as it passes between components.
- **Use the same code for historical and live.** Our client libraries exploit the
end-to-end aspect of DBN and allow you to use the same code in historical and live;
you can write an event-driven trading platform that runs the exact same code in
backtest and production trading.
- **Zero-copy.** DBN data is structured the same way whether in-memory,
on the wire, or on disk. Thus, the data gets read and written directly as-is, without
costly encoding or decoding steps that move the data into CPU and back out.
- **Symbology metadata.** The DBN protocol includes a lightweight header that
provides metadata for interpreting and using the market data payload, such as
symbology mappings, so a DBN file is self-sufficient for many use cases.
- **Highly compressible.** DBN strictly uses fixed lengths and offsets for all fields.
This layout enables typical compression algorithms, such as zstd and lz4, to achieve
high compression ratios.
- **Optimized for modern CPUs.** The predictable layout of DBN records also allows for
highly-optimized, sequential access patterns that take advantage of instruction
pipelining and prefetching on modern CPUs. The struct definitions are also
deliberately designed so that most records fit into a single cache line.
- **Extremely fast.** DBN achieves extremely fast speeds on reads and writes. Most use
cases of DBN are compression-bound or I/O-bound while only using a single CPU core.
DBN has been used in environments with 6.1 microseconds median internal latency; we've
also seen user-reported benchmarks of full order book replay over 19.1 million
messages per second using our C++ client library on a Google Cloud VM.
- **Normalization format.** Using DBN also automatically means you're adopting its
normalization format. While there are many ways to normalize data, our team arrived at
these best practices after many years of combined experience at top-tier trading firms
and integrating dozens of trading venues. For example, DBN allows you to replay full
order book data at I/O bound, backtest with passive orders in precise sequence,
and losslessly achieve much of what's possible with raw packet captures with several
factors of improvement in speed and storage requirements.

### Layout

A valid DBN stream or file has two parts, beginning with **metadata**,
and immediately followed by **records**.

The following diagram shows the field layout of the DBN encoding:

#### Version 1

```text
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| magic string = "DBN" | version = 1 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
+                                                               +
|                                                               |
+                            dataset                            +
|                                                               |
+                                                               +
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| schema |  |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+                               +
| start (UNIX nanos) |
+                               +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                               |                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+                               +
| end (UNIX nanos) |
+                               +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                               |                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+                               +
| limit (max records) |
+                               +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                               |                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+                               +
| reserved |
+                               +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|  | stype_in | stype_out |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| ts_out |  |
+-+-+-+-+-+-+-+-+                                               +
|                                                               |
+                                                               +
|                                                               |
+                                                               +
|                                                               |
+                                                               +
|                                                               |
+                                                               +
|                                                               |
+                                                               +
| reserved (47 bytes of padding) |
+                                                               +
|                                                               |
+                                                               +
|                                                               |
+                                                               +
|                                                               |
+                                                               +
|                                                               |
+                                                               +
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| schema_definition_length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| schema_definition (variable) |
| ... |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| symbols_count |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| symbols (variable) |
| ... |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| partial_count |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| partial (variable) |
| ... |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| not_found_count |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| not_found (variable) |
| ... |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| mappings_count |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| mappings (variable) |
| ... |
+-+-+-+-+-+-+-+-+-+-end metadata; begin body--+-+-+-+-+-+-+-+-+-+
| records |
| ... |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
```

#### Versions 2 and above

```text
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| magic string = "DBN" | version |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
+                                                               +
|                                                               |
+                            dataset                            +
|                                                               |
+                                                               +
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| schema |  |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+                               +
| start (UNIX nanos) |
+                               +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                               |                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+                               +
| end (UNIX nanos) |
+                               +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                               |                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+                               +
| limit (max records) |
+                               +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|  | stype_in | stype_out |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| ts_out | symbol_cstr_len |  |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+               |
|                                                               |
+                                                               +
|                                                               |
+                                                               +
|                                                               |
+                                                               +
|                                                               |
+                                                               +
|                                                               |
+                                                               +
|                                                               |
+                                                               +
| reserved (53 bytes of padding) |
+                                                               +
|                                                               |
+                                                               +
|                                                               |
+                                                               +
|                                                               |
+                                                               +
|                                                               |
+                                                               +
|                                                               |
+                                                               +
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| schema_definition_length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| schema_definition (variable) |
| ... |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| symbols_count |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| symbols (variable) |
| ... |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| partial_count |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| partial (variable) |
| ... |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| not_found_count |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| not_found (variable) |
| ... |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| mappings_count |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| mappings (variable) |
| ... |
+-+-+-+-+-+-+-+-+-+-end metadata; begin body--+-+-+-+-+-+-+-+-+-+
| records |
| ... |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
```

### Metadata

Metadata is included at the beginning of every DBN stream or file. Basic information
is found at the start of the metadata, followed by optional [symbology](https://databento.com/docs/api-historical/symbology.md)
mappings.

The metadata contains all of the parameters needed to construct a request for the exact
same data via Databento's historical API. Likewise, if you fetched DBN-encoded data
from Databento's historical API, the metadata header will contain the parameters of
your original request.

The following table describes the metadata fields, in the order of appearance.
All fields are little-endian.

| Field | Type | Description |
| `version` | char\[4\] | `"DBN"` followed by the version of DBN the file is encoded in as a `u8`. |
| `length` | uint32_t | The length of the remaining metadata header, i.e. excluding `version` and `length`. |
| `dataset` | char\[16\] | The dataset ID (string identifier). |
| `schema` | uint16_t | The data record schema. `u16::MAX` indicates a potential mix of schemas and record types, which will always be the case for live data. |
| `start` | uint64_t | The start time of query range in UNIX epoch nanoseconds. |
| `end` | uint64_t | The end time of query range in UNIX epoch nanoseconds. `u64::MAX` indicates no end time was provided. |
| `limit` | uint64_t | The maximum number of records to return. 0 indicates no limit. |
| `stype_in` | uint8_t | The symbology type of input symbols. `u8::MAX` indicates a potential mix of types, such as with live data. |
| `stype_out` | uint8_t | The symbology type of output symbols. |
| `ts_out` | uint8_t | Whether each record has an appended gateway send timestamp. |
| `symbol_cstr_len` | uint16_t | The number of bytes in fixed-length string symbols, including a null terminator byte. Version 2 only, symbol strings are always 22 in version 1. |
| `schema_definition_length` | uint32_t | Number of bytes in the schema definition. |
| `schema_definition` | uint8_t\[schema_definition_length\] | Self-describing schema to be implemented in the future. |
| `symbols_length` | uint32_t | Number of symbols in the original query. |
| `symbols` | char\[symbols_length\]\[symbol_cstr_len\] | The symbols from the original query. |
| `partial_length` | uint32_t | The number of symbols partially resolved. |
| `partial` | char\[partial_length\]\[symbol_cstr_len\] | The partially resolved symbols. |
| `not_found_length` | uint32_t | The number of unresolved symbols. |
| `not_found` | char\[not_found_length\]\[symbol_cstr_len\] | The unresolved symbols. |
| `mappings_length` | uint32_t | The number of symbols at least partially resolved. |
| `mappings` | SymbolMapping\[mappings_length\] | The `SymbolMapping`s, one for each resolved symbol. |

where `SymbolMapping` has the following structure:

| Field | Type | Description |
| `raw_symbol` | char\[symbol_cstr_len\] | The symbol requested symbol `stype_in`. |
| `interval_length` | uint32_t | The number of `MappingInterval`s in `intervals`. |
| `intervals` | MappingInterval\[interval_length\] | The `MappingInterval`s associated with `raw_symbol`. |

and where `MappingInterval` has the following structure:

| Field | Type | Description |
| `start_date` | uint32_t | The start date of the interval, as a YYYYMMDD integer. |
| `end_date` | uint32_t | The end date of the interval, as a YYYYMMDD integer. |
| `symbol` | char\[symbol_cstr_len\] | The symbol in `stype_out` to which `raw_symbol` corresponds for the interval between `start_date` and `end_date`, where `symbol_cstr_len` is specified earlier in the Metadata. This is often `instrument_id` because it is the default `stype_out`. |

### Records

The metadata is immediately followed by DBN records. A valid DBN stream or file
contains zero or more records.

All records begin with the same 16-byte `RecordHeader` with the following structure:

| Field | Type | Description |
| `length` | uint8_t | The length of the record in 32-bit words. |
| `rtype` | uint8_t | The record type. Each schema corresponds with a single `rtype` value. See [Rtype](https://databento.com/docs/conventions/common-fields-enums-types.md#rtype). |
| `publisher_id` | uint16_t | The publisher ID assigned by Databento, which denotes the dataset and venue. |
| `instrument_id` | uint32_t | The numeric instrument ID. |
| `ts_event` | uint64_t | The event timestamp as the number of nanoseconds since the [UNIX epoch](https://en.wikipedia.org/wiki/Unix_time). |

See the [Schemas and data formats](https://databento.com/docs/schemas.md) section for a full list of fields for the record associated with each schema.

### Versioning

We use the version field in the metadata header to signal changes to the structure of record types and metadata.

#### Version 2

The following was changed:
- Metadata:
  - Sets `version` to 2
  - Adds `symbol_cstr_len` field
  - Rearranges padding
  - The fixed-length strings for symbology are now defined to have `symbol_cstr_len` characters (currently 71), whereas in version 1 they always had 22
- `InstrumentDefMsg` (definition schema):
  - `raw_symbol` now has `symbol_cstr_len` characters (71)
  - Rearranges padding
- `SymbolMappingMsg` (live symbology):
  - `stype_in_symbol` and `stype_out_symbol` now have `symbol_cstr_len` characters (71)
  - Adds `stype_in` and `stype_out` fields
  - Removes padding
- `ErrorMsg` (gateway errors in live)
  - Adds space to `err` for longer error messages
  - Adds `code` and `is_last` fields
- `SystemMsg` (non-error gateway messages in live)
  - Add space to `msg` for longer messages
  - Adds `code` field

#### Version 3

This set of changes adds support for strategy legs to the definition schema
and an expanded `quantity` field in the statistics schemas.
- Added 8-byte alignment padding to the end of metadata
- Expanded `quantity` to 64 bits in `StatMsg` (statistics schema)
- `InstrumentDefMsg` (definition schema):
  - A definition record will be created for each strategy leg
  - Adds the following leg fields:
    - `leg_count`
    - `leg_index`
    - `leg_instrument_id`
    - `leg_raw_symbol`
    - `leg_side`
    - `leg_underlying_id`
    - `leg_instrument_class`
    - `leg_ratio_qty_numerator`
    - `leg_ratio_qty_denominator`
    - `leg_ratio_price_numerator`
    - `leg_ratio_price_denominator`
    - `leg_price`
    - `leg_delta`
  - Expands `asset` to 11 bytes
  - Expands `raw_instrument_id` to 64 bits to support publishers that use larger IDs
  - Removal of statistics-schema related fields `trading_reference_price`,
    `trading_reference_date`, and `settl_price_type`
  - Removal of the status-schema related field `md_security_trading_status`

> **Info**
> CSV and JSON are affected by the new fields.

Currently, version 3 is used for the `EQUS.SIP`, `GLBX.MDP3`, `IFEU.IMPACT`, `IFLL.IMPACT`, `IFUS.IMPACT`, `NDEX.IMPACT`, `OCEA.MEMOIR`, `XCBF.PITCH`, `XEEE.EOBI`, and `XEUR.EOBI` datasets.
All other datasets use version 1.
The DBN crate and client libraries will continue to support decoding earlier versions.

**Upgrading to versions**

DBN files can be upgraded to a newer version with the `dbn` CLI tool by passing the target version to `--upgrade` or `-u`.
```sh
dbn version1.dbn --output version3.dbn --upgrade 3
```

### Comparison with other encodings and formats

DBN is designed specifically for normalized market data. It adopts a fixed
set of struct definitions, also called **message schemas**, for this purpose. It's
important to note that DBN is not a general-purpose serialization format like
Simple Binary Encoding (SBE) or Google Protocol Buffers (protobufs), which provide a
flexible schema definition language. Unlike these formats, DBN doesn't offer tools for
generating decoders or encoders from any user-specified schema.

When comparing DBN to most encodings or serialization formats, a critical
difference is that DBN is a zero-copy encoding. Moreover, what makes DBN most unique is
that it's simultaneously intended for three common use cases in a trading system:
file format, real-time messaging format, and in-memory representation. This is a very
specific convergence of use cases that manifests frequently in financial trading
systems.

Other encodings or formats typically used in situations where DBN would be a suitable
replacement include:
- SBE
- Apache Parquet
- Apache Arrow
- Feather

Comparing to these, DBN is intended to be good at all three abovementioned use cases of
a trading system--so you don't have to mix multiple serialization formats in one
system--while the others tend to excel only in one or two use cases.

A single format for all use cases carries a more important benefit for
trading than just the performance upside that comes with minimizing copies; it ensures
that market data is immutable when it passes through your trading system. The following
diagram helps you visualize the difference between a potential trading system that uses
DBN compared to a typical trading system that doesn't.

| Typical trading environment (top chart) | Trading environment using DBN (bottom chart) |
| Market data in multiple message, file, and in-memory formats | Market data in a single format |
| Multiple layers of serialization and deserialization | No transformation of data |
| Incurs risk of inconsistent state between components using market data | Eliminates risk of inconsistent state between components using market data |
| Complex, slow code | Simple, fast code |

![Typical trading environment](https://databento.com/docs/typical-trading-environment.svg)
<p class="img-caption">Typical trading environment</p>

![Trading environment using DBN](https://databento.com/docs/trading-environment-using-dbn.svg)
<p class="img-caption">Trading environment using DBN</p>

Immutable market data makes it easy to align live trading with post-production logs and
historical data; it makes it easy to use the same code for live trading, backtesting,
and exploratory research; it also makes it easy to write GUIs that need accurately
synchronize order events with market data events, especially market data events that
triggered those order events. In short, using the same encoding or format everywhere
ensures that state is synchronized throughout distributed parts of your trading system.

For these reasons, most mature trading firms eventually end up implementing their own
proprietary encoding that resembles DBN.

The following table summarizes other key comparisons:

|  | **DBN** | **SBE** | **Parquet** | **Arrow** |
| **Schema definition** | Fixed schemas | XML | Thrift, Avro, Protobuf | Arrow object model |
| **Layout** | Sequential | Sequential | Column-oriented | Column-oriented |
| **Zero copy** | Yes | Yes | No | Limited support |
| **Suitable for real-time messaging** | Yes | Yes | No | No |
| **Suitable as file format** | Yes | Yes | Yes | Through Feather |
| **Metadata** | Yes | No, user-defined | No, user-defined | No |
| **Sequential read** | Fastest | Fast | Moderate | Moderate |
| **Sequential write** | Fastest | Fast | Slowest | Moderate (Feather) |
| **Compressed size** | Small | Moderate | Smallest | Largest (Feather) |
| **Transcoding to CSV** | Yes | No | Through pandas | Yes |
| **Transcoding to JSON** | Yes | No | Through pandas | No |
| **Mapping to pandas** | Yes | No | Yes | Yes |
| **Package size (lines of code)** | 16.0k (v0.14.0) | 55.7k (v1.27.0) | 108.5k (v1.12.3) | 1.6M (v12.0.0) |
| **Language support** | Python, C++, Rust, C bindings | C++, Java, C# | 11+ languages | 11+ languages |
| **Use case** | Market data (storage, replay, research, real-time messaging, normalization, OMS, EMS, GUIs) | Direct venue connectivity | Storage file format | Data exploration |

### Frequently asked questions

**Isn't this basically a bunch of raw structs? What's so special about this?**

Yes, pretty much! And it's not exactly novel--in our experience, most top-tier trading
firms will have something similar already implemented, along with proprietary tooling
to support it. The significance of DBN is that we're open sourcing the whole toolset,
with many best practices for normalization and performance optimization, so that you
don't have to reinvent the wheel.

Another purpose of DBN is that it provides a standardized data interchange format that
can be used for high-throughput, low latency streaming between a data provider like us
and you. At the time of the initial release of DBN, we're not aware of any data
provider that adopts a binary flat file or messaging format with similar zero-copy
semantics.

Even if you don't want to use DBN exactly, it's a lightweight specification so
it's easy to mimic some of its practices or fork our reference implementation for
your own use case.

**When should you not use DBN?**

- When you depend on many tools and frameworks in the Apache ecosystem.
Many data processing tools have native support for Apache Parquet and Arrow.
However in our experience, mature trading environments generally use fewer
general-purpose computation frameworks. In these cases, DBN is still excellent as
an interchange format for receiving and storing data from Databento, and we still
support [converting DBN to pandas dataframes](https://databento.com/docs/api-historical/helpers/dbn-store-to-df.md?lang=python)
and hence Arrow format.
- If you don't use Databento, only ever plan on trading on one trading venue,
have already written parsers for the raw feeds, and have direct extranet connectivity,
then there's a strong argument for just using the original wire protocol like ITCH and
even rolling your own, thinner normalization format.
- If you have an academic or toy project and only plan on working with historical data.
Many such projects employ relatively small amounts of data and don't require
live data. In these circumstances, it makes sense to just store the data in your own,
thinner binary format or a binary format with some structure like Parquet or HDF5.
- If you have to support many teams with one platform, with different trading styles
and business functions, of which many of them only require low frequency data. In this
situation, the performance benefits of fixed schemas become much less important within
your organization, and the flexibility becomes more important. It's also quite likely
in this situation that you have to constantly update your normalization format for new
exploratory workflows. In those cases, DBN is still excellent as an interchange
format for receiving and storing data from Databento, but your firm will likely benefit
from converting DBN data into flexible formats downstream.

**Encoding, serialization format, protocol--what's the difference?**

There are slight differences in these terms but DBN is all three at once.

One way to look at DBN is that it's an OSI layer 6 presentation protocol, much like
SBE--except that DBN is much stricter about message schemas, whereas SBE is flexible.

Data written in accordance to such a protocol can be persisted to disk, so it can also
serve as a storage format; it can also be written on the wire as a message encoding
or wire format. SBE excels as a message encoding but is less often used as a storage
format, whereas DBN accommodates both equally well.

**Why is the reference implementation written in Rust? Can I use it?**

The majority of Databento's infrastructure is written in Rust, C, and Python, and the
reference implementation of DBN is a rewrite of the original C implementation
and was originally written with internal use in mind.

Rust's C ABI makes it interoperable across multiple languages with thin bindings,
and its memory management model makes it safe and performant. It's simple to integrate
the Rust DBN library into your Python application, as seen in our [Python
client library](https://github.com/databento/databento-python).

**Why is DBN sequential and not column-oriented? Aren't modern column-oriented layouts
more optimized for querying?**

The sequential layout of DBN makes it more performant for real-time messaging use
cases.

Column-oriented formats do have the theoretical potential for more optimization in
non-real time use cases, but this depends on the actual implementation. Our reference
DBN implementation is heavily optimized and still on par with column-oriented formats
like Apache Arrow on common use cases for historical market data.

**Am I locked-in to a proprietary binary format here?**

No, the DBN reference implementation is open-sourced under the permissive [Apache 2.0
License](https://github.com/databento/dbn/blob/main/LICENSE). We also provide
transcoders to convert your DBN data into CSV and JSON.

**How is DBN being used currently?**

We store upwards of 4 PB and over 30 trillion records of normalized historical data in
DBN internally at Databento. Every single message that passes through our
infrastructure gets encoded in DBN--over billions of messages per day, at single-port
peak messaging rates over 60 Gbps, spanning multiple asset classes and over 1.8 million
instruments on any given day. It is used for all of our data schemas, including full
order book, tick-by-tick trades, top of the book, OHLCV aggregates, venue statistics,
instrument definitions, and more.

Most of users, including some of the world's largest hedge funds and market making
firms, are already using DBN through our client libraries, putting it
through multiple production use cases that involve real-time streaming and historical
flat files.


# Zstandard (zstd)

Zstandard is a fast, lossless compression algorithm that offers high compression ratios,
making it suitable for storing and transmitting large amounts of data.

This compression algorithm is recommended by Databento for all historical streaming and batch downloads, as it
minimizes the amount of data transmitted over the network and stored on file systems.
You can select Zstandard compression by using the `zstd` option through the client libraries or the HTTP API.

Once you have obtained Zstandard compressed data from Databento, you have a number of options for
decompressing:
- **Databento client libraries.** Decompression from Zstandard is handled internally. Refer to the [API reference](https://databento.com/docs/api-historical.md) for usage details
- **dbn-cli.** The Databento CLI tool for working with DBN data also includes support for decompressing `.zst` files. See [Installing dbn-cli](https://databento.com/docs/conventions/databento-binary-encoding.md#installing-dbn-cli) for setup instructions
- **7-Zip.** To decompress using [7-Zip](https://www.7-zip.org/) for Windows, you'll need to install the [7-Zip Zstandard edition](https://github.com/mcmilk/7-Zip-zstd). Then right-click on the `.zst` file, navigate to the 7-Zip menu, and select 'Extract here' or 'Extract to \<folder\>'
- **zstd CLI.** Used directly from the command line (described below), or via your own bash scripts

### Installing Zstandard

The Zstandard (`zstd`) library can be installed on most operating systems, as detailed below:

**macOS**

    brew install zstd

**Linux**

Debian/Ubuntu:

    sudo apt-get update
    sudo apt-get install zstd

CentOS/RHEL:

    sudo dnf install zstd

Arch:

    sudo pacman -S zstd

**Windows**

Using Chocolatey:

    choco install zstd

Alternatively, you can also download the Zstandard binaries from the [official releases page on GitHub](https://github.com/facebook/zstd/releases) and add the directory to your `PATH`.
You can also install from source by following the instructions in the [Zstandard GitHub repository](https://github.com/facebook/zstd).

Verify your installation by checking the version of Zstandard:

    zstd --version

### Decompressing

Once Zstandard is installed on your machine, you can utilize its command line interface (CLI) for
various operations, including decompression and recompression. Below, we'll explore commands
specifically for decompressing Zstandard-compressed files in different scenarios.

To view all available options in the Zstandard CLI, you can run the help command:

    zstd -h

**Decompress to a file**

To decompress a file that has been compressed with Zstandard, use the `-d` (or `--decompress`)
option followed by the filename. For example, if you have a file named `data.zst`, you can
decompress it with the following command:

    zstd -d data.zst

This will create a decompressed file named data in the same directory.

> **Tip**
>
> You can decompress a Zstandard-compressed Databento batched data file by running the following command:
>
> `zstd -d glbx-mdp3-20231201.trades.csv.zst`
>
> This will result in the decompressed file, `glbx-mdp3-20231201.trades.csv`, being created in the current directory.

If you want to decompress the file to a specific output file, you can use the `-o` option:

    zstd -d data.zst -o decompressed_data.txt

This command will decompress `data.zst` into a file named `decompressed_data.txt`.

By default, `zstd` will *not* overwrite existing files. If you need to decompress and overwrite any
existing files, you can use the `-f` (force) option:

    zstd -d -f data.zst

This will decompress data.zst and overwrite any existing file with the same name as the output.

**Decompressing multiple files**

You can also decompress multiple files at once by specifying multiple filenames:

    zstd -d file1.zst file2.zst file3.zst

**Using wildcards for batch decompression**

In a directory with multiple `.zst` files, you can decompress all of them using a wildcard (`*`).
This is particularly useful for batch processing:

    zstd -d *.zst

This command will decompress all files in the current directory with the `.zst` extension.

> **Tip**
>
> Running this command in a batch download directory will decompress all .zst files at once.

**Decompressing to standard output**

If you want to decompress a file and output the contents directly to the terminal (standard output),
use the `--stdout` option:

    zstd -d --stdout data.zst

This could be useful for piping the decompressed output to other programs in bash scripts.


# MBO snapshots

An [MBO](https://databento.com/docs/schemas/mbo.md) snapshot represents the order book at a specific point in time, including all outstanding buy and sell orders.
The snapshot is streamed as a sequence of MBO records to insert new orders in the book (a sequence of **A**dd [Actions](https://databento.com/docs/conventions/common-fields-enums-types.md#action)).
The snapshot records preserve the priority order (per instrument) at each price level, enabling accurate reconstruction of the order book.

All snapshot records are marked with the `F_SNAPSHOT` and `F_BAD_TS_RECV` [flags](https://databento.com/docs/conventions/common-fields-enums-types.md#flags) (`ts_recv` is set to the snapshot generation timestamp).
An instrument's snapshot starts with a clea**R** action, followed by zero or more **A**dd Actions.

The snippet below shows the result of a snapshot request for 2 instruments.

```python
MboMsg { hd: RecordHeader { length: 14, rtype: Mbo, publisher_id: GlbxMdp3Glbx, instrument_id: 4916, ts_event: 1718539204593519451 }, order_id: 0, price: UNDEF_PRICE, size: 0, flags: SNAPSHOT | BAD_TS_RECV (40), channel_id: 0, action: 'R', side: 'N', ts_recv: 1718582400000000000, ts_in_delta: 0, sequence: 0 }
MboMsg { hd: RecordHeader { length: 14, rtype: Mbo, publisher_id: GlbxMdp3Glbx, instrument_id: 4916, ts_event: 1718539204593519451 }, order_id: 6413364814613, price: 5560.000000000, size: 1, flags: SNAPSHOT | BAD_TS_RECV (40), channel_id: 0, action: 'A', side: 'B', ts_recv: 1718582400000000000, ts_in_delta: 0, sequence: 752 }
...
MboMsg { hd: RecordHeader { length: 14, rtype: Mbo, publisher_id: GlbxMdp3Glbx, instrument_id: 4916, ts_event: 1718582343502504063 }, order_id: 6413384952694, price: 5655.000000000, size: 2, flags: SNAPSHOT | BAD_TS_RECV (40), channel_id: 0, action: 'A', side: 'B', ts_recv: 1718582400000000000, ts_in_delta: 0, sequence: 175066 }
MboMsg { hd: RecordHeader { length: 14, rtype: Mbo, publisher_id: GlbxMdp3Glbx, instrument_id: 4916, ts_event: 1718582343502957759 }, order_id: 6413384952695, price: 5691.000000000, size: 2, flags: LAST | SNAPSHOT | BAD_TS_RECV (168), channel_id: 0, action: 'A', side: 'A', ts_recv: 1718582400000000000, ts_in_delta: 0, sequence: 175067 }

MboMsg { hd: RecordHeader { length: 14, rtype: Mbo, publisher_id: GlbxMdp3Glbx, instrument_id: 5002, ts_event: 1718539204593519451 }, order_id: 0, price: UNDEF_PRICE, size: 0, flags: SNAPSHOT | BAD_TS_RECV (40), channel_id: 0, action: 'R', side: 'N', ts_recv: 1718582400000000000, ts_in_delta: 0, sequence: 0 }
MboMsg { hd: RecordHeader { length: 14, rtype: Mbo, publisher_id: GlbxMdp3Glbx, instrument_id: 5002, ts_event: 1718539204593519451 }, order_id: 6413256341927, price: 4650.000000000, size: 1, flags: SNAPSHOT | BAD_TS_RECV (40), channel_id: 0, action: 'A', side: 'B', ts_recv: 1718582400000000000, ts_in_delta: 0, sequence: 519 }
...
MboMsg { hd: RecordHeader { length: 14, rtype: Mbo, publisher_id: GlbxMdp3Glbx, instrument_id: 5002, ts_event: 1718582366242085265 }, order_id: 6413384879630, price: 5612.500000000, size: 1, flags: SNAPSHOT | BAD_TS_RECV (40), channel_id: 0, action: 'A', side: 'B', ts_recv: 1718582400000000000, ts_in_delta: 0, sequence: 175633 }
MboMsg { hd: RecordHeader { length: 14, rtype: Mbo, publisher_id: GlbxMdp3Glbx, instrument_id: 5002, ts_event: 1718582366260973309 }, order_id: 6413384879629, price: 5632.500000000, size: 1, flags: LAST | SNAPSHOT | BAD_TS_RECV (168), channel_id: 0, action: 'A', side: 'A', ts_recv: 1718582400000000000, ts_in_delta: 0, sequence: 175760 }
```

The snapshot for an empty order book has a single MBO record with clea**R** action, marked with the flags `F_SNAPSHOT` and `F_LAST`, as in the snippet below.

```python
MboMsg { hd: RecordHeader { length: 14, rtype: Mbo, publisher_id: GlbxMdp3Glbx, instrument_id: 14160, ts_event: 1718117495809255541 }, order_id: 0, price: UNDEF_PRICE, size: 0, flags: LAST | SNAPSHOT | BAD_TS_RECV (168), channel_id: 0, action: 'R', side: 'N', ts_recv: 18446744073709551615, ts_in_delta: 0, sequence: 0 }
```

MBO snapshots are available from both the historical and live APIs.

### Historical API

We offer MBO snapshot through the [Historical API](https://databento.com/docs/api-historical.md) for venues that follow a weekly session structure ([CME Globex MDP 3.0](https://databento.com/docs/datasets/glbx-mdp3.md)), and for venues whose daily trading sessions cross 00:00:00 UTC ([ICE Europe Commodities iMpact](https://databento.com/docs/datasets/ifeu-impact.md)).
The order book snapshot is generated at 00:00:00 UTC each weekday (Monday-Friday).

Snapshot records are streamed through the [Historical API](https://databento.com/docs/api-historical/timeseries.md) when the requested interval includes midnight UTC for a given weekday.
The snippet below shows an example of a timeseries request in Python whose result includes an MBO snapshot.

```python
client.timeseries.get_range(
    dataset="GLBX.MDP3",
    symbols="ES.c.2",
    stype_in="continuous",
    schema="mbo",
    start="2024-06-16T23:58:50",
    end="2024-06-17T00:00:10",
)
```

```python
MboMsg { hd: RecordHeader { length: 14, rtype: Mbo, publisher_id: GlbxMdp3Glbx, instrument_id: 183748, ts_event: 1718582336782043745 }, order_id: 6413384952478, price: 5564.750000000, size: 1, flags: LAST (130), channel_id: 0, action: 'A', side: 'A', ts_recv: 1718582336782569129, ts_in_delta: 12306, sequence: 174718 }
MboMsg { hd: RecordHeader { length: 14, rtype: Mbo, publisher_id: GlbxMdp3Glbx, instrument_id: 183748, ts_event: 1718582336782045281 }, order_id: 6413384879627, price: 5560.500000000, size: 1, flags: LAST (130), channel_id: 0, action: 'M', side: 'B', ts_recv: 1718582336782613211, ts_in_delta: 12838, sequence: 174721 }
...
MboMsg { hd: RecordHeader { length: 14, rtype: Mbo, publisher_id: GlbxMdp3Glbx, instrument_id: 183748, ts_event: 1718582388400474957 }, order_id: 6413384953470, price: 5562.750000000, size: 1, flags: LAST (130), channel_id: 0, action: 'A', side: 'B', ts_recv: 1718582388400587693, ts_in_delta: 14247, sequence: 176276 }
MboMsg { hd: RecordHeader { length: 14, rtype: Mbo, publisher_id: GlbxMdp3Glbx, instrument_id: 183748, ts_event: 1718539204593519451 }, order_id: 0, price: UNDEF_PRICE, size: 0, flags: SNAPSHOT | BAD_TS_RECV (40), channel_id: 0, action: 'R', side: 'N', ts_recv: 1718582400000000000, ts_in_delta: 0, sequence: 0 }
MboMsg { hd: RecordHeader { length: 14, rtype: Mbo, publisher_id: GlbxMdp3Glbx, instrument_id: 183748, ts_event: 1718539204593519451 }, order_id: 6413383913050, price: 5500.000000000, size: 1, flags: SNAPSHOT | BAD_TS_RECV (40), channel_id: 0, action: 'A', side: 'B', ts_recv: 1718582400000000000, ts_in_delta: 0, sequence: 936 }
MboMsg { hd: RecordHeader { length: 14, rtype: Mbo, publisher_id: GlbxMdp3Glbx, instrument_id: 183748, ts_event: 1718539204593519451 }, order_id: 6413373623913, price: 5475.000000000, size: 1, flags: SNAPSHOT | BAD_TS_RECV (40), channel_id: 0, action: 'A', side: 'B', ts_recv: 1718582400000000000, ts_in_delta: 0, sequence: 936 }
...
MboMsg { hd: RecordHeader { length: 14, rtype: Mbo, publisher_id: GlbxMdp3Glbx, instrument_id: 183748, ts_event: 1718582388400474957 }, order_id: 6413384953470, price: 5562.750000000, size: 1, flags: LAST | SNAPSHOT | BAD_TS_RECV (168), channel_id: 0, action: 'A', side: 'B', ts_recv: 1718582400000000000, ts_in_delta: 0, sequence: 176276 }
MboMsg { hd: RecordHeader { length: 14, rtype: Mbo, publisher_id: GlbxMdp3Glbx, instrument_id: 183748, ts_event: 1718582400066482471 }, order_id: 6413384953619, price: 5564.750000000, size: 1, flags: LAST (130), channel_id: 0, action: 'A', side: 'A', ts_recv: 1718582400066580869, ts_in_delta: 14145, sequence: 176515 }
MboMsg { hd: RecordHeader { length: 14, rtype: Mbo, publisher_id: GlbxMdp3Glbx, instrument_id: 183748, ts_event: 1718582401163834877 }, order_id: 6413384953619, price: 5564.750000000, size: 1, flags: LAST (130), channel_id: 0, action: 'C', side: 'A', ts_recv: 1718582401163946845, ts_in_delta: 13326, sequence: 176774 }
...
MboMsg { hd: RecordHeader { length: 14, rtype: Mbo, publisher_id: GlbxMdp3Glbx, instrument_id: 183748, ts_event: 1718582409155703017 }, order_id: 6413384953440, price: 5413.250000000, size: 1, flags: LAST (130), channel_id: 0, action: 'M', side: 'B', ts_recv: 1718582409155796258, ts_in_delta: 12560, sequence: 178707 }
```

### Live API

Users can request an MBO snapshot through the live API to obtain the recent order book state without replaying the whole trading session.
The following sequence of messages is streamed from a live session after a snapshot subscription.

1. [Symbol mapping messages](https://databento.com/docs/api-live/basics/symbology.md)
2. Snapshot records (clear book and outstanding orders at each price level)
3. Real-time records

> **Warning**
>
> The order book of a given instrument is not guaranteed to be in a complete and valid state after the last snapshot record because it might not correspond to the final event record (indicated with the `F_LAST` [flag](https://databento.com/docs/conventions/common-fields-enums-types.md#flags)).
> If the last snapshot record does not have the `F_LAST` flag set, the order book will not be valid until the next MBO record with the `F_LAST` flag set.

The example below shows the live stream for a snapshot subscription for a single instrument, followed by a real-time record.

```python
SymbolMappingMsg { hd: RecordHeader { length: 44, rtype: SymbolMapping, publisher_id: 0, instrument_id: 118, ts_event: 1721732190956747490 }, stype_in: 255, stype_in_symbol: "ES.c.0", stype_out: 255, stype_out_symbol: "ESU4", start_ts: 18446744073709551615, end_ts: 18446744073709551615 }
MboMsg { hd: RecordHeader { length: 14, rtype: Mbo, publisher_id: GlbxMdp3Glbx, instrument_id: 118, ts_event: 1721732152358684229 }, order_id: 0, price: UNDEF_PRICE, size: 0, flags: SNAPSHOT | BAD_TS_RECV (40), channel_id: 0, action: 'R', side: 'N', ts_recv: 1721732152358684229, ts_in_delta: 0, sequence: 0 }
MboMsg { hd: RecordHeader { length: 14, rtype: Mbo, publisher_id: GlbxMdp3Glbx, instrument_id: 118, ts_event: 1721579296070204729 }, order_id: 6413514530616, price: 5547.500000000, size: 8, flags: SNAPSHOT | BAD_TS_RECV (40), channel_id: 0, action: 'A', side: 'B', ts_recv: 1721732152358684229, ts_in_delta: 0, sequence: 1022 }
MboMsg { hd: RecordHeader { length: 14, rtype: Mbo, publisher_id: GlbxMdp3Glbx, instrument_id: 118, ts_event: 1721579296070204729 }, order_id: 6413514530330, price: 5547.250000000, size: 7, flags: SNAPSHOT | BAD_TS_RECV (40), channel_id: 0, action: 'A', side: 'B', ts_recv: 1721732152358684229, ts_in_delta: 0, sequence: 1022 }
...
MboMsg { hd: RecordHeader { length: 14, rtype: Mbo, publisher_id: GlbxMdp3Glbx, instrument_id: 118, ts_event: 1721579296070204729 }, order_id: 6413506441952, price: 5628.000000000, size: 1, flags: SNAPSHOT | BAD_TS_RECV (40), channel_id: 0, action: 'A', side: 'A', ts_recv: 1721732152358684229, ts_in_delta: 0, sequence: 1101 }
MboMsg { hd: RecordHeader { length: 14, rtype: Mbo, publisher_id: GlbxMdp3Glbx, instrument_id: 118, ts_event: 1721579296070204729 }, order_id: 6413500305436, price: 5628.250000000, size: 6, flags: SNAPSHOT | BAD_TS_RECV (40), channel_id: 0, action: 'A', side: 'A', ts_recv: 1721732152358684229, ts_in_delta: 0, sequence: 1058 }
...
MboMsg { hd: RecordHeader { length: 14, rtype: Mbo, publisher_id: GlbxMdp3Glbx, instrument_id: 118, ts_event: 1721732152290217707 }, order_id: 6413522310536, price: 5613.250000000, size: 3, flags: SNAPSHOT | BAD_TS_RECV (42), channel_id: 0, action: 'A', side: 'A', ts_recv: 1721732152358684229, ts_in_delta: 0, sequence: 13076493 }
MboMsg { hd: RecordHeader { length: 14, rtype: Mbo, publisher_id: GlbxMdp3Glbx, instrument_id: 118, ts_event: 1721732152290632121 }, order_id: 6413522309988, price: 5512.500000000, size: 6, flags: LAST | SNAPSHOT | BAD_TS_RECV (170), channel_id: 0, action: 'A', side: 'B', ts_recv: 1721732152358684229, ts_in_delta: 0, sequence: 13076496 }
MboMsg { hd: RecordHeader { length: 14, rtype: Mbo, publisher_id: GlbxMdp3Glbx, instrument_id: 118, ts_event: 1721732152365904111 }, order_id: 6413522310535, price: 5613.250000000, size: 1, flags: LAST (130), channel_id: 0, action: 'C', side: 'A', ts_recv: 1721732152366001513, ts_in_delta: 14406, sequence: 13076497 }
MboMsg { hd: RecordHeader { length: 14, rtype: Mbo, publisher_id: GlbxMdp3Glbx, instrument_id: 118, ts_event: 1721732152365916169 }, order_id: 6413522310537, price: 5613.000000000, size: 1, flags: LAST (130), channel_id: 0, action: 'A', side: 'B', ts_recv: 1721732152366014389, ts_in_delta: 12865, sequence: 13076498 }
...
```

### Timestamp fields on snapshot messages

The [timestamp](https://databento.com/docs/conventions/common-fields-enums-types.md#timestamps) fields for snapshot messages are described below.

- `ts_event`: unchanged. The clea**R** book MBO record from the Live API snapshot contains the snapshot generation timestamp instead
- `ts_in_delta`: always 0
- `ts_recv`: set to the snapshot generation timestamp (indicated with the `F_BAD_TS_RECV` flag)
- `ts_out`: unchanged

### Public client support for MBO snapshot

Live and historical snapshot features are available on all our official client libraries ([Python](https://github.com/databento/databento-python), [C++](https://github.com/databento/databento-cpp), [Rust](https://github.com/databento/databento-rs)), as well as through our [Raw API](https://databento.com/docs/api-live.md).

An example of a live snapshot subscription using our client libraries can be found in [this article](https://databento.com/docs/examples/basics-live/live-snapshot.md).



# Reference data enums

Exchanges, event types, other fields included in Databento's corporate actions data and reference
data API. Over 60 event types, including splits, dividends, adjustment factors, and listings.

The following tables specify the descriptions for all reference data enums found in responses.

> **See also**
>
> [Corporate actions](https://databento.com/docs/datasets/corporate-actions.md) dataset guide for further details.

### ACTION

| Value [//]: # (column: sortable) | Description [//]: # (column: sortable) |
| `C` | Cancelled |
| `D` | Deleted |
| `I` | Inserted |
| `P` | Payment details Cancelled by Issuer |
| `Q` | Payment details Deleted by Data Supplier |
| `U` | Updated |

### CNTRY

| Value [//]: # (column: sortable) | Description [//]: # (column: sortable) |
| `AA` | Supranational |
| `AD` | Andorra |
| `AE` | United Arab Emirates |
| `AF` | Afghanistan |
| `AG` | Antigua and Barbuda |
| `AI` | Anguilla |
| `AL` | Albania |
| `AM` | Armenia |
| `AO` | Angola |
| `AR` | Argentina |
| `AS` | American Samoa |
| `AT` | Austria |
| `AU` | Australia |
| `AW` | Aruba |
| `AZ` | Azerbaijan |
| `BA` | Bosnia and Herzegovina |
| `BB` | Barbados |
| `BD` | Bangladesh |
| `BE` | Belgium |
| `BF` | Burkina Faso |
| `BG` | Bulgaria |
| `BH` | Bahrain |
| `BI` | Burundi |
| `BJ` | Benin |
| `BM` | Bermuda |
| `BN` | Brunei Darussalam |
| `BO` | Bolivia |
| `BR` | Brazil |
| `BS` | Bahamas |
| `BT` | Bhutan |
| `BV` | Bouvet Island |
| `BW` | Botswana |
| `BY` | Belarus |
| `BZ` | Belize |
| `CA` | Canada |
| `CC` | Cocos Islands |
| `CD` | Congo Democratic Republic |
| `CF` | Central African Republic |
| `CG` | Congo |
| `CH` | Switzerland |
| `CI` | Ivory Coast |
| `CK` | Cook Islands |
| `CL` | Chile |
| `CM` | Cameroon |
| `CN` | China |
| `CO` | Colombia |
| `CR` | Costa Rica |
| `CU` | Cuba |
| `CV` | Cape Verde |
| `CW` | Curaçao |
| `CX` | Christmas Islands |
| `CY` | Cyprus |
| `CZ` | Czech Republic |
| `DE` | Germany |
| `DJ` | Djibouti |
| `DK` | Denmark |
| `DM` | Dominica |
| `DO` | Dominican Republic |
| `DZ` | Algeria |
| `EC` | Ecuador |
| `EE` | Estonia |
| `EG` | Egypt |
| `EH` | Western Sahara |
| `ES` | Spain |
| `ET` | Ethiopia |
| `EU` | Europe |
| `FI` | Finland |
| `FJ` | Fiji |
| `FK` | Falkland Islands |
| `FM` | Micronesia |
| `FO` | Faroe Islands |
| `FR` | France |
| `GA` | Gabon |
| `GB` | United Kingdom |
| `GD` | Grenada |
| `GE` | Georgia |
| `GF` | French Guyana |
| `GG` | Guernsey |
| `GH` | Ghana |
| `GI` | Gibraltar |
| `GL` | Greenland |
| `GM` | Gambia |
| `GN` | Guinea |
| `GP` | Guadeloupe |
| `GQ` | Equatorial Guinea |
| `GR` | Greece |
| `GT` | Guatemala |
| `GU` | Guam |
| `GW` | Guinea-Bissau |
| `GY` | Guyana |
| `HK` | Hong Kong |
| `HM` | Heard Island & McDonald Island |
| `HN` | Honduras |
| `HR` | Croatia |
| `HT` | Haiti |
| `HU` | Hungary |
| `ID` | Indonesia |
| `IE` | Ireland |
| `IL` | Israel |
| `IM` | Isle of Man |
| `IN` | India |
| `IO` | British Indian Ocean territory |
| `IQ` | Iraq |
| `IR` | Iran |
| `IS` | Iceland |
| `IT` | Italy |
| `JE` | Jersey |
| `JM` | Jamaica |
| `JO` | Jordan |
| `JP` | Japan |
| `KE` | Kenya |
| `KG` | Kyrgyz Republic |
| `KH` | Cambodia |
| `KI` | Kiribati |
| `KM` | Comoros |
| `KN` | St. Kitts & Nevis |
| `KP` | Korea (North) |
| `KR` | Korea (South) |
| `KW` | Kuwait |
| `KY` | Cayman Islands |
| `KZ` | Kazakhstan |
| `LA` | Laos |
| `LB` | Lebanon |
| `LC` | St. Lucia |
| `LI` | Liechtenstein |
| `LK` | Sri Lanka |
| `LR` | Liberia |
| `LS` | Lesotho |
| `LT` | Lithuania |
| `LU` | Luxembourg |
| `LV` | Latvia |
| `LY` | Libya |
| `MA` | Morocco |
| `MC` | Monaco |
| `MD` | Moldova |
| `ME` | Montenegro |
| `MG` | Madagascar |
| `MH` | Marshall Islands |
| `MK` | North Macedonia |
| `ML` | Mali |
| `MM` | Myanmar |
| `MN` | Mongolia |
| `MO` | Macao |
| `MP` | Northern Mariana Islands |
| `MQ` | Martinique |
| `MR` | Mauritania |
| `MS` | Montserrat |
| `MT` | Malta |
| `MU` | Mauritius |
| `MV` | Maldives |
| `MW` | Malawi |
| `MX` | Mexico |
| `MY` | Malaysia |
| `MZ` | Mozambique |
| `NA` | Namibia |
| `NC` | New Caledonia |
| `NE` | Niger |
| `NF` | Norfolk Island |
| `NG` | Nigeria |
| `NI` | Nicaragua |
| `NL` | Netherlands |
| `NO` | Norway |
| `NP` | Nepal |
| `NR` | Nauru |
| `NU` | Niue |
| `NZ` | New Zealand |
| `OM` | Oman |
| `PA` | Panama |
| `PE` | Peru |
| `PF` | French Polynesia |
| `PG` | Papua New Guinea |
| `PH` | Philippines |
| `PK` | Pakistan |
| `PL` | Poland |
| `PM` | St. Pierre and Miquelon |
| `PN` | Pitcairn |
| `PR` | Puerto Rico |
| `PS` | Palestine |
| `PT` | Portugal |
| `PW` | Palau |
| `PY` | Paraguay |
| `QA` | Qatar |
| `RE` | Reunion |
| `RO` | Romania |
| `RS` | Serbia |
| `RU` | Russia |
| `RW` | Rwanda |
| `SA` | Saudi Arabia |
| `SB` | Solomon Islands |
| `SC` | Seychelles |
| `SD` | Sudan |
| `SE` | Sweden |
| `SG` | Singapore |
| `SH` | St. Helena |
| `SI` | Slovenia |
| `SJ` | Svalbard and Jan Mayen |
| `SK` | Slovak Republic |
| `SL` | Sierra Leone |
| `SM` | San Marino |
| `SN` | Senegal |
| `SO` | Somalia |
| `SR` | Suriname |
| `ST` | Sao Tome and Principe |
| `SV` | El Salvador |
| `SY` | Syria |
| `SZ` | Eswatini |
| `TC` | Turks and Caicos Islands |
| `TD` | Chad |
| `TF` | French Southern Territories |
| `TG` | Togo |
| `TH` | Thailand |
| `TJ` | Tajikistan |
| `TK` | Tokelau |
| `TM` | Turkmenistan |
| `TN` | Tunisia |
| `TO` | Tonga |
| `TP` | East Timor |
| `TR` | Turkiye |
| `TT` | Trinidad and Tobago |
| `TV` | Tuvalu |
| `TW` | Taiwan |
| `TZ` | Tanzania |
| `UA` | Ukraine |
| `UG` | Uganda |
| `UM` | United States Minor Outlying |
| `US` | United States of America |
| `UY` | Uruguay |
| `UZ` | Uzbekistan |
| `VA` | Vatican City |
| `VC` | St. Vincent & the Grenadines |
| `VE` | Venezuela |
| `VG` | Virgin Islands (UK) |
| `VI` | Virgin Islands (US) |
| `VN` | Vietnam |
| `VU` | Vanuatu |
| `WF` | Wallis & Futuna Islands |
| `WS` | Samoa |
| `XG` | Shanghai SC |
| `XH` | Hong Kong SC |
| `XZ` | Shenzhen SC |
| `YE` | Yemen |
| `YT` | Mayotte |
| `ZA` | South Africa |
| `ZM` | Zambia |
| `ZW` | Zimbabwe |
| `ZZ` | Unclassified |

### CUREN

| Value [//]: # (column: sortable) | Description [//]: # (column: sortable) |
| `AED` | UAE Dirham |
| `AFN` | Afghanis |
| `ALL` | Albanian Lek |
| `AMD` | Armenian Dram |
| `ANG` | Netherlands Antilles Guilders |
| `AOA` | Angola Kwanza |
| `ARS` | Argentine Peso |
| `AUD` | Australian Dollar |
| `AWG` | Aruban Guilder |
| `AZN` | Azerbaijani Manat |
| `BAM` | Convertible Marks |
| `BBD` | Barbados Dollar |
| `BDT` | Bangladesh Taka |
| `BGN` | Bulgarian Lev |
| `BHD` | Bahraini Dinar |
| `BIF` | Burundi Franc |
| `BMD` | Bermuda Dollar |
| `BND` | Brunei Dollar |
| `BOB` | Boliviano |
| `BOV` | Mvdol |
| `BRL` | Brazilian Real |
| `BSD` | Bahamas Dollar |
| `BTN` | Bhutanese Ngultrum |
| `BWP` | Botswana Pula |
| `BYN` | Belarusian Ruble (New) |
| `BZD` | Belize Dollar |
| `CAD` | Canadian Dollar |
| `CDF` | Congolese Franc |
| `CHF` | Swiss Francs |
| `CLF` | Chilean Unidad de Fomento |
| `CLP` | Chilean Peso |
| `CNY` | Chinese Yuan Renminbi |
| `COP` | Colombian Peso |
| `COU` | Colombian (Unidad de Valor Real) |
| `CRC` | Costa Rican Colon |
| `CUP` | Cuban Peso |
| `CVE` | Cape Verde Escudo |
| `CYP` | Cypriot Pound |
| `CZK` | Czech Koruna |
| `DJF` | Djibouti Franc |
| `DKK` | Danish Kroner |
| `DOP` | Dominican Peso |
| `DZD` | Algerian Dinar |
| `ECS` | Ecuador Sucre |
| `EEK` | Estonian Kroon |
| `EGP` | Egyptian Pound |
| `ERN` | Eritrean Nakfa |
| `ETB` | Ethiopian Birr |
| `EUR` | Euros |
| `FJD` | Fiji Dollar |
| `FKP` | Falklands Pounds |
| `GBP` | Pound Sterling |
| `GBX` | GB Pence |
| `GEL` | Georgian Lari |
| `GHS` | Ghanaian Cedi |
| `GIP` | Gibraltar Pounds |
| `GMD` | Gambian Dalasi |
| `GNF` | Guinean Franc |
| `GRD` | Greek Drachma |
| `GTQ` | Guatemalan Quetzal |
| `GYD` | Guyana Dollar |
| `HKD` | Hong Kong Dollar |
| `HNL` | Honduras Lempira |
| `HRK` | Croatian Kuna |
| `HTG` | Haiti Gourde |
| `HUF` | Hungarian Forint |
| `IDR` | Indonesian Rupiah |
| `ILS` | Israeli New Shekel |
| `INR` | Indian Rupees |
| `IQD` | Iraqi Dinar |
| `IRR` | Iranian Rial |
| `ISK` | Icelandic Krona |
| `JMD` | Jamaican Dollar |
| `JOD` | Jordanian Dinar |
| `JPY` | Japanese Yen |
| `KES` | Kenyan Shilling |
| `KGS` | Kyrgyzstan Som |
| `KHR` | Cambodian Riel |
| `KMF` | Comoro Franc |
| `KPW` | North Korean Won |
| `KRW` | Korean Won |
| `KWD` | Kuwaiti Dinar |
| `KYD` | Cayman Islands Dollar |
| `KZT` | Kazakhstan Tenge |
| `LAK` | Lao Liberation Kip |
| `LBP` | Lebanese Pound |
| `LKR` | Sri Lankan Rupee |
| `LRD` | Liberian Dollar |
| `LSL` | Lesotho Loti |
| `LTL` | Lithuanian Litas |
| `LYD` | Libyan Dinar |
| `MAD` | Moroccan Dirham |
| `MDL` | Moldovan Leu |
| `MGA` | Malagasy Ariary |
| `MKD` | Macedonian Denar |
| `MMK` | Myanmar Kyat |
| `MNT` | Mongolian Tugrik |
| `MOP` | Macau Pataca |
| `MRO` | Mauritanian Ouguiya |
| `MUR` | Mauritius Rupee |
| `MVR` | Maldivian Rufiyaa |
| `MWK` | Malawi Kwacha |
| `MXN` | Mexican Nuevo Peso |
| `MXV` | Mexican Unidad de Inversion (UDI) |
| `MYR` | Malaysian Ringgit |
| `MZN` | Mozambique Metical |
| `NAD` | Namibian Dollar |
| `NGN` | Nigerian Naira |
| `NIO` | Nicaraguan Cordoba Oro |
| `NOK` | Norwegian Krone |
| `NPR` | Nepalese Rupee |
| `NZD` | New Zealand Dollar |
| `OMR` | Omani Rial |
| `PAB` | Panama Balboa |
| `PEN` | Peruvian Nuevo Sol |
| `PGK` | Papua New Guinea Kina |
| `PHP` | Philippines Peso |
| `PKR` | Pakistan Rupee |
| `PLN` | Polish Złoty (New) |
| `PYG` | Paraguay Guarani |
| `QAR` | Qatar Rial |
| `RON` | Romanian Leu (New) |
| `RSD` | Serbian Dinars |
| `RUB` | Russian Ruble (New) |
| `RWF` | Rwandan Franc |
| `SAR` | Saudi Arabian Riyal |
| `SBD` | Solomon Islands Dollar |
| `SCR` | Seychelles Rupee |
| `SDD` | Sudanese Dinar |
| `SDG` | Sudanese Pound |
| `SEK` | Swedish Kroner |
| `SGD` | Singapore Dollar |
| `SHP` | St. Helena Pounds |
| `SLL` | Sierra Leone |
| `SOS` | Somalia Shilling |
| `SRD` | Surinam Dollar |
| `STD` | Sao Tome and Principe Dobra |
| `SVC` | El Salvador Colon |
| `SYP` | Syrian Pound |
| `SZL` | Swaziland Lilangeni |
| `THB` | Thai Baht |
| `TJS` | Tajikistani Somoni |
| `TMM` | Turkmenistan Manat |
| `TND` | Tunisian Dinar |
| `TOP` | Tonga Pa`anga |
| `TRY` | Turkish Lira (New) |
| `TTD` | Trinidad and Tobago Dollar |
| `TWD` | Taiwan Dollar |
| `TZS` | Tanzanian Shilling |
| `UAH` | Ukrainian Hryvnia |
| `UGX` | Ugandan Shilling |
| `USD` | US Dollar |
| `USX` | US Cents |
| `UYI` | Uruguay Peso (Index Linked) |
| `UYU` | Uruguayan Peso |
| `UYW` | Uruguayan Unidad Previsional (Pension Unit) |
| `UZS` | Uzbekistan Sum |
| `VEF` | Venezuela Bolivares Fuertes |
| `VES` | Venezuela Sovereign Bolivar |
| `VND` | Vietnamese Dong |
| `VUV` | Vanuatu Vatu |
| `WST` | Samoan Tala |
| `XAF` | CFA Franc (BEAC) |
| `XCD` | Caribbean Dollar |
| `XDR` | International Monetary Fund |
| `XFU` | UIC-Franc |
| `XOF` | CFA Franc (BCEAO) |
| `XPF` | CFP Franc |
| `XTS` | Codes for testing purposes |
| `XXX` | Codes for transactions/no currencies involved |
| `YER` | North Yemen Rial |
| `ZAC` | South African Cents |
| `ZAR` | South African Rand |
| `ZMK` | Zambian Kwacha |
| `ZMW` | Zambian New Kwacha |
| `ZRN` | New Zaire |
| `ZWD` | Zimbabwe Dollar |
| `ZWG` | Zimbabwe Gold |
| `ZWL` | Zimbabwean Dollar |

### DRTYPE

| Value [//]: # (column: sortable) | Description [//]: # (column: sortable) |
| `ADR` | American DR |
| `BDR` | Belgium DR |
| `CDI` | Chess Depository Interest |
| `CDR` | Cedear |
| `DR` | Generic DR |
| `EDR` | European DR |
| `FDR` | Finland DR |
| `GDR` | Global DR |
| `HDR` | Ghanian DR |
| `IDR` | International DR |
| `NDR` | Netherland Bearer DR |
| `NVD` | Non-Voting DR |
| `NYS` | New York Shares |
| `PDR` | Philippine DR |
| `RDR` | Russian DR |
| `SDR` | Swedish DR |
| `SDS` | Singapore DR |
| `TDR` | Taiwan DR |
| `UDR` | United Kingdom DR |
| `ZDR` | Zimbabwe DR |

### EVENT

| Value [//]: # (column: sortable) | Description [//]: # (column: sortable) |
| `AGM` | Company Meeting |
| `ANN` | Announcement |
| `ARR` | Arrangement |
| `ASSM` | Assimilation |
| `BB` | Buyback |
| `BBCC` | Bloomberg Composite ID Change |
| `BBEC` | Bloomberg Exchange ID Change |
| `BKRP` | Bankruptcy |
| `BON` | Bonus Issue |
| `BR` | Bonus Rights |
| `CALL` | Call |
| `CAPRD` | Capital Reduction |
| `CLSAC` | Class Action |
| `CONSD` | Consolidation |
| `CONV` | Conversion |
| `CTX` | Certificate of Exchange |
| `CURRD` | Currency Redenomination |
| `DIST` | Distribution |
| `DIV` | Dividend |
| `DIVEB` | Dividend - Equity Bifurcated |
| `DIVRC` | Dividend Reclassification |
| `DMRGR` | Demerger |
| `DRCHG` | Depository Receipt Change |
| `DRIP` | Dividend Reinvestment Plan |
| `DVST` | Divestment |
| `ENT` | Entitlement Issue |
| `FRANK` | Franking |
| `FSPLT` | Forward Split, currently only used in US events |
| `FTT` | Financial Transaction Tax |
| `FYCHG` | Financial Year Change |
| `ICC` | International Code Change |
| `INCHG` | Country of Incorporation Change |
| `ISCHG` | Issuer Name Change |
| `LCC` | Local Code Change |
| `LIQ` | Liquidation |
| `LSTAT` | Listing Status |
| `LTCHG` | Lot Change |
| `MKCHG` | Market Segment Change |
| `MRGR` | Merger |
| `NLIST` | New Listing |
| `ODDLT` | Odd Lot Offer |
| `PID` | Property Income Distribution |
| `PO` | Purchase Offer |
| `PRCHG` | Primary Exchange Change |
| `PRF` | Preferential Offer |
| `PVRD` | Par Value Redenomination |
| `RCAP` | Return of Capital |
| `RD` | Record Date |
| `REDEM` | Redemption |
| `RSPLT` | Reverse Split, currently only used in US events |
| `RTS` | Rights |
| `SCCHG` | Security Name Change |
| `SCSWP` | Security Swap |
| `SD` | Sub Division |
| `SDCHG` | Sedol Change |
| `SECRC` | Security Re-classification |
| `SHOCH` | Shares Outstanding Change |
| `SOFF` | Spin-Off, currently only used in US events |
| `TKOVR` | Takeover |
| `WAREX` | Warrant Exercise |

### EVENTSUBTYPE

| Event [//]: # (column: sortable) | Value [//]: # (column: sortable) | Description [//]: # (column: sortable) |
| `AGM` | `AGM` | Annual General Meeting |
| `AGM` | `BHM` | Bond Holder Meeting |
| `AGM` | `CGM` | Court Ordered General Meeting |
| `AGM` | `EGM` | Extraordinary General Meeting |
| `AGM` | `GM` | General Meeting |
| `AGM` | `SGM` | Special General Meeting |
| `BB` | `DUTCHAUCT` | Dutch Auction |
| `BON` | `DPRCPDIV` | Depository Receipt Dividend |
| `CONSD` | `CONSD` | Reverse Split, currently only used in US events |
| `CONV` | `BB` | Buyback |
| `CONV` | `CALL` | Call Option Exercised |
| `CONV` | `CLAIMSET` | Claim Settled |
| `CONV` | `DEFPY` | Default Payment |
| `CONV` | `DR` | Drawings |
| `CONV` | `DRL` | Drawings by lottery |
| `CONV` | `ECONV` | Early Conversion |
| `CONV` | `MAT` | Maturity |
| `CONV` | `ORD` | Ordinary |
| `CONV` | `PUT` | Put Option Exercised |
| `CONV` | `REDEMCLAIM` | Redemption Claim |
| `CONV` | `WRTDN` | Write Down |
| `DIST` | `DIST` | Spin-Off, currently only used in US events |
| `DIV` | `CAPDIST` | Capital Distribution |
| `DIV` | `CAPGAIN` | Capital Gain |
| `DIV` | `DIV` | Forward Split, currently only used in US events |
| `DIV` | `INTDIV` | Derived from Interest Payment |
| `DIVEB` | `DT` | Tax Free Dividend Component |
| `DIVEB` | `RCAP` | Return of Capital Component |
| `DIVEB` | `ROD` | Repayment of Debt Component |
| `DIVIF` | `DIVACC` | Dividend Accumulation |
| `DIVIF` | `DIVINC` | Dividend Income |
| `DIVIF` | `INT` | Interest Basis Unknown |
| `DIVIF` | `INTACC` | Interest Accumulation |
| `DIVIF` | `INTINC` | Interest Income |
| `DIVIF` | `PRO` | Property Basis Unknown |
| `DIVIF` | `PROACC` | Property Accumulation |
| `DIVIF` | `PROINC` | Property Income |
| `DMRGR` | `DMRGR` | Spin-Off, currently only used in US events |
| `ENT` | `NRENRTS` | Non Renounceable Rights |
| `ENT` | `OPOFF` | Open Offer |
| `ENT` | `POFF` | Priority Offer |
| `ENT` | `SPP` | Share Purchase Plan |
| `FRANK` | `F` | Fully franked |
| `FRANK` | `N` | Not known |
| `FRANK` | `P` | Partially franked |
| `FRANK` | `U` | Unfranked |
| `FSPLT` | `BON` | Bonus |
| `FSPLT` | `DIV` | Dividend |
| `FSPLT` | `SD` | Subdivision |
| `RCAP` | `CAPRD` | Capital Reduction |
| `RCAP` | `LIQ` | Liquidation |
| `RCAP` | `RES` | Reserves |
| `RCAP` | `SOA` | Sale of Assets |
| `RCAP` | `SPA` | Share Premium Account |
| `REDEM` | `AMT` | Amortisation |
| `REDEM` | `BBED` | Buyback Early Deadline |
| `REDEM` | `BBRD` | Buyback Regular Deadline |
| `REDEM` | `CORR` | Correction |
| `REDEM` | `CU` | Clean Up |
| `REDEM` | `ER` | Early Redemption |
| `REDEM` | `MWC` | Make Whole Call |
| `REDEM` | `PF` | Purchase Fund |
| `REDEM` | `RM` | Residual Maturity |
| `RSPLT` | `CONSD` | Consolidation |
| `RTS` | `DPRCPDIV` | Depository Receipt Dividend |
| `SD` | `SD` | Forward Split, currently only used in US events |
| `SOFF` | `DIST` | Distribution |
| `SOFF` | `DMRGR` | Demerger |
| `TKOVR` | `MRGR` | Merger |
| `TKOVR` | `TEND` | Tender Offer |
| `TKOVR` | `TENDMRGR` | Tender resulting in Merger |
| `TKOVR` | `TKOVRMINI` | Mini-Takeover |
| `TKOVR` | `UKWNSUBTYP` | Insufficient data to assign a TKOVR event subtype |

### EXCHANGE

| Name [//]: # (column: sortable) | Country [//]: # (column: sortable) | Exchange [//]: # (column: sortable) | MIC [//]: # (column: sortable) |
| A2X Markets | South Africa | `ZAA2X` | `A2XX` |
| AIAF - Fixed Income Market | Spain | `ESAIAF` | `XDRF` |
| Abu Dhabi Securities Exchange | United Arab Emirates | `AEADSM` | `XADS` |
| Algiers Stock Exchange | Algeria | `DZASE` | `XALG` |
| Amman Stock Exchange | Jordan | `JOASE` | `XAMM` |
| Angola Securities Exchange | Angola | `AOASE` | `XBDV` |
| Aquis Stock Exchange | United Kingdom | `GBOFX` | `AQSE` |
| Argentina Open Electronic Exchange | Argentina | `AROEX` | `XMAB` |
| Armenia Securities Exchange | Armenia | `AMASE` | `XARM` |
| Astana International Exchange | Kazakhstan | `KZAIX` | `AIXK` |
| Asuncion Stock Exchange | Paraguay | `PYBVA` | `XVPA` |
| Athens Exchange | Greece | `GRASE` | `ASEX` |
| Australian Securities Exchange | Australia | `AUASX` | `XASX` |
| B3 - Brasil Bolsa Balcao | Brazil | `BRBVSP` | `BVMF` |
| BME Growth | Spain | `ESMAB` | `GROW` |
| BSE | India | `INBSE` | `XBOM` |
| BX Swiss | Switzerland | `CHBRN` | `XBRN` |
| Bahamas International Securities Exchange | Bahamas | `BSBSE` | `XBAA` |
| Bahrain Bourse | Bahrain | `BHBSE` | `XBAH` |
| Baku Stock Exchange | Azerbaijan | `AZBSE` | `BSEX` |
| Banja Luka Stock Exchange | Bosnia and Herzegovina | `BABLSX` | `XBLB` |
| Barbados Stock Exchange | Barbados | `BBSEB` | `XBAB` |
| Barcelona Stock Exchange | Spain | `ESBSE` | `XBAR` |
| Beijing Stock Exchange | China | `CNBJSE` | `BJSE` |
| Beirut Stock Exchange | Lebanon | `LBBSE` | `XBEY` |
| Belarus Currency and Stock Exchange | Belarus | `BYBCSE` | `BCSE` |
| Belgrade Stock Exchange | Serbia | `RSBEL` | `XBEL` |
| Berlin Stock Exchange | Germany | `DEBSE` | `XBER` |
| Bermuda Stock Exchange | Bermuda | `BMBSE` | `XBDA` |
| Bilbao Stock Exchange | Spain | `ESBBSE` | `XBIL` |
| Bolivian Stock Exchange | Bolivia | `BOBVB` | `XBOL` |
| Bolsa Electronica de Chile | Chile | `CLBEC` | `XBCL` |
| Bolsa Mexicana de Valores | Mexico | `MXMSE` | `XMEX` |
| Bolsa Nacional de Valores | Costa Rica | `CRBNV` | `XBNV` |
| Bolsa de Valores de Lima | Peru | `PEBVL` | `XLIM` |
| Borsa Italiana | Italy | `ITMSE` | `XMIL` |
| Botswana Stock Exchange | Botswana | `BWBSE` | `XBOT` |
| Bratislava Stock Exchange | Slovakia | `SKBSE` | `XBRA` |
| Bucharest Stock Exchange | Romania | `ROBSE` | `XBSE` |
| Budapest Stock Exchange | Hungary | `HUBSE` | `XBUD` |
| Buenos Aires Stock Exchange | Argentina | `ARMVB` | `XBUE` |
| Bulgarian Stock Exchange | Bulgaria | `BGBSE` | `XBUL` |
| Cambodia Securities Exchange | Cambodia | `KHCSX` | `XCSX` |
| Canadian Securities Exchange | Canada | `CACNQ` | `XCNQ` |
| Cape Town Stock Exchange | South Africa | `ZA4AX` | `4AXE` |
| Cape Verde Stock Exchange | Cape Verde | `CVCVSX` | `XBVC` |
| Caracas Stock Exchange | Venezuela | `VECSE` | `BVCA` |
| Casablanca Stock Exchange | Morocco | `MABVC` | `XCAS` |
| Cayman Islands Stock Exchange | Cayman Islands | `KYSX` | `XCAY` |
| Cboe Australia | Australia | `AUCBOE` | `CHIA` |
| Cboe BZX | United States | `USBATS` | `BATS` |
| Cboe Canada | Canada | `CANEO` | `NEOE` |
| Central American Securities Exchange | Honduras | `HNCASE` | `XBCV` |
| China Interbank Bond Market | China | `CNIBBM` | `N/A` |
| Chittagong Stock Exchange | Bangladesh | `BDCSE` | `XCHG` |
| Colombian Stock Exchange | Colombia | `COCSX` | `XBOG` |
| Colombo Stock Exchange | Sri Lanka | `LKCSE` | `XCOL` |
| Cyprus Stock Exchange | Cyprus | `CYCSE` | `XCYS` |
| Damascus Securities Exchange | Syria | `SYDSE` | `XDSE` |
| Dar es Salaam Stock Exchange | Tanzania | `TZTSE` | `XDAR` |
| Dhaka Stock Exchange | Bangladesh | `BDDSE` | `XDHA` |
| Dominican Republic Stock Exchange | Dominican Republic | `DODRSX` | `XBVR` |
| Douala Stock Exchange | Cameroon | `CMDSX` | `XDSX` |
| Dubai Financial Market | United Arab Emirates | `AEDFM` | `XDFM` |
| Dusseldorf Stock Exchange | Germany | `DEDSE` | `XDUS` |
| Dutch Caribbean Securities Exchange | Curacao | `CWDCSE` | `DCSX` |
| Eastern Caribbean Securities Exchange | St. Kitts & Nevis | `KNECSE` | `XECS` |
| Egyptian Exchange | Egypt | `EGCASE` | `XCAI` |
| El Salvador Stock Exchange | El Salvador | `SVMVSV` | `XSVA` |
| Eswatini Stock Exchange | Eswatini | `SZSS` | `XSWA` |
| Euronext Amsterdam | Netherlands | `NLENA` | `XAMS` |
| Euronext Brussels | Belgium | `BEENB` | `XBRU` |
| Euronext Dublin | Ireland | `IEISE` | `XDUB` |
| Euronext Lisbon | Portugal | `PTBVL` | `XLIS` |
| Euronext London | United Kingdom | `GBENLN` | `XLDN` |
| Euronext NOTC | Norway | `NOOTC` | `NOTC` |
| Euronext Paris | France | `FRPEN` | `XPAR` |
| FINRA OTCBB | United States | `USFNBB` | `XOTC` |
| FINRA TRACE | United States | `USTRCE` | `FINR` |
| Faroese Securities Market | Faroe Islands | `FOFSM` | `VMFX` |
| Frankfurt Stock Exchange | Germany | `DEFSX` | `XFRA` |
| Fukuoka Stock Exchange | Japan | `JPFSE` | `XFKA` |
| Georgian Stock Exchange | Georgia | `GEGSE` | `XGSE` |
| Ghana Stock Exchange | Ghana | `GHGSE` | `XGHA` |
| Gibraltar Stock Exchange | Gibraltar | `GIGSX` | `GSXL` |
| Guatemala National Stock Exchange | Guatemala | `GTGSE` | `XGTG` |
| Guayaquil Stock Exchange | Ecuador | `ECGSE` | `XGUA` |
| Guyana Stock Exchange | Guyana | `GYGSX` | `GSCI` |
| Hamburg Stock Exchange | Germany | `DEHSE` | `XHAM` |
| Hanoi Stock Exchange | Vietnam | `VNHSTC` | `HSTC` |
| Hanover Stock Exchange | Germany | `DEHNSE` | `XHAN` |
| Ho Chi Minh Stock Exchange | Vietnam | `VNSTC` | `XSTC` |
| Hong Kong Shanghai Stock Connect - Southbound | Hong Kong | `HKHKSG` | `SHSC` |
| Hong Kong Shenzhen Stock Connect - Southbound | Hong Kong | `HKHKSZ` | `SZSC` |
| Hong Kong Stock Exchange | Hong Kong | `HKSEHK` | `XHKG` |
| Indonesian Stock Exchange | Indonesia | `IDJSE` | `XIDX` |
| Innex Stock Exchange | Ukraine | `UAINX` | `XDFB` |
| Institutional Stock Exchange | Mexico | `MXBIVA` | `BIVA` |
| Investors Exchange | United States | `USIEX` | `IEXG` |
| Iran Fara Exchange | Iran | `IRIFX` | `IFBX` |
| Iraq Stock Exchange | Iraq | `IQISX` | `XIQS` |
| Istanbul Stock Exchange | Turkey | `TRIMKB` | `XIST` |
| Jamaica Stock Exchange | Jamaica | `JMJSE` | `XJAM` |
| Johannesburg Stock Exchange | South Africa | `ZAJSE` | `XJSE` |
| Kazakhstan Stock Exchange | Kazakhstan | `KZKASE` | `XKAZ` |
| Kiev International Stock Exchange | Ukraine | `UAKISE` | `XKIS` |
| Korea New Exchange | South Korea | `KRKNX` | `XKON` |
| Korea Stock Exchange | South Korea | `KRKSE` | `XKRX` |
| Kuwait Stock Exchange | Kuwait | `KWKSE` | `XKUW` |
| Kyrgyz Stock Exchange | Kyrgyz Republic | `KGKSE` | `XKSE` |
| Labuan International Financial Exchange | Malaysia | `MYLFX` | `XLFX` |
| Lao Securities Exchange | Laos | `LALSX` | `XLAO` |
| Latin American Stock Exchange | Panama | `PABVP` | `XPTY` |
| Libyan Stock Market | Libya | `LYLSM` | `XLSM` |
| Ljubljana Stock Exchange | Slovenia | `SILSE` | `XLJU` |
| London Stock Exchange | United Kingdom | `GBLSE` | `XLON` |
| Lusaka Stock Exchange | Zambia | `ZMZSE` | `XLUS` |
| Luxembourg Stock Exchange | Luxembourg | `LULSE` | `XLUX` |
| MERJ Exchange | Seychelles | `SCSSE` | `TRPX` |
| Macedonian Stock Exchange | North Macedonia | `MKMSE` | `XMAE` |
| Madrid Stock Exchange | Spain | `ESMSE` | `XMAD` |
| Malawi Stock Exchange | Malawi | `MWMSE` | `XMSW` |
| Malaysian Exchange | Malaysia | `MYKLSE` | `XKLS` |
| Maldives Stock Exchange | Maldives | `MVMAL` | `MALX` |
| Malta Stock Exchange | Malta | `MTMSE` | `XMAL` |
| Metropolitan Stock Exchange of India | India | `INMCX` | `MCXX` |
| Moldova Stock Exchange | Moldova | `MDMSE` | `XMOL` |
| Mongolian Stock Exchange | Mongolia | `MNSE` | `XULA` |
| Montenegro Stock Exchange | Montenegro | `MEMSE` | `XMNX` |
| Montevideo Stock Exchange | Uruguay | `UYBVM` | `XMNT` |
| Moscow Exchange | Russia | `RUMICX` | `MISX` |
| Mozambique Stock Exchange | Mozambique | `MZMSX` | `XBVM` |
| Munich Stock Exchange | Germany | `DEMSE` | `XMUN` |
| Muscat Securities Market | Oman | `OMMSM` | `XMUS` |
| NYSE American | United States | `USAMEX` | `XASE` |
| NYSE Arca | United States | `USPAC` | `ARCX` |
| NYSE National | United States | `USCIN` | `XCIS` |
| NZX | New Zealand | `NZSE` | `XNZE` |
| Nagoya Stock Exchange | Japan | `JPNSE` | `XNGO` |
| Nairobi Securities Exchange | Kenya | `KENSE` | `XNAI` |
| Namibian Stock Exchange | Namibia | `NANSE` | `XNAM` |
| Nasdaq | United States | `USNASD` | `XNAS` |
| Nasdaq Copenhagen | Denmark | `DKCSE` | `XCSE` |
| Nasdaq Dubai | United Arab Emirates | `AEDIFX` | `DIFX` |
| Nasdaq Helsinki | Finland | `FIHSE` | `XHEL` |
| Nasdaq Iceland | Iceland | `ISISE` | `XICE` |
| Nasdaq Nordic Stockholm | Sweden | `SESSE` | `XSTO` |
| Nasdaq Riga | Latvia | `LVRSE` | `XRIS` |
| Nasdaq Tallinn | Estonia | `EETSE` | `XTAL` |
| Nasdaq Vilnius | Lithuania | `LTNSE` | `XLIT` |
| National Stock Exchange of Australia | Australia | `AUNSE` | `XNEC` |
| National Stock Exchange of India | India | `INNSE` | `XNSE` |
| Nepal Stock Exchange | Nepal | `NPNSE` | `XNEP` |
| New York Stock Exchange | United States | `USNYSE` | `XNYS` |
| Nicaragua Stock Exchange | Nicaragua | `NINSX` | `XMAN` |
| Nigerian Stock Exchange | Nigeria | `NGLSE` | `XNSA` |
| Nordic Derivatives Exchange | Sweden | `SENDX` | `XNDX` |
| Nordic Growth Market | Sweden | `SENGM` | `XNGM` |
| OTC Markets Group | United States | `USOTC` | `OTCM` |
| Oslo Bors | Norway | `NOOB` | `XOSL` |
| PFTS Stock Exchange | Ukraine | `UAPFTS` | `PFTS` |
| Pakistan Stock Exchange | Pakistan | `PKKSE` | `XKAR` |
| Palestine Exchange | Palestine | `PSAFM` | `XPAE` |
| Papua New Guinea National Stock Exchange | Papua New Guinea | `PGNSE` | `XPOM` |
| Perspektiva Stock Exchange | Ukraine | `UAPSX` | `SEPE` |
| Philippine Stock Exchange | Philippines | `PHPSE` | `XPHS` |
| Prague Stock Exchange | Czech Republic | `CZPSE` | `XPRA` |
| Qatar Exchange | Qatar | `QADSM` | `DSMD` |
| Quito Stock Exchange | Ecuador | `ECQSE` | `XQUI` |
| Regional Stock Exchange of West Africa | Ivory Coast | `CIBVA` | `XBRV` |
| Rosario Commerce Exchange | Argentina | `ARRCX` | `XROS` |
| Russian Trading System | Russia | `RURTS` | `RTSX` |
| Rwanda OTC | Rwanda | `RWOTC` | `ROTC` |
| Rwanda Stock Exchange | Rwanda | `RWRSE` | `RSEX` |
| SIM Venture Securities Exchange | Australia | `AUSIMV` | `SIMV` |
| SIX Structured Products Exchange | Switzerland | `CHSCH` | `XQMH` |
| SIX Swiss Exchange | Switzerland | `CHSSX` | `XSWX` |
| Santiago Stock Exchange | Chile | `CLBCS` | `XSGO` |
| Sapporo Securities Exchange | Japan | `JPSSE` | `XSAP` |
| Sarajevo Stock Exchange | Bosnia and Herzegovina | `BASASE` | `XSSE` |
| Saudi Stock Exchange | Saudi Arabia | `SARSE` | `XSAU` |
| Shanghai Hong Kong Stock Connect - Northbound | China | `CNSGHK` | `XSSC` |
| Shanghai Stock Exchange | China | `CNSGSE` | `XSHG` |
| Shenzhen Hong Kong Stock Connect - Northbound | China | `CNSZHK` | `XSEC` |
| Shenzhen Stock Exchange | China | `CNSSE` | `XSHE` |
| Singapore Exchange | Singapore | `SGSSE` | `XSES` |
| South Pacific Stock Exchange | Fiji | `FJSPSX` | `XSPS` |
| Spanish Stock Exchange Interconnection System | Spain | `ESSIBE` | `XMCE` |
| Spotlight Stock Market | Sweden | `SESSM` | `XSAT` |
| Stock Exchange of Mauritius | Mauritius | `MUSEM` | `XMAU` |
| Stock Exchange of Thailand | Thailand | `THSET` | `XBKK` |
| Stuttgart Stock Exchange | Germany | `DESSE` | `XSTU` |
| Sydney Stock Exchange | Australia | `AUSSX` | `APXL` |
| TSX Venture Exchange | Canada | `CACVE` | `XTSX` |
| Taipei Exchange | Taiwan | `TWOTC` | `ROCO` |
| Taiwan Stock Exchange | Taiwan | `TWTSE` | `XTAI` |
| Tashkent Republican Stock Exchange | Uzbekistan | `UZTRSX` | `XSTE` |
| Tehran Stock Exchange | Iran | `IRTSE` | `XTEH` |
| Tel-Aviv Stock Exchange | Israel | `ILTSE` | `XTAE` |
| The International Stock Exchange | Guernsey | `GGCISX` | `XCIE` |
| Tirana Stock Exchange | Albania | `ALTSE` | `XTIR` |
| Tokyo Stock Exchange | Japan | `JPTSE` | `XJPX` |
| Toronto Stock Exchange | Canada | `CATSE` | `XTSE` |
| Trinidad & Tobago Stock Exchange | Trinidad and Tobago | `TTTTSE` | `XTRN` |
| Tunis Stock Exchange | Tunisia | `TNTSE` | `XTUN` |
| Uganda Securities Exchange | Uganda | `UGKSE` | `XUGA` |
| Ukrainian Exchange | Ukraine | `UAUX` | `UKEX` |
| Uruguay Electronic Exchange | Uruguay | `UYUEX` | `BVUR` |
| Valencia Stock Exchange | Spain | `ESVSE` | `XVAL` |
| Victoria Falls Stock Exchange | Zimbabwe | `ZWVFSE` | `VFEX` |
| Vienna Stock Exchange | Austria | `ATVSE` | `XWBO` |
| Warsaw Stock Exchange | Poland | `PLWSE` | `XWAR` |
| Xetra | Germany | `DEXETR` | `XETR` |
| Zagreb Stock Exchange | Croatia | `HRZSE` | `XZAG` |
| Zimbabwe Stock Exchange | Zimbabwe | `ZWZSE` | `XZIM` |

### FRACTIONS

| Value [//]: # (column: sortable) | Description [//]: # (column: sortable) |
| `C` | Cash |
| `D` | Round Down |
| `F` | Fractions |
| `U` | Round Up |

### FREQ

| Value [//]: # (column: sortable) | Description [//]: # (column: sortable) |
| `ANL` | Annual |
| `BIM` | BiMonthly |
| `DLY` | Daily |
| `FNL` | Final |
| `INT` | Interim |
| `INTONMAT` | Interest on Maturity |
| `IRG` | Irregular |
| `ITM` | Interest on Maturity |
| `MNT` | Monthly |
| `QTR` | Quarterly |
| `SMA` | Semi-Annual |
| `TRM` | Trimesterly |
| `UN` | Unspecified |
| `WKL` | Weekly |

### GLOBSTATUS

| Value [//]: # (column: sortable) | Description [//]: # (column: sortable) |
| `A` | Active |
| `D` | In default |
| `I` | Inactive |

### LISTSOURCE

| Value [//]: # (column: sortable) | Description [//]: # (column: sortable) |
| `M` | Main WCA supported Listing |
| `S` | Secondary Listing |

### LISTSTAT

| Value [//]: # (column: sortable) | Description [//]: # (column: sortable) |
| `D` | Delisted |
| `G` | Reporting purposes only - Listed |
| `H` | Reporting purposes only - Delisted |
| `I` | Reporting purposes only - Suspended |
| `L` | Listed |
| `N` | New Listing |
| `P` | Listing Pending |
| `R` | Resumed |
| `S` | Suspended |
| `T` | Trading permitted - Listed |
| `U` | Trading permitted - Delisted |
| `V` | Trading permitted - Suspended |

### MANDVOLU

| Value [//]: # (column: sortable) | Description [//]: # (column: sortable) |
| `M` | Mandatory |
| `V` | Voluntary |
| `W` | Mandatory and/or Voluntary |

### MARKER

| Value [//]: # (column: sortable) | Description [//]: # (column: sortable) |
| `ANL` | Annual |
| `ARR` | Arrears |
| `CG` | Capital Gain |
| `CGL` | Capital Gain Long Term |
| `CGS` | Capital Gain Short Term |
| `FNL` | Final |
| `INS` | Installment |
| `INT` | Interim |
| `ISC` | Interest on Capital |
| `MEM` | Memorial |
| `QTR` | Quarterly |
| `REG` | Regular |
| `SMA` | Semi-annual |
| `SPL` | Special |
| `SUP` | Supplementary |
| `TEI` | Tax Exempt Interest |
| `TR` | Tax Return |
| `UN` | Unspecified |
| `VAR` | Variable |

### MICSEG

| Value [//]: # (column: sortable) | Description [//]: # (column: sortable) |
| `AIMX` | AIM |
| `ALTX` | AltX |
| `ALXA` | Euronext - Alternext Amsterdam |
| `ALXB` | Euronext Growth |
| `ALXL` | Euronext Growth |
| `ALXP` | Euronext Growth |
| `AQSL` | Main Board (Equity) |
| `AQST` | Trading (Equity) |
| `BERA` | Regulated Market |
| `BERB` | Open Market |
| `BERC` | Berlin Second Regulated Market |
| `BETA` | BETa Market |
| `BLBF` | Free Market |
| `BSME` | SME |
| `CAVE` | Caveat Emptor |
| `DSME` | First North Growth Market |
| `DUSA` | Regulated Market |
| `DUSB` | Free Market |
| `EBRA` | Multilateral Trading Facility |
| `EMTF` | Euro MTF |
| `ENAX` | Alternative Market |
| `ENXL` | Euronext Access |
| `EXGM` | Euronext Growth Milan |
| `EXPM` | Expert Market |
| `FNEE` | First North |
| `FNIS` | First North |
| `FNLT` | First North |
| `FNLV` | First North |
| `FRAA` | Regulated Market |
| `FRAB` | Free Market |
| `FRAS` | Free Market - Scale |
| `FSME` | First North Growth Market |
| `GBUL` | Beam |
| `GROW` | BME MTF Equity - Growth |
| `HAMA` | Regulated Market |
| `HAMB` | Free Market |
| `HANA` | Regulated Market |
| `HANB` | Free Market |
| `IFSM` | Institutional Financial Securities Market |
| `JBUL` | MTF BSE International |
| `MERK` | Euronext Growth |
| `MESQ` | ACE Market |
| `MIVX` | Euronext MIV Milan |
| `MLXB` | Euronext Access |
| `MOTX` | MOT |
| `MTAA` | EURONEXT MILAN |
| `MUNA` | Regulated Market |
| `MUNB` | Free Market |
| `NSME` | SME |
| `OTCB` | OTCQB |
| `OTCD` | OTCID Basic Market |
| `OTCQ` | OTCQX |
| `PINC` | Pink Current Information |
| `PINI` | Pink No Information |
| `PINL` | Pink Limited Information |
| `PROS` | Prospects MTF |
| `PSGM` | Grey Market |
| `SCLE` | BME MTF Equity - Scaleup |
| `SSME` | First North Growth Market |
| `STUA` | Regulated Market |
| `STUB` | Open Market |
| `WBAH` | Official Market |
| `WBDM` | Vienna MTF |
| `XBIS` | International Securities Market |
| `XCAN` | AeRO |
| `XECM` | Emerging Companies Market |
| `XESM` | Euronext Growth |
| `XETA` | Regulated Market |
| `XETB` | Free Market |
| `XETS` | Free Market - Scale |
| `XGEM` | Growth Enterprises Market |
| `XGLO` | GlobalConnect |
| `XHNX` | Unlisted Public Company Market |
| `XJAS` | TOKYO STOCK EXCHANGE JASDAQ |
| `XLJM` | SI Enter |
| `XMAI` | Market for Alternative Investment |
| `XMLI` | Euronext Access |
| `XMOT` | ExtraMOT |
| `XMSM` | Euronext Dublin |
| `XNCM` | Capital Market |
| `XNCO` | NewConnect |
| `XNGS` | Global Select |
| `XNMS` | Global Market |
| `XOAM` | Nordic Alternative Bond Market |
| `XOAS` | Euronext Expand |
| `XSCA` | Catalist |
| `XTAM` | Tokyo Pro Market |
| `XTND` | Xtend |
| `XTNX` | NEX |

### MKTSG

| Value [//]: # (column: sortable) | Description [//]: # (column: sortable) |
| `10` | OTCQX |
| `100` | Alternative Securities Market |
| `101` | First North |
| `102` | Main List |
| `103` | Secondary List |
| `104` | Free Market |
| `105` | Listed Main Market |
| `106` | Listed Parallel Market |
| `107` | Regulated Free Market |
| `108` | Euronext Growth |
| `109` | First Market |
| `11` | OTCQB |
| `110` | Second Market |
| `111` | Third Market |
| `112` | NXT Market |
| `113` | Official Market |
| `114` | Second Regulated Market |
| `115` | Vienna MTF |
| `116` | Free Market |
| `117` | Prime Market |
| `118` | Standard Market |
| `119` | Start Market |
| `12` | Pink Current Information |
| `120` | Channel Islands |
| `121` | Isle of Man |
| `122` | Euronext Access |
| `123` | Growth - Apex (Equity) |
| `124` | Trading (Equity) |
| `125` | Main Board (Equity) |
| `126` | Prime Market |
| `127` | Standard Market |
| `128` | SI Enter |
| `129` | LEAP Market |
| `13` | Pink Limited Information |
| `130` | Main Market |
| `131` | Nomu - Parallel Market |
| `132` | Tokyo Pro Market |
| `133` | Premier Market |
| `134` | Main Market |
| `135` | Venture Capital Market |
| `136` | Development Capital Market |
| `137` | Black Economic Empowerment Segment |
| `138` | Auction Market |
| `139` | Regulated Market |
| `14` | Pink No Information |
| `140` | AeRO |
| `141` | MTS International |
| `142` | NEX |
| `143` | Regulated Market |
| `144` | Free Market |
| `145` | Regulated Market |
| `146` | Free Market |
| `147` | Free Market |
| `148` | Regulated Market |
| `149` | Regulated Market - Prime Standard |
| `150` | Regulated Market - General Standard |
| `151` | Free Market - Basic Board |
| `152` | Free Market - Scale |
| `153` | Free Market - Basic Board |
| `154` | Free Market - Scale |
| `155` | Regulated Market - General Standard |
| `156` | Regulated Market - Prime Standard |
| `157` | Euronext Dublin |
| `158` | Euronext Growth |
| `159` | Atlantic Securities Market |
| `16` | Grey Market |
| `160` | Berlin Second Regulated Market |
| `161` | Bonds Segment |
| `162` | Exchange Traded Products Segment |
| `163` | Government Securities Segment |
| `164` | BaSE - Special Purpose Vehicles Segment |
| `165` | Prime |
| `166` | Standard |
| `167` | T |
| `168` | 1st Market |
| `169` | 1st Secondary |
| `17` | Caveat Emptor |
| `170` | 2nd Market |
| `171` | Main Board |
| `172` | SME Board |
| `173` | ChiNext |
| `174` | Main Board |
| `175` | Star Market |
| `176` | Official Market |
| `177` | Free Market |
| `178` | Free Market - Issuers in Bankruptcy |
| `179` | Official Market |
| `18` | SME |
| `180` | Official Market - Prime Market |
| `181` | Official Market - Standard Market |
| `182` | Official Market - Entry Market |
| `183` | Free Market |
| `184` | Official Listing - Super Listing |
| `185` | Official Listing - Stock Exchange Listing |
| `186` | Official Listing - Mandatory Listing |
| `187` | Small Joint Stock Companies |
| `188` | Free Market |
| `189` | Euronext Milan |
| `19` | SME |
| `190` | Euronext STAR Milan |
| `191` | Euronext MIV Milan |
| `192` | Euronext Growth Milan |
| `193` | Expert Market |
| `194` | Main Market |
| `195` | Standard Market |
| `196` | Alternative Market |
| `197` | MTS - Bond |
| `198` | Regulated Market |
| `199` | Free Market |
| `20` | Euronext A |
| `200` | Free Market - High Risk |
| `201` | Free Market - SME Market |
| `202` | Regulated Market |
| `203` | Free Market |
| `204` | Free Market - SME Market |
| `205` | Tokyo Pro Bond Market |
| `206` | First Market |
| `207` | Second Market |
| `208` | Third Market |
| `209` | Yellow UTP Market |
| `21` | Euronext B |
| `210` | Orange UTP Market |
| `211` | Red UTP Market |
| `212` | SME Market |
| `213` | Family & Friends |
| `214` | Unlisted Public Company Market |
| `215` | Euronext Growth Milan Professional |
| `216` | Growth - Access (Equity) |
| `217` | Regular Market |
| `218` | Parallel Market |
| `219` | Under Monitoring Market |
| `22` | Euronext C |
| `220` | Prime Market |
| `221` | Standard Market |
| `222` | Growth Market |
| `223` | Domestic Main Board |
| `224` | Foreign Main Board |
| `225` | Domestic Venture Capital Board |
| `226` | Foreign Venture Capital Board |
| `227` | Tshipidi SME Board |
| `228` | Serala OTC Board |
| `229` | Prime Market |
| `23` | Euronext Growth |
| `230` | Official Market |
| `231` | Regular Market |
| `232` | Main List |
| `233` | Secondary List |
| `234` | First North |
| `235` | Main List |
| `236` | Secondary List |
| `237` | First North |
| `238` | Main List |
| `239` | Secondary List |
| `24` | Euronext Access |
| `240` | First North |
| `241` | BIST Star |
| `242` | BIST Main |
| `243` | BIST Submarket |
| `244` | Watchlist Market |
| `245` | Pre-market Trading Platform |
| `246` | Main Market |
| `247` | Innovation & Growth Market |
| `248` | International Securities Market |
| `249` | Main Market |
| `25` | Euronext A |
| `250` | Alternative Market |
| `251` | Regulated Main Market |
| `252` | Prospects MTF |
| `253` | BdL Market |
| `254` | Euro MTF |
| `255` | LuxSE Securities Official List |
| `256` | Small Capital Platform |
| `257` | Main Market |
| `258` | NewConnect |
| `259` | Main Regulated |
| `26` | Euronext B |
| `260` | SME |
| `261` | AIF |
| `262` | Pre Market |
| `263` | SME Main Market |
| `264` | Worldcaps |
| `265` | New Market |
| `266` | Level 1 |
| `267` | Level 2 |
| `268` | Bovespa Plus |
| `269` | Bovespa Plus Level 2 |
| `27` | Euronext C |
| `270` | OTC |
| `271` | First North Premier Growth Market |
| `272` | First North Premier Growth Market |
| `274` | Institutional Financial Securities Market |
| `275` | MTF BSE International |
| `276` | Beam |
| `277` | Regulated Market |
| `278` | Open Market |
| `279` | PepMarket |
| `28` | Euronext Growth |
| `280` | Premier Market |
| `281` | Main Market |
| `282` | Next Market |
| `283` | Main Board |
| `284` | Q Board |
| `285` | Main Market |
| `286` | Ambitious Market |
| `287` | Main Board Premium |
| `288` | Main Board Standard |
| `289` | Alternative Board |
| `29` | Euronext Access |
| `290` | KASE Global |
| `291` | Emerging Companies Market |
| `292` | Growth Market |
| `293` | Main Board |
| `294` | Development Board |
| `295` | Acceleration Board |
| `296` | Main Board |
| `297` | Small and Medium Enterprises Board |
| `298` | Venture Capital Board |
| `299` | Small Capital Platform |
| `30` | Euronext A |
| `300` | A Listing |
| `301` | B Listing |
| `302` | Main Market |
| `303` | Venture Market |
| `304` | New Economy Board |
| `305` | Official Market |
| `306` | Development & Enterprise Market (DEM) |
| `307` | Main Market |
| `308` | Growth Market |
| `309` | First Market |
| `31` | Euronext B |
| `310` | Second Market |
| `311` | First Tier Market |
| `312` | Second Tier Market |
| `313` | SME Market |
| `314` | Main Board |
| `315` | Small Cap |
| `316` | Mezzanine Market |
| `317` | Tier I |
| `318` | Tier II |
| `319` | Tier III |
| `32` | Euronext C |
| `320` | Main Board |
| `321` | Diri Savi Board |
| `322` | Empower Board |
| `323` | Second Board |
| `324` | Watch List |
| `325` | SME Nile |
| `326` | SME Tamayuz |
| `327` | MOT |
| `328` | ExtraMOT |
| `329` | ExtraMOT Pro |
| `330` | ExtraMOT Pro3 |
| `331` | GlobalConnect |
| `332` | Main Market |
| `333` | Junior Market |
| `334` | USD Market |
| `335` | Official Prime Market |
| `336` | Official Standard Market |
| `337` | Free Market |
| `338` | Main |
| `339` | Belt and Road Market |
| `34` | Euronext A |
| `340` | Pre-IPO |
| `341` | Regional Equity Market Segment |
| `342` | Main Board |
| `343` | SME Board |
| `344` | Main Investment Market |
| `345` | Enterprise Growth Market |
| `346` | Main Market |
| `347` | SME Market |
| `348` | Main Market |
| `349` | Alternate Market |
| `35` | Euronext B |
| `350` | Main Investment Market |
| `351` | Alternative Investment Market |
| `352` | Growth Enterprise Market |
| `353` | Main Board |
| `354` | GEM Board |
| `355` | Pioneer Stock Board |
| `356` | Main Market |
| `357` | Alternative Market |
| `358` | Taiwan Innovation Board |
| `359` | Social Stock Exchange |
| `36` | Euronext C |
| `360` | Social Stock Exchange |
| `361` | Xtend |
| `362` | Official Market |
| `363` | Second Market |
| `364` | Third Market |
| `365` | Spotlight Select |
| `366` | Main Market |
| `367` | Fukuoka Pro Market |
| `368` | Multilateral Trading Facility |
| `369` | OTCID Basic Market |
| `37` | Euronext Growth |
| `370` | BME MTF Equity - Growth |
| `371` | BME MTF Equity - Scaleup |
| `38` | Alternative Market |
| `4` | First Section |
| `40` | Main Market |
| `45` | Main Board |
| `46` | Growth Enterprises Market |
| `47` | Premium Equities Segment |
| `48` | Standard Equities Segment |
| `49` | Special Purpose Vehicles Segment |
| `5` | Second Section |
| `50` | UCITs Segment |
| `51` | Compensatory Instruments Segment |
| `52` | Structured Products Segment |
| `53` | BaSE - Equities Segment |
| `54` | Category A |
| `55` | Category B |
| `56` | BETa Market |
| `57` | Main Market |
| `58` | ACE Market |
| `59` | Euronext Expand |
| `6` | Mothers |
| `60` | Main Board |
| `61` | Alternative Market |
| `62` | Main Board |
| `63` | Catalist |
| `64` | Global Quote |
| `65` | Market for Alternative Investment |
| `66` | Main Board |
| `67` | AltX |
| `68` | Africa Board |
| `69` | Main Market |
| `7` | Global Select |
| `70` | AIM |
| `71` | Professional Securities Market |
| `72` | Specialist Fund Market |
| `73` | First North Growth Market |
| `74` | JASDAQ |
| `75` | First North Premier Growth Market |
| `76` | SME-ITP |
| `77` | SME-ITP |
| `78` | Nordic Alternative Bond Market |
| `79` | Surveillance Market |
| `8` | Global Market |
| `80` | Regulated Market |
| `81` | Free Market |
| `82` | Regulated Market |
| `83` | Open Market |
| `84` | First North Growth Market |
| `85` | First North Growth Market |
| `86` | Free Market - Subsegment 1 |
| `87` | Free Market - Subsegment 2 |
| `88` | Free Market - Subsegment 3 |
| `89` | Emerging Stock Board |
| `9` | Capital Market |
| `90` | Prime Listing |
| `91` | Standard Listing |
| `92` | Open Market |
| `93` | MTP |
| `94` | A-List |
| `95` | B-List |
| `96` | Official List |
| `97` | Secondary List |
| `98` | Main Board |
| `99` | Premium Board |

### MRGRSTAT

| Value [//]: # (column: sortable) | Description [//]: # (column: sortable) |
| `C` | Complete |
| `O` | On-going |
| `X` | No value |

### ONOFFMKT

| Value [//]: # (column: sortable) | Description [//]: # (column: sortable) |
| `F` | Off |
| `N` | On |

### OUTTURNSTYLE

| Value [//]: # (column: sortable) | Description [//]: # (column: sortable) |
| `ADEX` | Additional for Existing Securities |
| `NEWO` | New for Old Securities |

### PARTFINAL

| Value [//]: # (column: sortable) | Description [//]: # (column: sortable) |
| `F` | Final |
| `P` | Part |

### PAYTYPE

| Value [//]: # (column: sortable) | Description [//]: # (column: sortable) |
| `B` | Cash&Stock |
| `C` | Cash |
| `D` | Dissenters Rights |
| `S` | Stock |
| `T` | ToBeAnnounced |

### REGS144A

| Value [//]: # (column: sortable) | Description [//]: # (column: sortable) |
| `144A` | 144A |
| `REGD` | Regulation D |
| `REGS` | Regulation S |

### SECTYPE

| Value [//]: # (column: sortable) | Description [//]: # (column: sortable) |
| `BND` | Bond |
| `BSW` | Basket Warrant |
| `CDA` | Share Depository Certificate |
| `CDI` | Chess Depository Interest |
| `CN` | Convertible Notes |
| `CVR` | Contingent Value Rights |
| `DR` | Depository Receipts |
| `DRT` | Distribution Rights |
| `DST` | Deferred Settlement Trading |
| `EQS` | Equity Shares |
| `ETC` | Exchange Traded Commodities |
| `ETF` | Exchange Traded Fund |
| `LOA` | Letter of Allotment |
| `MF` | Mutual Fund |
| `PFS` | Preferred Security |
| `PRF` | Preference Share |
| `PRL` | Parallel Line |
| `RCP` | Receipt |
| `RDR` | Redemption Rights |
| `RDS` | Redeemable Shares |
| `SP` | Structured Product |
| `SRT` | Subscription Receipts |
| `STL` | Second Trading Line |
| `STP` | Stapled Security |
| `TRT` | Tradeable Rights |
| `TSS` | Tendered Shares Security |
| `UNT` | Units |
| `WAR` | Warrants |
| `WD` | When Distributed |
| `WIS` | When Issued |

### TKOVRSTAT

| Value [//]: # (column: sortable) | Description [//]: # (column: sortable) |
| `C` | Complete |
| `L` | Lapsed |
| `O` | On-going |

### UTTYP

| Value [//]: # (column: sortable) | Description [//]: # (column: sortable) |
| `O` | Open Ended Investment Companies (OEIC) |
| `T` | Unit Investment Trust |
| `U` | Unit Trust |

### VOTING

| Value [//]: # (column: sortable) | Description [//]: # (column: sortable) |
| `L` | Limited Voting |
| `M` | Multiple Voting |
| `N` | No Voting |
| `V` | Voting |



# Corporate actions events

> **See also**
>
> [Corporate actions](https://databento.com/docs/datasets/corporate-actions.md) dataset guide for further details.

### Company Meeting (`AGM`)

Annual General meeting of shareholders is held once a year, usually after the end of the financial year. Also includes other meeting types such as Extraordinary General Meeting, Special General Meeting, Court Ordered Meeting, and Postal Ballot.

- Event level: **Issuer**
- Event category: **Proposals**
- Event participation: **Voluntary**
- Values for `event_subtype`:
    - `AGM`: Annual General Meeting
    - `BHM`: Bond Holder Meeting
    - `CGM`: Court Ordered General Meeting
    - `EGM`: Extraordinary General Meeting
    - `GM`: General Meeting
    - `SGM`: Special General Meeting

#### **Calendar Dates**

- `event_date` (equal to `meeting_date`)
- `effective_date` (equal to `meeting_date`)
- `record_date`
- `financial_year_end_date`

#### **Dynamic Fields**

| Parent [//]: # (column: sortable) | Field [//]: # (column: sortable) | Description |
| `event_info` | `meeting_number` | Company Meeting Number |
| `event_info` | `meeting_time` | Local time for Start of Meeting |
| `event_info` | `address_line1` | Address line 1 |
| `event_info` | `address_line2` | Address line 2 |
| `event_info` | `address_line3` | Address line 3 |
| `event_info` | `address_line4` | Address line 4 |
| `event_info` | `address_line5` | Address line 5 |
| `event_info` | `address_line6` | Address line 6 |
| `event_info` | `city` | City |
| `event_info` | `country` | Country Code - ISO 3166-1 (See **[CNTRY](https://databento.com/docs/conventions/reference-data-enums.md#cntry)** enum) |

### Announcement (`ANN`)

Intent of the company to have Corporate Action which may affect the shareholder's value. The intent may or may not materialise into an event.

- Event level: **Issuer**
- Event category: **Proposals**
- Event participation: **Voluntary**
- **Does not use** `event_subtype`

#### **Calendar Dates**

- `event_date` (equal to `notification_date`)
- `notification_date`

### Arrangement (`ARR`)

A general term referring to complex reorganisation of a company or a group of companies and its capital.

- Event level: **Security**
- Event category: **Reorganisation**
- Event participation: **Mandatory / Voluntary**
- **Does not use** `event_subtype`

#### **Calendar Dates**

- `event_date` (equal to `ex_date`)
- `ex_date`
- `record_date`
- `payment_date`
- `duebills_redemption_date`
- `to_date`
- `registration_date`
- `option_election_date`
- `withdrawal_rights_from_date`
- `withdrawal_rights_to_date`
- `exp_completion_date`

#### **Dynamic Fields**

| Parent [//]: # (column: sortable) | Field [//]: # (column: sortable) | Description |
| `rate_info` | `min_price` | Minimum Price |
| `rate_info` | `max_price` | Maximum Price |

### Assimilation (`ASSM`)

A general term referring to complex reorganisation of a company or a group of companies and its capital.

- Event level: **Listing**
- Event category: **Reorganisation**
- Event participation: **Mandatory**
- **Does not use** `event_subtype`

#### **Calendar Dates**

- `event_date` (equal to `assimilation_date`)
- `effective_date` (equal to `assimilation_date`)
- `payment_date`

### Buy Back (`BB`)

Buyback events can also be used to transmit Dutch Auction events.

- Event level: **Security**
- Event category: **Reorganisation**
- Event participation: **Voluntary**
- Values for `event_subtype`:
    - `DUTCHAUCT`: Dutch Auction
    - `null`: Generic event, no subtype provided

#### **Calendar Dates**

- `event_date` (equal to `end_date`)
- `effective_date` (equal to `start_date`)
- `record_date`
- `payment_date`
- `to_date`
- `registration_date`
- `start_date`
- `end_date`
- `option_election_date`
- `withdrawal_rights_from_date`
- `withdrawal_rights_to_date`

#### **Dynamic Fields**

| Parent [//]: # (column: sortable) | Field [//]: # (column: sortable) | Description |
| `rate_info` | `min_price` | Minimum Price |
| `rate_info` | `max_price` | Maximum Price |
| `event_info` | `buy_back_min_percentage` | Minimum percentage of the shares outstanding the company will buy back from shareholders. |
| `event_info` | `buy_back_max_percentage` | Maximum percentage of the shares outstanding the company will buy back from shareholders. |
| `event_info` | `on_off_flag` | The mechanism adopted by the company for buying back the shares. Default blank. N - On Market i.e. via the exchange. F - Off Market i.e. some other mechanism other than the exchange. (See **[ONOFFMKT](https://databento.com/docs/conventions/reference-data-enums.md#onoffmkt)** enum) |

### BBG Composite Change (`BBCC`)

To allow change in Bloomberg's ticker or the mapping of BBG ID to a Security ID.

- Event level: **Country**
- Event category: **Static Reference**
- Event participation: **Mandatory**
- **Does not use** `event_subtype`

#### **Calendar Dates**

- `event_date` (equal to `effective_date`)
- `effective_date`

#### **Dynamic Fields**

| Parent [//]: # (column: sortable) | Field [//]: # (column: sortable) | Description |
| `event_info` | `old_bbg_comp_id` | Old Bloomberg Composite ID |
| `event_info` | `new_bbg_comp_id` | New Bloomberg Composite ID |
| `event_info` | `old_bbg_comp_ticker` | Old Bloomberg Composite Ticker |
| `event_info` | `new_bbg_comp_ticker` | New Bloomberg Composite Ticker |
| `event_info` | `old_currency` | Old Currency Code - ISO 4217 (See **[CUREN](https://databento.com/docs/conventions/reference-data-enums.md#curen)** enum) |
| `event_info` | `new_currency` | New Currency Code - ISO 4217 (See **[CUREN](https://databento.com/docs/conventions/reference-data-enums.md#curen)** enum) |
| `event_info` | `old_country` | Old Country Code - ISO 3166-1 (See **[CNTRY](https://databento.com/docs/conventions/reference-data-enums.md#cntry)** enum) |
| `event_info` | `new_country` | New Country Code - ISO 3166-1 (See **[CNTRY](https://databento.com/docs/conventions/reference-data-enums.md#cntry)** enum) |

### BBG Figi Change (`BBEC`)

To allow change in Bloomberg's ticker or the mapping of BBG ID to a ISO 4217 exchange code.

- Event level: **Listing**
- Event category: **Static Reference**
- Event participation: **Mandatory**
- **Does not use** `event_subtype`

#### **Calendar Dates**

- `event_date` (equal to `effective_date`)
- `effective_date`

#### **Dynamic Fields**

| Parent [//]: # (column: sortable) | Field [//]: # (column: sortable) | Description |
| `event_info` | `old_figi` | Old Bloomberg Exchange ID - Old Figi |
| `event_info` | `new_figi` | New Bloomberg Exchange ID - New Figi |
| `event_info` | `old_figi_ticker` | Old Bloomberg Exchange Ticker - Old Figi Ticker |
| `event_info` | `new_figi_ticker` | New Bloomberg Exchange Ticker - New Figi Ticker |
| `event_info` | `old_currency` | Old Currency Code - ISO 4217 (See **[CUREN](https://databento.com/docs/conventions/reference-data-enums.md#curen)** enum) |
| `event_info` | `new_currency` | New Currency Code - ISO 4217 (See **[CUREN](https://databento.com/docs/conventions/reference-data-enums.md#curen)** enum) |
| `event_info` | `old_exchange` | Old Exchange Code - ISO 4217 (See **[EXCHANGE](https://databento.com/docs/conventions/reference-data-enums.md#exchange)** enum) |
| `event_info` | `new_exchange` | New Exchange Code - ISO 4217 (See **[EXCHANGE](https://databento.com/docs/conventions/reference-data-enums.md#exchange)** enum) |

### Bankruptcy (`BKRP`)

When a company's net worth goes below the country's stipulated guideline. There could be several stages in the Bankruptcy process. Hence, one sees several announcements over a period of time. The end result of Bankruptcy could be revival, sale, re-organisation, liquidation etc.

- Event level: **Issuer**
- Event category: **Reorganisation**
- Event participation: **Mandatory**
- **Does not use** `event_subtype`

#### **Calendar Dates**

- `event_date` (equal to `filing_date`)
- `effective_date` (equal to `filing_date`)
- `notification_date`

#### **Dynamic Fields**

| Parent [//]: # (column: sortable) | Field [//]: # (column: sortable) | Description |
| `date_info` | `emergence_date` | Emergence from Bankruptcy Date currently used in US only. |

### Bonus (`BON`)

Issue of FREE securities to the shareholders of the Company by capitalising the reserves of the company. Security being issued can be an instrument other than Equity Share.

- Event level: **Security**
- Event category: **Distribution**
- Event participation: **Mandatory**
- Values for `event_subtype`:
    - `DPRCPDIV`: Depository Receipt Dividend

#### **Calendar Dates**

- `event_date` (equal to `ex_date`)
- `ex_date`
- `record_date`
- `payment_date`
- `duebills_redemption_date`
- `to_date`
- `registration_date`

#### **Dynamic Fields**

| Parent [//]: # (column: sortable) | Field [//]: # (column: sortable) | Description |
| `event_info` | `lapsed_premium` | If the underlying security has a Bonus issue and company decides ADR shares will not have bonus. The company will sell the share on behalf of ADR holders in the market and return the money to ADR holders. So there is no ratio. |

### Bonus Rights (`BR`)

A Bonus issue with tradable rights attached. Effectively, a mixture of Bonus and Rights.

- Event level: **Security**
- Event category: **Distribution**
- Event participation: **Mandatory / Voluntary**
- **Does not use** `event_subtype`

#### **Calendar Dates**

- `event_date` (equal to `ex_date`)
- `ex_date`
- `record_date`
- `payment_date`
- `duebills_redemption_date`
- `to_date`
- `registration_date`
- `start_subscription_date`
- `end_subscription_date`

#### **Dynamic Fields**

| Parent [//]: # (column: sortable) | Field [//]: # (column: sortable) | Description |
| `rate_info` | `issue_price` | Issue Price |
| `date_info` | `starttrade_date` | Start Trade Date |
| `date_info` | `endtrade_date` | End Trade Date |
| `date_info` | `split_date` | Split Date |
| `event_info` | `sub_exp_time` | For a specified date, the time at which the event is set to expire. |
| `event_info` | `sub_exp_time_zone` | Time Zone of the Expiry Time. |
| `event_info` | `over_subscription` | A flag to indicate if the shareholders have the option of oversubscribing for the issue. (See **[BOOLEAN](https://databento.com/docs/conventions/reference-data-enums.md#boolean)** enum) |
| `event_info` | `trading_security_id` | Security ID of the security that may be created for Trading purposes. (Join with the `security_id` field) |
| `event_info` | `trading_isin` | Trading ISIN if applicable/available |

### Call (`CALL`)

Where the issue price of a security in an offer is split in such a way that the shareholders have to pay the issue price in installments. Until the full issue price is received by the company the security remains as Partly Paid. A call is a demand to pay an installment.

- Event level: **Security**
- Event category: **Distribution Debit**
- Event participation: **Voluntary**
- **Does not use** `event_subtype`

#### **Calendar Dates**

- `event_date` (equal to `due_date`)
- `effective_date` (equal to `due_date`)
- `record_date`
- `to_date`
- `registration_date`

#### **Dynamic Fields**

| Parent [//]: # (column: sortable) | Field [//]: # (column: sortable) | Description |
| `rate_info` | `to_face_value` | To Face Value |
| `rate_info` | `to_premium` | To Premium |
| `event_info` | `call_number` | Number of the call which the company has made on the security. For example: 1st Call, 2nd Call, 3rd Call |

### Capital Reduction (`CAPRD`)

Write off of existing Equity Capital of a company by either reducing the par value and/or by cancelling a certain number of shares or capital. If a cash payment is involved then it is described as Return of Capital.

- Event level: **Security**
- Event category: **Reorganisation**
- Event participation: **Mandatory**
- **Does not use** `event_subtype`

#### **Calendar Dates**

- `event_date` (equal to `effective_date`)
- `effective_date`
- `record_date`
- `payment_date`
- `to_date`
- `registration_date`

#### **Dynamic Fields**

| Parent [//]: # (column: sortable) | Field [//]: # (column: sortable) | Description |
| `rate_info` | `par_value_old` | Old Par Value |
| `rate_info` | `par_value_new` | New Par Value |

### Class Action (`CLSAC`)

Holders of security(ies) of a company combine to file a suit for damages from the company.

- Event level: **Security**
- Event category: **Legal Action**
- Event participation: **Voluntary**
- **Does not use** `event_subtype`

#### **Calendar Dates**

- `event_date`
- `effective_date`
- `start_date`
- `end_date`

#### **Dynamic Fields**

| Parent [//]: # (column: sortable) | Field [//]: # (column: sortable) | Description |
| `rate_info` | `settlement_amount` | Settlement Amount |
| `date_info` | `filing_date` | Filing Date |
| `date_info` | `lead_plaintiff_deadline_date` | Lead Plaintiff Deadline Date |
| `date_info` | `proof_filing_deadline_date` | Proof Filing Deadline Date |
| `date_info` | `claim_filing_deadline_date` | Claims Filing Deadline Date |
| `date_info` | `objection_deadline_date` | Objection Deadline Date |
| `date_info` | `exclusion_deadline_date` | Exclusion Deadline Date |
| `event_info` | `court_id` | Unique ID of the Court with which the complaint has been filed |
| `event_info` | `case_number` | Court assigned number of the case |
| `event_info` | `judge` | Judge's name |
| `event_info` | `case_name` | Name of the Case |
| `event_info` | `allegations` | Reasons for which the claimants are initiating a class action. For example: Fraud, Misrepresentation, non-disclosure, insider trading etc. (See **[ALLEGATION](https://databento.com/docs/conventions/reference-data-enums.md#allegation)** enum) |
| `event_info` | `eligible_securities` | Securities eligible to participate in the action |
| `event_info` | `investor_class` | Investor class that can participate in the action (See **[INVESTCLS](https://databento.com/docs/conventions/reference-data-enums.md#investcls)** enum) |
| `event_info` | `on_behalf_of` | The Class Action is on behalf of buyer or seller (See **[ONBEHALF](https://databento.com/docs/conventions/reference-data-enums.md#onbehalf)** enum) |
| `event_info` | `lead_plaintiff` | Name of the Lead Plaintiff |
| `event_info` | `case_status` | Current Status of the case (See **[ONBEHALF](https://databento.com/docs/conventions/reference-data-enums.md#onbehalf)** enum) |

### Consolidation (`CONSD`)

Increase in the Face/Nominal Value of the security. Company's Equity Capital remains the same but the shares in issue reduces. Opposite of Sub-Division.

- Event level: **Security**
- Event category: **Reorganisation**
- Event participation: **Mandatory**
- Values for `event_subtype`:
    - `CONSD`: Reverse Split, currently only used in US events

#### **Calendar Dates**

- `event_date` (equal to `ex_date`)
- `ex_date`
- `record_date`
- `payment_date`
- `duebills_redemption_date`
- `to_date`
- `registration_date`

#### **Dynamic Fields**

| Parent [//]: # (column: sortable) | Field [//]: # (column: sortable) | Description |
| `rate_info` | `par_value_old` | Old Par Value |
| `rate_info` | `par_value_new` | New Par Value |

### Conversion (`CONV`)

Details of individual Conversions of a convertible security (For example: Preference Share, Convertible Bond). Also sometimes used to transmit Voluntary Offers.

- Event level: **Security**
- Event category: **Reorganisation**
- Event participation: **Mandatory / Voluntary**
- Values for `event_subtype`:
    - `BB`: Buyback
    - `CALL`: Call Option Exercised
    - `CLAIMSET`: Claim Settled
    - `DEFPY`: Default Payment
    - `DR`: Drawings
    - `DRL`: Drawings by lottery
    - `ECONV`: Early Conversion
    - `MAT`: Maturity
    - `ORD`: Ordinary
    - `PUT`: Put Option Exercised
    - `REDEMCLAIM`: Redemption Claim
    - `WRTDN`: Write Down
    - `null`: Generic event, no subtype provided

#### **Calendar Dates**

- `event_date` (equal to `from_date`)
- `event_date` (equal to `to_date`)
- `effective_date`
- `record_date`
- `from_date`
- `to_date`
- `registration_date`

#### **Dynamic Fields**

| Parent [//]: # (column: sortable) | Field [//]: # (column: sortable) | Description |
| `rate_info` | `price` | Price |
| `rate_info` | `price_as_percent` | Price as Percent |
| `date_info` | `settlement_date` | Settlement Date |
| `event_info` | `part_final` | Indicates if the conversion is Part or Final. Part conversions may be mandatory. (See **[PARTFINAL](https://databento.com/docs/conventions/reference-data-enums.md#partfinal)** enum) |
| `event_info` | `amount_converted` | Total value of the Bonds that were converted. |
| `event_info` | `cur_pair` | Identifies the different currencies involved for the FX rate to be applied - ISO 4217 (See **[CUREN](https://databento.com/docs/conventions/reference-data-enums.md#curen)** enum) |
| `event_info` | `fxrate` | Foreign Exchange Rate |

### Certificate Exchange (`CTX`)

Physical exchange of existing certificates for another set of certificates. This may be done in case of sub-division, lot change, name change, exchange of one type of security for another type of security.

- Event level: **Security**
- Event category: **Reorganisation**
- Event participation: **Mandatory**
- **Does not use** `event_subtype`

#### **Calendar Dates**

- `event_date` (equal to `end_date`)
- `start_date`
- `end_date`

### Currency Redenomination (`CURRD`)

Change in Security's Capital Currency For example: French Franc to Euro. This may also result in a Par Value change.

- Event level: **Security**
- Event category: **Reorganisation**
- Event participation: **Mandatory**
- **Does not use** `event_subtype`

#### **Calendar Dates**

- `event_date` (equal to `effective_date`)
- `effective_date`

#### **Dynamic Fields**

| Parent [//]: # (column: sortable) | Field [//]: # (column: sortable) | Description |
| `rate_info` | `par_value_old` | Old Par Value |
| `rate_info` | `par_value_new` | New Par Value |
| `event_info` | `old_currency` | Old Par Value Currency Code - ISO 4217 (See **[CUREN](https://databento.com/docs/conventions/reference-data-enums.md#curen)** enum) |
| `event_info` | `new_currency` | New Par Value Currency Code - ISO 4217 (See **[CUREN](https://databento.com/docs/conventions/reference-data-enums.md#curen)** enum) |

### Distribution (`DIST`)

Issue of **free** shares of Company B to the shareholders of Company A. There is no transfer of operations/assets of Company A to Company B. The shareholder continues to hold shares in both Company A and Company B. Hence, the event is distinct from Demerger or Bonus.

- Event level: **Security**
- Event category: **Distribution**
- Event participation: **Mandatory**
- Values for `event_subtype`:
    - `DIST`: Spin-Off, currently only used in US events

#### **Calendar Dates**

- `event_date`
- `ex_date`
- `record_date`
- `payment_date`
- `duebills_redemption_date`
- `to_date`
- `registration_date`
- `option_election_date`
- `withdrawal_rights_from_date`
- `withdrawal_rights_to_date`

#### **Dynamic Fields**

| Parent [//]: # (column: sortable) | Field [//]: # (column: sortable) | Description |
| `rate_info` | `min_price` | Minimum Price |
| `rate_info` | `max_price` | Maximum Price |

### Dividend (`DIV`)

Distribution of a company's profits for a given period to the shareholders in Cash and/or Stock.

- Event level: **Security**
- Event category: **Distribution**
- Event participation: **Mandatory**
- Values for `event_subtype`:
    - `CAPDIST`: Capital Distribution
    - `CAPGAIN`: Capital Gain
    - `DIV`: Forward Split, currently only used in US events
    - `INTDIV`: Derived from Interest Payment
    - `null`: Generic event, no subtype provided

#### **Calendar Dates**

- `event_date` (equal to `ex_date`)
- `ex_date`
- `record_date`
- `payment_date`
- `duebills_redemption_date`
- `to_date`
- `registration_date`
- `option_election_date`
- `financial_year_end_date`

#### **Dynamic Fields**

| Parent [//]: # (column: sortable) | Field [//]: # (column: sortable) | Description |
| `rate_info` | `gross_dividend` | Gross Dividend |
| `rate_info` | `net_dividend` | Net Dividend |
| `date_info` | `declaration_date` | Date Dividend announced by Issuer |
| `date_info` | `periodend_date` | Period End Date |
| `date_info` | `foreign_ex_date` | The Date on which the USD Rate to Currency value was taken. |
| `date_info` | `ex_date2` | This is the Ex Date value for Stock component of a Dividend with a Paytype of (B)oth Stock and Cash. The main Ex Date field will be for the cash payment portion of the same record. |
| `date_info` | `pay_date2` | This is the Payment Date value for Stock component of a Dividend with a Paytype of (B)oth Stock and Cash. The main Payment Date field will be for the cash payment portion of the same record. |
| `event_info` | `marker` | Dividend Marker (See **[MARKER](https://databento.com/docs/conventions/reference-data-enums.md#marker)** enum) |
| `event_info` | `frequency` | Dividend Frequency (See **[FREQ](https://databento.com/docs/conventions/reference-data-enums.md#freq)** enum) |
| `event_info` | `tbaflag` | The company intends to pay a dividend but the details are yet to be announced. (See **[BOOLEAN](https://databento.com/docs/conventions/reference-data-enums.md#boolean)** enum) |
| `event_info` | `nil_dividend` | Real Dividend event but of zero payrate. (See **[BOOLEAN](https://databento.com/docs/conventions/reference-data-enums.md#boolean)** enum) |
| `event_info` | `div_rescind` | Real Dividend event but of zero payrate. (See **[BOOLEAN](https://databento.com/docs/conventions/reference-data-enums.md#boolean)** enum) |
| `event_info` | `declared_currency` | Declared Currency Code - ISO 4217 (See **[CUREN](https://databento.com/docs/conventions/reference-data-enums.md#curen)** enum) |
| `event_info` | `declared_gross_amount` | Declared Gross Amount |
| `event_info` | `unused` | Unused |
| `event_info` | `approx_flag` | If dividend is temporarily an approximate value. Expect an update. (See **[BOOLEAN](https://databento.com/docs/conventions/reference-data-enums.md#boolean)** enum) |
| `event_info` | `tax_rate` | Domestic Withholding Tax Rate |
| `event_info` | `coupon` | In countries where coupons are to be submitted to obtain a benefit this field is useful. |
| `event_info` | `coupon_id` | Coupon ID |
| `event_info` | `div_rate` | Rate of Dividends as a percentage of Par Value. |
| `event_info` | `cur_pair` | Identifies the different currencies involved for the FX rate to be applied - ISO 4217 |
| `event_info` | `dep_fees` | Depositary Fees - Applies only to DR dividends |
| `event_info` | `dep_fees_currency` | Depositary Fees Currency Code - ISO 4217 (See **[CUREN](https://databento.com/docs/conventions/reference-data-enums.md#curen)** enum) |
| `event_info` | `recind_cash_div` | Cash Dividend Cancelled. (See **[BOOLEAN](https://databento.com/docs/conventions/reference-data-enums.md#boolean)** enum) |
| `event_info` | `recind_stock_div` | Stock Dividend Cancelled. (See **[BOOLEAN](https://databento.com/docs/conventions/reference-data-enums.md#boolean)** enum) |
| `event_info` | `usd_rate_to_currency` | USD Exchange Rate for Dividend Currency |
| `event_info` | `div_postponed` | Indicating Postponement of Dividend Payment (See **[BOOLEAN](https://databento.com/docs/conventions/reference-data-enums.md#boolean)** enum) |

### Dividend Investment Fund (`DIVIF`)

Distribution of a company's profits for a given period to the shareholders in Cash and/or Stock, Interest from interest bearing securities and cash and, where applicable, rental income from property funds.

- Event level: **Security**
- Event category: **Distribution**
- Event participation: **Mandatory**
- Values for `event_subtype`:
    - `DIVACC`: Dividend Accumulation
    - `DIVINC`: Dividend Income
    - `INT`: Interest Basis Unknown
    - `INTACC`: Interest Accumulation
    - `INTINC`: Interest Income
    - `PRO`: Property Basis Unknown
    - `PROACC`: Property Accumulation
    - `PROINC`: Property Income

#### **Calendar Dates**

- `event_date` (equal to `ex_date`)
- `ex_date`
- `record_date`
- `payment_date`
- `duebills_redemption_date`
- `to_date`
- `registration_date`
- `financial_year_end_date`

#### **Dynamic Fields**

| Parent [//]: # (column: sortable) | Field [//]: # (column: sortable) | Description |
| `rate_info` | `group1_gross_div` | Group 1 Gross Dividend |
| `rate_info` | `group1_net_div` | Group 1 Net Dividend |
| `date_info` | `declaration_date` | Date Dividend announced by Issuer |
| `date_info` | `periodend_date` | Period End Date |
| `event_info` | `marker` | Dividend Marker (See **[MARKER](https://databento.com/docs/conventions/reference-data-enums.md#marker)** enum) |
| `event_info` | `frequency` | Dividend Frequency (See **[FREQ](https://databento.com/docs/conventions/reference-data-enums.md#freq)** enum) |
| `event_info` | `tbaflag` | The company intends to pay a dividend but the details are yet to be announced. (See **[BOOLEAN](https://databento.com/docs/conventions/reference-data-enums.md#boolean)** enum) |
| `event_info` | `nil_dividend` | Real Dividend event but of zero payrate. (See **[BOOLEAN](https://databento.com/docs/conventions/reference-data-enums.md#boolean)** enum) |
| `event_info` | `div_rescind` | Real Dividend event but of zero payrate. (See **[BOOLEAN](https://databento.com/docs/conventions/reference-data-enums.md#boolean)** enum) |
| `event_info` | `div_postponed` | Indicating Postponement of Dividend Payment (See **[BOOLEAN](https://databento.com/docs/conventions/reference-data-enums.md#boolean)** enum) |
| `event_info` | `tax_rate` |  |
| `event_info` | `group2_gross_div` | Gross up of Group 2 Net distribution. Group 2 is Non pari passu dividend. |
| `event_info` | `group2_net_div` |  |
| `event_info` | `equalisation` | Amount attributable to net realised income that is included in the price of units created or units cancelled by the unit trust fund during the reporting period. |
| `event_info` | `franked_percentage` | Indicates the portion of the distribution that is franked expressed as a percentage. |
| `event_info` | `franked_value` | Indicates the portion of the distribution that is franked expressed as a value. |
| `event_info` | `un_fr_non_foreign_p_c_t` | Indicates the portion of the the non-foreign distribution that is unfranked expressed as a percentage. |
| `event_info` | `un_fr_non_foreign_value` | Indicates the portion of the non-foreign distribution that is unfranked expressed as a value. |
| `event_info` | `un_fr_foreign_p_c_t` | Indicates the portion of the the foreign distribution that is unfranked expressed as a percentage. |
| `event_info` | `un_fr_foreign_value` | Indicates the portion of the foreign distribution that is unfranked expressed as a value. |

### Div Reclassification (`DIVRC`)

- Event level: **Country**
- Event category: **Tax Related**
- Event participation: **Mandatory**
- **Does not use** `event_subtype`

#### **Calendar Dates**

- `event_date` (equal to `ex_date`)
- `ex_date`
- `record_date`
- `payment_date`
- `duebills_redemption_date`
- `to_date`
- `registration_date`
- `option_election_date`
- `financial_year_end_date`

#### **Dynamic Fields**

| Parent [//]: # (column: sortable) | Field [//]: # (column: sortable) | Description |
| `rate_info` | `gross_dividend` | Gross Dividend |
| `rate_info` | `net_dividend` | Net Dividend |
| `date_info` | `declaration_date` | Date Dividend announce. by Issuer |
| `date_info` | `periodend_date` | Period End Date |
| `date_info` | `tax_yearend_date` | Tax Year End Date |
| `event_info` | `div_alloc_tax_year` | Dividend Allocable to Tax Year |
| `event_info` | `income_divs` | Income Dividends |
| `event_info` | `qual_income_divs` | Qualified Income Dividends |
| `event_info` | `short_term_cap_gains` | Short Term Capital Gains |
| `event_info` | `long_term_cap_gains` | Long Term Capital Gains |
| `event_info` | `total_cap_gains` | Total Capital Gains |
| `event_info` | `qual_short_term_cap_gains` | Qualified Short Term Capital Gains |
| `event_info` | `qual_long_term_cap_gains` | Qualified Long Term Capital Gains |
| `event_info` | `qual_total_cap_gains` | Qualified Total Capital Gains |
| `event_info` | `foreign_tax_paid` | Foreign Tax Paid |
| `event_info` | `qual_foreign_tax_paid` | Qualified Foreign Tax Paid |
| `event_info` | `section1202_gain` | Section 1202 Gain |
| `event_info` | `collectables_28_percent_gain` | Collectibles(28%) Gain |
| `event_info` | `cash_liq_dist` | Cash Liquidation Distribution |
| `event_info` | `noncash_liq_dist` | Noncash Liquidation Distribution |
| `event_info` | `exempt_interest_divs` | Exempt Interest Dividends |
| `event_info` | `percentage_of_amount` | Percentage of AMT |
| `event_info` | `return_of_capital` | For US. Portion of Dividend that is a Return of Capital distribution |
| `event_info` | `under1250_section` | For US. Portion of Dividend that is a 1250 section distribution |
| `event_info` | `section199a_inc_div` | Section 199A Income Dividend |
| `event_info` | `section199a_short_term_cap_gain` | Section 199A STCG |
| `event_info` | `section199a_foreign_tax_paid` | Section 199A Foreign Tax Paid |
| `event_info` | `nra_exempt_inc_div` | NRA Exempt Income Dividend |

### Demerger (`DMRGR`)

Separation of a portion of company A's operations/assets into Company B. Shareholders of Company A receive free shares of Company B. (AKA Spin-off)

- Event level: **Security**
- Event category: **Reorganisation**
- Event participation: **Mandatory**
- Values for `event_subtype`:
    - `DMRGR`: Spin-Off, currently only used in US events

#### **Calendar Dates**

- `event_date` (equal to `ex_date`)
- `effective_date`
- `ex_date`
- `record_date`
- `payment_date`
- `duebills_redemption_date`
- `to_date`
- `registration_date`
- `option_election_date`
- `withdrawal_rights_from_date`
- `withdrawal_rights_to_date`
- `exp_completion_date`

#### **Dynamic Fields**

| Parent [//]: # (column: sortable) | Field [//]: # (column: sortable) | Description |
| `rate_info` | `min_price` | Minimum Price |
| `rate_info` | `max_price` | Maximum Price |

### DR Change (`DRCHG`)

Changes in the ratio or underlying security of the Depository Receipt.

- Event level: **Security**
- Event category: **Static Reference**
- Event participation: **Mandatory**
- **Does not use** `event_subtype`

#### **Calendar Dates**

- `event_date` (equal to `effective_date`)
- `effective_date`

#### **Dynamic Fields**

| Parent [//]: # (column: sortable) | Field [//]: # (column: sortable) | Description |
| `event_info` | `old_deposit_receipt_ratio` | Number of old DR's held in DR - UN Ratio |
| `event_info` | `new_deposit_receipt_ratio` | Number of new DR's held in DR - UN Ratio |
| `event_info` | `old_unit_ratio` | Number of old Underlying held in DR - UN Ratio |
| `event_info` | `new_unit_ratio` | Number of new Underlying held in DR - UN Ratio |
| `event_info` | `old_unit_security_id` | Internal Security ID for the Old Underlying Security (Join with the `security_id` field) |
| `event_info` | `new_unit_security_id` | Internal Security ID for the New Underlying Security (Join with the `security_id` field) |
| `event_info` | `old_depbank` | Old Depositary Bank |
| `event_info` | `new_depbank` | New Depositary Bank |
| `event_info` | `old_deposit_receipttype` | Old DR Security Type (See **[DRTYPE](https://databento.com/docs/conventions/reference-data-enums.md#drtype)** enum) |
| `event_info` | `new_deposit_receipttype` | New DR Security Type (See **[DRTYPE](https://databento.com/docs/conventions/reference-data-enums.md#drtype)** enum) |
| `event_info` | `old_level` | Old Level |
| `event_info` | `new_level` | New Level |

### Dividend Reinvestment Plan (`DRIP`)

- Event level: **Country**
- Event category: **Distribution**
- Event participation: **Voluntary**
- **Does not use** `event_subtype`

#### **Calendar Dates**

- `event_date` (equal to `ex_date`)
- `ex_date`
- `record_date`
- `payment_date`
- `duebills_redemption_date`
- `to_date`
- `registration_date`
- `option_election_date`
- `financial_year_end_date`

#### **Dynamic Fields**

| Parent [//]: # (column: sortable) | Field [//]: # (column: sortable) | Description |
| `rate_info` | `drip_reinv_price` | Reinvestment Price |
| `date_info` | `declaration_date` | Date Dividend announced by Issuer |
| `date_info` | `periodend_date` | Period End Date |
| `date_info` | `drip_last_date` | Last Date to opt for DRIP |
| `date_info` | `drip_pay_date` | DRIP Payment Date |
| `date_info` | `crest_date` | Crest Settlement Date |
| `event_info` | `marker` | Dividend Marker (See **[MARKER](https://databento.com/docs/conventions/reference-data-enums.md#marker)** enum) |
| `event_info` | `frequency` | Dividend Frequency (See **[FREQ](https://databento.com/docs/conventions/reference-data-enums.md#freq)** enum) |
| `event_info` | `tbaflag` | The company intends to pay a dividend but the details are yet to be announced. (See **[BOOLEAN](https://databento.com/docs/conventions/reference-data-enums.md#boolean)** enum) |
| `event_info` | `nil_dividend` | Real Dividend event but of zero payrate. (See **[BOOLEAN](https://databento.com/docs/conventions/reference-data-enums.md#boolean)** enum) |
| `event_info` | `div_rescind` | Same as a Cancelled Dividend (See **[BOOLEAN](https://databento.com/docs/conventions/reference-data-enums.md#boolean)** enum) |
| `event_info` | `declared_currency` | Declared Currency Code - ISO 4217 (See **[CUREN](https://databento.com/docs/conventions/reference-data-enums.md#curen)** enum) |
| `event_info` | `declared_gross_amount` | Declared Gross Amount |
| `event_info` | `stamp_duty` | Stamp Duty |
| `event_info` | `stamp_as_percent` | Stamp Duty as Percent |
| `event_info` | `com_fee` | Commission Fee |
| `event_info` | `com_as_percent` | Commission Fee as Percent |
| `event_info` | `div_postponed` | Indicating Postponement of Dividend Payment (See **[BOOLEAN](https://databento.com/docs/conventions/reference-data-enums.md#boolean)** enum) |

### Divestment (`DVST`)

One or more Shareholders of a company offering whole or part of its holding to the existing shareholders of company at a price.

- Event level: **Security**
- Event category: **Reorganisation**
- Event participation: **Voluntary**
- **Does not use** `event_subtype`

#### **Calendar Dates**

- `event_date` (equal to `ex_date`)
- `ex_date`
- `record_date`
- `payment_date`
- `duebills_redemption_date`
- `to_date`
- `registration_date`
- `start_subscription_date`
- `end_subscription_date`

#### **Dynamic Fields**

| Parent [//]: # (column: sortable) | Field [//]: # (column: sortable) | Description |
| `rate_info` | `min_price` | Minimum Price |
| `rate_info` | `max_price` | Maximum Price |
| `event_info` | `trading_security_id` | Security ID of the security that may be created for trading purposes. (Join with the `security_id` field) |
| `event_info` | `trading_isin` | Trading ISIN if applicable/available |

### Entitlement (`ENT`)

Non-renounceable & non-tradable issue of shares. Is the right to purchase new shares at the specific price. The allotment of shares will usually be in the same company.

- Event level: **Security**
- Event category: **Distribution**
- Event participation: **Voluntary**
- Values for `event_subtype`:
    - `NRENRTS`: Non Renounceable Rights
    - `OPOFF`: Open Offer
    - `POFF`: Priority Offer
    - `SPP`: Share Purchase Plan

#### **Calendar Dates**

- `event_date` (equal to `ex_date`)
- `event_date` (equal to `end_subscription_date`)
- `ex_date`
- `record_date`
- `payment_date`
- `duebills_redemption_date`
- `to_date`
- `registration_date`
- `start_subscription_date`
- `end_subscription_date`

#### **Dynamic Fields**

| Parent [//]: # (column: sortable) | Field [//]: # (column: sortable) | Description |
| `rate_info` | `ent_issue_price` | Entitlement Issue Price |
| `event_info` | `over_subscription` | A flag to indicate if the shareholders have the option of oversubscribing for the issue. (See **[BOOLEAN](https://databento.com/docs/conventions/reference-data-enums.md#boolean)** enum) |

### Franking (`FRANK`)

- Event level: **Country**
- Event category: **Tax Related**
- Event participation: **Mandatory**
- Values for `event_subtype`:
    - `F`: Fully franked
    - `N`: Not known
    - `P`: Partially franked
    - `U`: Unfranked

#### **Calendar Dates**

- `event_date` (equal to `ex_date`)
- `ex_date`
- `record_date`
- `payment_date`
- `to_date`
- `registration_date`
- `option_election_date`
- `financial_year_end_date`

#### **Dynamic Fields**

| Parent [//]: # (column: sortable) | Field [//]: # (column: sortable) | Description |
| `rate_info` | `franked_div` | Franked Dividend Amount |
| `rate_info` | `unfranked_div` | Unfranked Dividend Amount |
| `date_info` | `declaration_date` | Date Dividend announced by Issuer |
| `date_info` | `periodend_date` | Period End Date |
| `date_info` | `foreign_ex_date` | Date USD Rate to Currency value was recorded |
| `event_info` | `marker` | Dividend Marker (See **[MARKER](https://databento.com/docs/conventions/reference-data-enums.md#marker)** enum) |
| `event_info` | `frequency` | Dividend Frequency (See **[FREQ](https://databento.com/docs/conventions/reference-data-enums.md#freq)** enum) |
| `event_info` | `tbaflag` | The company intends to pay a dividend but the details are yet to be announced. (See **[BOOLEAN](https://databento.com/docs/conventions/reference-data-enums.md#boolean)** enum) |
| `event_info` | `nil_dividend` | Real Dividend event but of zero payrate. (See **[BOOLEAN](https://databento.com/docs/conventions/reference-data-enums.md#boolean)** enum) |
| `event_info` | `div_rescind` | Real Dividend event but of zero payrate. (See **[BOOLEAN](https://databento.com/docs/conventions/reference-data-enums.md#boolean)** enum) |
| `event_info` | `declared_currency` | Declared Currency Code - ISO 4217 (See **[CUREN](https://databento.com/docs/conventions/reference-data-enums.md#curen)** enum) |
| `event_info` | `declared_gross_amount` | Declared Gross Amount |
| `event_info` | `div_postponed` | Indicating Postponement of Dividend Payment (See **[BOOLEAN](https://databento.com/docs/conventions/reference-data-enums.md#boolean)** enum) |
| `event_info` | `conduit_foreign_income` | Conduit Foreign Income |
| `event_info` | `franking_credit` | Corporate Tax Rate for Franking Credit |

### Forward split (`FSPLT`)

A bonus, dividend, or subdivision event. Currently only used for US securities.

- Event level: **Security**
- Event category: **Distribution**
- Event participation: **Mandatory**
- Values for `event_subtype`:
    - `BON`: Bonus
    - `DIV`: Dividend
    - `SD`: Subdivision

#### **Calendar Dates**

- `event_date` (equal to `ex_date`)
- `ex_date`
- `record_date`
- `payment_date`
- `duebills_redemption_date`
- `to_date`
- `registration_date`

#### **Dynamic Fields**

| Parent [//]: # (column: sortable) | Field [//]: # (column: sortable) | Description |
| `event_info` | `lapsed_premium` | If the underlying security has a Bonus issue and company decides ADR shares will not have bonus. The company will sell the share on behalf of ADR holders in the market and return the money to ADR holders. So there is no ratio. |

### Financial Transaction Tax (`FTT`)

As per EU directive, list of securities in each country on which FTT would be leviable.

- Event level: **Country**
- Event category: **Tax Related**
- Event participation: **Mandatory**
- **Does not use** `event_subtype`

#### **Calendar Dates**

- `event_date` (equal to `end_date`)
- `start_date`
- `end_date`

### Fin. Year Change (`FYCHG`)

Change in accounting year-end of the company

- Event level: **Issuer**
- Event category: **Static Reference**
- Event participation: **Mandatory**
- **Does not use** `event_subtype`

#### **Calendar Dates**

- `event_date` (equal to `notification_date`)
- `notification_date`

#### **Dynamic Fields**

| Parent [//]: # (column: sortable) | Field [//]: # (column: sortable) | Description |
| `date_info` | `old_fin_year_start_date` | Old Financial Year Start Date |
| `date_info` | `old_fin_year_end_date` | Old Financial Year End Date |
| `date_info` | `new_fin_year_start_date` | New Financial Year Start Date |
| `date_info` | `new_fin_year_end_date` | New Financial Year End Date |

### Internat. Code Change (`ICC`)

A change in any of the international codes in the system. For a security the International codes will be common across countries.

- Event level: **Security**
- Event category: **Static Reference**
- Event participation: **Mandatory**
- **Does not use** `event_subtype`

#### **Calendar Dates**

- `event_date` (equal to `effective_date`)
- `effective_date`

#### **Dynamic Fields**

| Parent [//]: # (column: sortable) | Field [//]: # (column: sortable) | Description |
| `event_info` | `old_i_s_i_n` | Old Isin |
| `event_info` | `new_i_s_i_n` | New Isin |
| `event_info` | `old_us_code` | Old US code |
| `event_info` | `new_us_code` | New US code |

### Incorporation Change (`INCHG`)

Change in the Country of Incorporation of the Issuer.

- Event level: **Issuer**
- Event category: **Static Reference**
- Event participation: **Mandatory**
- **Does not use** `event_subtype`

#### **Calendar Dates**

- `event_date` (equal to `incorporation_change_date`)
- `effective_date` (equal to `incorporation_change_date`)

#### **Dynamic Fields**

| Parent [//]: # (column: sortable) | Field [//]: # (column: sortable) | Description |
| `event_info` | `old_country` | Old ISO Country - ISO 3166-1 (See **[CNTRY](https://databento.com/docs/conventions/reference-data-enums.md#cntry)** enum) |
| `event_info` | `new_country` | New ISO Country - ISO 3166-1 (See **[CNTRY](https://databento.com/docs/conventions/reference-data-enums.md#cntry)** enum) |

### Issuer Name Change (`ISCHG`)

Change in the name of the Issuer.

- Event level: **Issuer**
- Event category: **Static Reference**
- Event participation: **Mandatory**
- **Does not use** `event_subtype`

#### **Calendar Dates**

- `event_date` (equal to `name_change_date`)
- `effective_date` (equal to `name_change_date`)

#### **Dynamic Fields**

| Parent [//]: # (column: sortable) | Field [//]: # (column: sortable) | Description |
| `event_info` | `issuer_old_name` | Old Issuer Name |
| `event_info` | `issuer_new_name` | New Issuer Name |
| `event_info` | `legal_name` | Flagged if New Issuer Name is the legal name (See **[BOOLEAN](https://databento.com/docs/conventions/reference-data-enums.md#boolean)** enum) |
| `event_info` | `meeting_date_flag` | Meeting Date Flag (See **[BOOLEAN](https://databento.com/docs/conventions/reference-data-enums.md#boolean)** enum) |

### Local Code Change (`LCC`)

A change to the Localcode/Symbol/Ticker of the Security.

- Event level: **Listing**
- Event category: **Static Reference**
- Event participation: **Mandatory**
- **Does not use** `event_subtype`

#### **Calendar Dates**

- `event_date` (equal to `effective_date`)
- `effective_date`

#### **Dynamic Fields**

| Parent [//]: # (column: sortable) | Field [//]: # (column: sortable) | Description |
| `event_info` | `old_localcode` | Old Local Code |
| `event_info` | `new_localcode` | New Local Code |

### Liquidation (`LIQ`)

A process by which a bankrupt company is sold off as per the Liquidators' guidelines. The shareholders of the company may receive payment from the liquidation proceeds.

- Event level: **Issuer**
- Event category: **Distribution**
- Event participation: **Mandatory**
- **Does not use** `event_subtype`

#### **Calendar Dates**

- `event_date` (equal to `record_date`)
- `record_date`
- `payment_date`
- `option_election_date`
- `withdrawal_rights_from_date`
- `withdrawal_rights_to_date`

#### **Dynamic Fields**

| Parent [//]: # (column: sortable) | Field [//]: # (column: sortable) | Description |
| `rate_info` | `min_price` | Minimum Price |
| `rate_info` | `max_price` | Maximum Price |
| `event_info` | `liquidator` | Name of the agency appointed for liquidating the assets of the company. |
| `event_info` | `liq_add1` | Address Line 1 |
| `event_info` | `liq_add2` | Address Line 2 |
| `event_info` | `liq_add3` | Address Line 3 |
| `event_info` | `liq_add4` | Address Line 4 |
| `event_info` | `liq_add5` | Address Line 5 |
| `event_info` | `liq_add6` | Address Line 6 |
| `event_info` | `liq_city` | City |
| `event_info` | `liq_country` | Country code - ISO 3166-1 (See **[CNTRY](https://databento.com/docs/conventions/reference-data-enums.md#cntry)** enum) |
| `event_info` | `liq_tel` | Phone |
| `event_info` | `liq_fax` | Fax |
| `event_info` | `liq_email` | Email |

### List Status Change (`LSTAT`)

Change in the Listing Status of a security, namely Suspension, Delisting or Resumption of trading. All securities are assumed to be traded unless the listing status is changed.

- Event level: **Listing**
- Event category: **Static Reference**
- Event participation: **Mandatory**
- **Does not use** `event_subtype`

#### **Calendar Dates**

- `event_date` (equal to `effective_date`)
- `effective_date`

#### **Dynamic Fields**

| Parent [//]: # (column: sortable) | Field [//]: # (column: sortable) | Description |
| `event_info` | `old_lotsize` | Old Lot Size |
| `event_info` | `new_lotsize` | New Lot Size |
| `event_info` | `old_min_trading_qty` | Old Minimum Trading Quantity |
| `event_info` | `new_min_trading_qty` | New Minimum Trading Quantity |

### Mutual Fund Conv. (`MFCON`)

- Event level: **Security**
- Event category: **Reorganisation**
- Event participation: **Mandatory**
- **Does not use** `event_subtype`

#### **Calendar Dates**

- `event_date` (equal to `effective_date`)
- `effective_date`

#### **Dynamic Fields**

| Parent [//]: # (column: sortable) | Field [//]: # (column: sortable) | Description |
| `event_info` | `old_u_t_type` | Old Unit Trust Type (See **[UTTYP](https://databento.com/docs/conventions/reference-data-enums.md#uttyp)** enum) |
| `event_info` | `new_u_t_type` | New Unit Trust Type (See **[UTTYP](https://databento.com/docs/conventions/reference-data-enums.md#uttyp)** enum) |

### Market Seg Change (`MKCHG`)

Captures the movement of security from one segment to another within an Exchange.

- Event level: **Listing**
- Event category: **Static Reference**
- Event participation: **Mandatory**
- **Does not use** `event_subtype`

#### **Calendar Dates**

- `event_date` (equal to `effective_date`)
- `effective_date`

#### **Dynamic Fields**

| Parent [//]: # (column: sortable) | Field [//]: # (column: sortable) | Description |
| `event_info` | `old_market_segment_id` | Old Market Segment ID (See **[MKTSG](https://databento.com/docs/conventions/reference-data-enums.md#mktsg)** enum) |
| `event_info` | `new_market_segment_id` | New Market Segment ID (See **[MKTSG](https://databento.com/docs/conventions/reference-data-enums.md#mktsg)** enum) |

### Merger (`MRGR`)

Coming together of two or more companies to form a new company. Shareholders of all the old companies have to exchange their holding for shares of the new company. The original companies cease to exist.

- Event level: **Security**
- Event category: **Reorganisation**
- Event participation: **Mandatory**
- **Does not use** `event_subtype`

#### **Calendar Dates**

- `event_date` (equal to `effective_date`)
- `effective_date`
- `ex_date`
- `record_date`
- `payment_date`
- `duebills_redemption_date`
- `to_date`
- `registration_date`
- `option_election_date`
- `withdrawal_rights_from_date`
- `withdrawal_rights_to_date`
- `exp_completion_date`

#### **Dynamic Fields**

| Parent [//]: # (column: sortable) | Field [//]: # (column: sortable) | Description |
| `rate_info` | `min_price` | Minimum Price |
| `rate_info` | `max_price` | Maximum Price |
| `date_info` | `appointed_date` | Appointed Date |
| `event_info` | `mrgr_status` | Progress of the Merger (See **[MRGRSTAT](https://databento.com/docs/conventions/reference-data-enums.md#mrgrstat)** enum) |

### New Listing (`NLIST`)

A new listing is when a security lists on an exchange for the first time.

- Event level: **Listing**
- Event category: **Static Reference**
- Event participation: **Mandatory**
- **Does not use** `event_subtype`

#### **Calendar Dates**

- `event_date`
- `effective_date`

### Odd Lot Offer (`ODDLT`)

Offer by the Issuer to the shareholder to change their odd lot holdings into round lots. It may entail sale of odd lot shares to the company or a Buy-in of balance amount by the shareholder.

- Event level: **Listing**
- Event category: **Reorganisation**
- Event participation: **Voluntary**
- **Does not use** `event_subtype`

#### **Calendar Dates**

- `event_date` (equal to `end_date`)
- `ex_date`
- `record_date`
- `payment_date`
- `duebills_redemption_date`
- `to_date`
- `registration_date`
- `start_date`
- `end_date`
- `option_election_date`
- `withdrawal_rights_from_date`
- `withdrawal_rights_to_date`

#### **Dynamic Fields**

| Parent [//]: # (column: sortable) | Field [//]: # (column: sortable) | Description |
| `rate_info` | `min_price` | Minimum Price |
| `rate_info` | `max_price` | Maximum Price |
| `event_info` | `buy_in_currency` | Buy in Currency Code - ISO 4217 (See **[CUREN](https://databento.com/docs/conventions/reference-data-enums.md#curen)** enum) |
| `event_info` | `buy_in_price` | The price at which the Shareholder can opt to buy shares from the company to change his odd lot shareholding into round lot. |
| `event_info` | `buy_in_flag` | Indicates if a Buy-in is available. (See **[BOOLEAN](https://databento.com/docs/conventions/reference-data-enums.md#boolean)** enum) |

### Property Income Dividend (`PID`)

- Event level: **Country**
- Event category: **Tax Related**
- Event participation: **Mandatory**
- **Does not use** `event_subtype`

#### **Calendar Dates**

- `event_date` (equal to `ex_date`)
- `ex_date`
- `record_date`
- `payment_date`
- `duebills_redemption_date`
- `to_date`
- `registration_date`
- `option_election_date`
- `financial_year_end_date`

#### **Dynamic Fields**

| Parent [//]: # (column: sortable) | Field [//]: # (column: sortable) | Description |
| `rate_info` | `pid` | Property Income Dividend Portion |
| `rate_info` | `non_pid` | Non Property Income Dividend Portion |
| `date_info` | `declaration_date` | Date Dividend Announced by Issuer |
| `date_info` | `periodend_date` | Period End Date |
| `event_info` | `marker` | Dividend Marker (See **[MARKER](https://databento.com/docs/conventions/reference-data-enums.md#marker)** enum) |
| `event_info` | `frequency` | Dividend Frequency (See **[FREQ](https://databento.com/docs/conventions/reference-data-enums.md#freq)** enum) |
| `event_info` | `tbaflag` | The company intends to pay a dividend but the details are yet to be announced. (See **[BOOLEAN](https://databento.com/docs/conventions/reference-data-enums.md#boolean)** enum) |
| `event_info` | `nil_dividend` | Real Dividend event but of zero payrate. (See **[BOOLEAN](https://databento.com/docs/conventions/reference-data-enums.md#boolean)** enum) |
| `event_info` | `div_rescind` | Real Dividend event but of zero payrate. (See **[BOOLEAN](https://databento.com/docs/conventions/reference-data-enums.md#boolean)** enum) |
| `event_info` | `declared_currency` | Declared Currency Code - ISO 4217 (See **[CUREN](https://databento.com/docs/conventions/reference-data-enums.md#curen)** enum) |
| `event_info` | `declared_gross_amount` | Declared Gross Amount |
| `event_info` | `div_postponed` | Indicating Postponement of Dividend Payment. (See **[BOOLEAN](https://databento.com/docs/conventions/reference-data-enums.md#boolean)** enum) |

### Purchase Offer (`PO`)

Company A has managerial control of Company B. Company A decides to increase its stake in Company B by offering to buy shares from the shareholders of the Company B. Company B will continue to exist.

- Event level: **Security**
- Event category: **Reorganisation**
- Event participation: **Voluntary**
- **Does not use** `event_subtype`

#### **Calendar Dates**

- `event_date` (equal to `close_date`)
- `ex_date`
- `record_date`
- `payment_date`
- `duebills_redemption_date`
- `to_date`
- `registration_date`
- `open_date`
- `close_date`

#### **Dynamic Fields**

| Parent [//]: # (column: sortable) | Field [//]: # (column: sortable) | Description |
| `rate_info` | `min_price` | Minimum Price |
| `rate_info` | `max_price` | Maximum Price |
| `event_info` | `negotiated_price` | Price at which the purchasing company struck a deal for a large chunk of the free holding, |
| `event_info` | `sealed_bid` | True if Sealed Bid (See **[BOOLEAN](https://databento.com/docs/conventions/reference-data-enums.md#boolean)** enum) |
| `event_info` | `min_percent` | TOTAL Percentage of the shares outstanding that the purchaser will buy from the shareholders. |
| `event_info` | `max_percent` | TOTAL Percentage of the shares outstanding that the purchaser will buy from the shareholders. |

### Primary Exchange Chg (`PRCHG`)

Change in the Primary Exchange of a security.

- Event level: **Security**
- Event category: **Static Reference**
- Event participation: **Mandatory**
- **Does not use** `event_subtype`

#### **Calendar Dates**

- `event_date` (equal to `effective_date`)
- `effective_date`

#### **Dynamic Fields**

| Parent [//]: # (column: sortable) | Field [//]: # (column: sortable) | Description |
| `event_info` | `old_exchange` | Old Primary Exchange Code (See **[EXCHANGE](https://databento.com/docs/conventions/reference-data-enums.md#exchange)** enum) |
| `event_info` | `new_exchange` | New Primary Exchange Code (See **[EXCHANGE](https://databento.com/docs/conventions/reference-data-enums.md#exchange)** enum) |

### Preferential Offer (`PRF`)

Offer to the shareholders of Company A to buy securities of Company B on a preferential basis. This offer is a reserved portion of a public offer of Company B. Both companies are normally part of the same group.

- Event level: **Security**
- Event category: **Reorganisation**
- Event participation: **Voluntary**
- **Does not use** `event_subtype`

#### **Calendar Dates**

- `event_date` (equal to `end_subscription_date`)
- `ex_date`
- `record_date`
- `payment_date`
- `duebills_redemption_date`
- `to_date`
- `registration_date`
- `start_subscription_date`
- `end_subscription_date`

#### **Dynamic Fields**

| Parent [//]: # (column: sortable) | Field [//]: # (column: sortable) | Description |
| `rate_info` | `min_price` | Minimum Price |
| `rate_info` | `max_price` | Maximum Price |
| `event_info` | `offeree_issuer_id` | Offeree Issuer ID (Join with the `issuer_id` field) |
| `event_info` | `offeree_name` | Name of the issuer making the offer but the issuer is not available in the Corporate Actions dataset. |

### Par Value Redenomination (`PVRD`)

Write up or write down of Par Value where shares outstanding remains the same BUT the Equity Capital changes.

- Event level: **Security**
- Event category: **Reorganisation**
- Event participation: **Mandatory**
- **Does not use** `event_subtype`

#### **Calendar Dates**

- `event_date` (equal to `effective_date`)
- `effective_date`

#### **Dynamic Fields**

| Parent [//]: # (column: sortable) | Field [//]: # (column: sortable) | Description |
| `rate_info` | `par_value_old` | Old Par Value |
| `rate_info` | `par_value_new` | New Par Value |

### Return of Capital (`RCAP`)

The company decides to return a portion of the equity capital in form of cash. It is often a result of Capital Reduction.

- Event level: **Security**
- Event category: **Distribution**
- Event participation: **Mandatory**
- Values for `event_subtype`:
    - `CAPRD`: Capital Reduction
    - `LIQ`: Liquidation
    - `RES`: Reserves
    - `SOA`: Sale of Assets
    - `SPA`: Share Premium Account
    - `null`: Blank
    - `null`: Generic event, no subtype provided

#### **Calendar Dates**

- `event_date` (equal to `payment_date`)
- `effective_date`
- `ex_date`
- `record_date`
- `payment_date`
- `duebills_redemption_date`
- `to_date`
- `registration_date`
- `financial_year_end_date`

#### **Dynamic Fields**

| Parent [//]: # (column: sortable) | Field [//]: # (column: sortable) | Description |
| `rate_info` | `cash_back` | Cash Back |

### Record Date (`RD`)

Depository Receipt Record Date Event

- Event level: **Security**
- Event category: **Other**
- Event participation: **Mandatory**
- **Does not use** `event_subtype`

#### **Calendar Dates**

- `event_date` (equal to `record_date`)
- `effective_date` (equal to `record_date`)
- `record_date`
- `to_date`

### Redemption (`REDEM`)

Details of individual redemption of a redeemable security eg. Preference Share, Bond. Also sometimes used to transmit Voluntary Offers.

- Event level: **Security**
- Event category: **Reorganisation**
- Event participation: **Mandatory / Voluntary**
- Values for `event_subtype`:
    - `AMT`: Amortisation
    - `BBED`: Buyback Early Deadline
    - `BBRD`: Buyback Regular Deadline
    - `CORR`: Correction
    - `CU`: Clean Up
    - `ER`: Early Redemption
    - `MWC`: Make Whole Call
    - `PF`: Purchase Fund
    - `RM`: Residual Maturity
    - `null`: Generic event, no subtype provided

#### **Calendar Dates**

- `event_date` (equal to `payment_date`)
- `event_date` (equal to `close_date`)
- `effective_date`
- `record_date`
- `payment_date`
- `to_date`
- `registration_date`
- `open_date`
- `close_date`

#### **Dynamic Fields**

| Parent [//]: # (column: sortable) | Field [//]: # (column: sortable) | Description |
| `rate_info` | `redemption_price` | Redemption Price |
| `rate_info` | `redemption_premium` | Redemption Premium |
| `event_info` | `part_final` | Is the Redemption for this date Part or Final. Part Redemptions may be Mandatory. (See **[PARTFINAL](https://databento.com/docs/conventions/reference-data-enums.md#partfinal)** enum) |
| `event_info` | `amount_redeemed` | The total value of all the bonds redeemed i.e. in Millions. Mutually exclusive from Redemption in %. |
| `event_info` | `redemption_percentage` | Redemption in %. To allow for Redemption of security which is only on % basis. |
| `event_info` | `pool_factor` | The outstanding principal balance divided by the original principal balance with the result expressed as a Float. Useful in calculating redemption and outstanding par value. Introduced to capture this figure whenever its available. |
| `event_info` | `price_as_percentage` | Flag to indicate that the Issue Price has been quoted only in percentages. |
| `event_info` | `tender_offeror` | Name of the Offeror if it is different from the Issuer. |

### Reverse split (`RSPLT`)

A consolidation event, currently only used for US securities.

- Event level: **Security**
- Event category: **Reorganisation**
- Event participation: **Mandatory**
- Values for `event_subtype`:
    - `CONSD`: Consolidation

#### **Calendar Dates**

- `event_date` (equal to `ex_date`)
- `ex_date`
- `record_date`
- `payment_date`
- `duebills_redemption_date`
- `to_date`
- `registration_date`

#### **Dynamic Fields**

| Parent [//]: # (column: sortable) | Field [//]: # (column: sortable) | Description |
| `rate_info` | `par_value_old` | Old Par Value |
| `rate_info` | `par_value_new` | New Par Value |

### Rights (`RTS`)

Rights Issue is an offer to existing shareholders to subscribe to further securities in proportion to their holding, at a fixed price, made by means of the issue of a renounceable letter which may be traded for a period before payment for securities is due. The allotment of shares will usually be in the same company.

- Event level: **Security**
- Event category: **Distribution**
- Event participation: **Voluntary**
- Values for `event_subtype`:
    - `DPRCPDIV`: Depository Receipt Dividend
    - `null`: Generic event, no subtype provided

#### **Calendar Dates**

- `event_date` (equal to `ex_date`)
- `ex_date`
- `record_date`
- `payment_date`
- `duebills_redemption_date`
- `to_date`
- `registration_date`
- `start_subscription_date`
- `end_subscription_date`

#### **Dynamic Fields**

| Parent [//]: # (column: sortable) | Field [//]: # (column: sortable) | Description |
| `rate_info` | `issue_price` | Issue Price |
| `date_info` | `start_trade_date` | Start Trade Date |
| `date_info` | `end_trade_date` | End Trade Date |
| `date_info` | `split_date` | Split Date |
| `event_info` | `sub_exp_time` | Subscription expiry time |
| `event_info` | `sub_exp_time_zone` | Subscription expiry time zone |
| `event_info` | `over_subscription` | A flag to indicate if the shareholders have the option of oversubscribing for the issue. (See **[BOOLEAN](https://databento.com/docs/conventions/reference-data-enums.md#boolean)** enum) |
| `event_info` | `lapsed_premium` | If the shareholder does not subscribe to the rights issue the company would pay him this sum. |
| `event_info` | `ratio_old_dist` | Distribution of Rights - Number of old shares held in old - new ratio |
| `event_info` | `ratio_new_dist` | Distribution of Rights - Number of new Rights tradable shares received in old - new ratio |
| `event_info` | `ratio_old_exer` | Exercise of Rights - Number of Rights exercised in old - new ratio |
| `event_info` | `ratio_new_exer` | Exercise of Rights - Number of resultant securities received per Rights exercised in old - new ratio |
| `event_info` | `trading_security_id` | Security ID of the security that may be created for Trading purposes. (Join with the `security_id` field) |
| `event_info` | `trading_isin` | Trading ISIN if applicable/available |
| `event_info` | `pp_security_id` | Poison Pill Rights: This rights behave same as normal rights but they do not trade at all. This rights are normally announced by the company to avoid hostile takeover. (Join with the `security_id` field) |
| `event_info` | `pp_isin` | PP ISIN if applicable/available |

### Description Change (`SCCHG`)

Change in the Security Description.

- Event level: **Security**
- Event category: **Static Reference**
- Event participation: **Mandatory**
- **Does not use** `event_subtype`

#### **Calendar Dates**

- `event_date` (equal to `effective_date`)
- `effective_date`

#### **Dynamic Fields**

| Parent [//]: # (column: sortable) | Field [//]: # (column: sortable) | Description |
| `event_info` | `security_old_name` | Previous Name |
| `event_info` | `security_new_name` | New Name |
| `event_info` | `old_security_type` | Old Security Type Code (See **[SECTYPE](https://databento.com/docs/conventions/reference-data-enums.md#sectype)** enum) |
| `event_info` | `new_security_type` | New Security Type Code (See **[SECTYPE](https://databento.com/docs/conventions/reference-data-enums.md#sectype)** enum) |
| `event_info` | `old_reg_s144a` | Old RegS144A Value (See **[REGS144A](https://databento.com/docs/conventions/reference-data-enums.md#regs144a)** enum) |
| `event_info` | `new_reg_s144a` | New RegS144A Value (See **[REGS144A](https://databento.com/docs/conventions/reference-data-enums.md#regs144a)** enum) |

### Security Swap (`SCSWP`)

An exchange of securities of Company A with those of Company B. For example: Hong Kong companies changing to Bermudan companies prior to British handover to China.

- Event level: **Security**
- Event category: **Reorganisation**
- Event participation: **Mandatory**
- **Does not use** `event_subtype`

#### **Calendar Dates**

- `event_date` (equal to `ex_date`)
- `ex_date`
- `record_date`
- `payment_date`
- `duebills_redemption_date`
- `to_date`
- `registration_date`

#### **Dynamic Fields**

| Parent [//]: # (column: sortable) | Field [//]: # (column: sortable) | Description |
| `rate_info` | `issue_price` | Issue Price |

### Subdivision (`SD`)

Reduction in the Face/Nominal Value of the security. Company's Equity Capital remains the same but the shares in issue increases. Opposite of Consolidation.

- Event level: **Security**
- Event category: **Reorganisation**
- Event participation: **Mandatory**
- Values for `event_subtype`:
    - `SD`: Forward Split, currently only used in US events

#### **Calendar Dates**

- `event_date` (equal to `ex_date`)
- `ex_date`
- `record_date`
- `payment_date`
- `duebills_redemption_date`
- `to_date`
- `registration_date`

#### **Dynamic Fields**

| Parent [//]: # (column: sortable) | Field [//]: # (column: sortable) | Description |
| `rate_info` | `par_value_old` | Old Par Value |
| `rate_info` | `par_value_new` | New Par Value |
| `event_info` | `old_par_value_currency` | ISO Old Currency Code - ISO 4217 (See **[CUREN](https://databento.com/docs/conventions/reference-data-enums.md#curen)** enum) |
| `event_info` | `new_par_value_currency` | ISO New Currency Code - ISO 4217 (See **[CUREN](https://databento.com/docs/conventions/reference-data-enums.md#curen)** enum) |

### Sedol Change (`SDCHG`)

Change in the SEDOL code.

- Event level: **Country**
- Event category: **Static Reference**
- Event participation: **Mandatory**
- **Does not use** `event_subtype`

#### **Calendar Dates**

- `event_date` (equal to `effective_date`)
- `effective_date`

#### **Dynamic Fields**

| Parent [//]: # (column: sortable) | Field [//]: # (column: sortable) | Description |
| `event_info` | `old_sedol` | Old Sedol Code |
| `event_info` | `new_sedol` | New Sedol Code |
| `event_info` | `old_country` | Old Country Code - ISO 3166-1 (See **[CNTRY](https://databento.com/docs/conventions/reference-data-enums.md#cntry)** enum) |
| `event_info` | `new_country` | New Country Code - ISO 3166-1 (See **[CNTRY](https://databento.com/docs/conventions/reference-data-enums.md#cntry)** enum) |
| `event_info` | `old_reg_country` | Old Country of Register - ISO 3166-1 (See **[CNTRY](https://databento.com/docs/conventions/reference-data-enums.md#cntry)** enum) |
| `event_info` | `new_reg_country` | New Country of Register - ISO 3166-1 (See **[CNTRY](https://databento.com/docs/conventions/reference-data-enums.md#cntry)** enum) |
| `event_info` | `old_trading_currency` | Old Trading Currency Code - ISO 4217 (See **[CUREN](https://databento.com/docs/conventions/reference-data-enums.md#curen)** enum) |
| `event_info` | `new_trading_currency` | New Trading Currency Code - ISO 4217 (See **[CUREN](https://databento.com/docs/conventions/reference-data-enums.md#curen)** enum) |

### Security Reclassif. (`SECRC`)

Company reclassifying Security A as Security B or exchanging one security for another. Hence, it happens within the company. For example: Bearer Shares to Registered Shares. This event is distinct from Security Swap.

- Event level: **Security**
- Event category: **Reorganisation**
- Event participation: **Mandatory**
- **Does not use** `event_subtype`

#### **Calendar Dates**

- `event_date` (equal to `effective_date`)
- `effective_date`

### SOS Change (`SHOCH`)

Changes in number of Shares Outstanding of a company.

- Event level: **Security**
- Event category: **Static Reference**
- Event participation: **Mandatory**
- **Does not use** `event_subtype`

#### **Calendar Dates**

- `event_date` (equal to `effective_date`)
- `effective_date`

#### **Dynamic Fields**

| Parent [//]: # (column: sortable) | Field [//]: # (column: sortable) | Description |
| `date_info` | `old_outstanding_date` | Effective Date for previous SOS change |
| `date_info` | `new_outstanding_date` | Effective Date for current SOS change |
| `event_info` | `old_shares_outstanding` | Old shares outstanding amount |
| `event_info` | `new_shares_outstanding` | New shares outstanding amount |

### Spin-off (`SOFF`)

A distribution or demerger event, currently only used for US securities.

- Event level: **Security**
- Event category: **Distribution**
- Event participation: **Mandatory**
- Values for `event_subtype`:
    - `DIST`: Distribution
    - `DMRGR`: Demerger

#### **Calendar Dates**

- `event_date`
- `ex_date`
- `record_date`
- `payment_date`
- `duebills_redemption_date`
- `to_date`
- `registration_date`
- `option_election_date`
- `withdrawal_rights_from_date`
- `withdrawal_rights_to_date`

#### **Dynamic Fields**

| Parent [//]: # (column: sortable) | Field [//]: # (column: sortable) | Description |
| `rate_info` | `min_price` | Minimum Price |
| `rate_info` | `max_price` | Maximum Price |

### Takeover (`TKOVR`)

Company A takes over the managerial control of Company B. Both companies may continue to exist. A Takeover may result in Compulsory Acquisition if the country's trigger limit of minimum public shareholding is breached. Compulsory Acquisition turns the Takeover event from Voluntary to Mandatory.

- Event level: **Security**
- Event category: **Reorganisation**
- Event participation: **Mandatory / Voluntary**
- Values for `event_subtype`:
    - `MRGR`: Merger
    - `TEND`: Tender Offer
    - `TENDMRGR`: Tender resulting in Merger
    - `TKOVRMINI`: Mini-Takeover
    - `UKWNSUBTYP`: Insufficient data to assign a TKOVR event subtype

#### **Calendar Dates**

- `event_date` (equal to `effective_date`)
- `event_date` (equal to `close_date`)
- `effective_date`
- `ex_date`
- `record_date`
- `payment_date`
- `duebills_redemption_date`
- `to_date`
- `registration_date`
- `open_date`
- `close_date`
- `option_election_date`
- `withdrawal_rights_from_date`
- `withdrawal_rights_to_date`
- `exp_completion_date`

#### **Dynamic Fields**

| Parent [//]: # (column: sortable) | Field [//]: # (column: sortable) | Description |
| `rate_info` | `min_price` | Minimum Price |
| `rate_info` | `max_price` | Maximum Price |
| `date_info` | `unconditional_date` | Unconditional Date |
| `date_info` | `compulsory_acq_date` | Compulsory Acquisition Date |
| `event_info` | `pre_offer_qty` | Number of shares held by the Offeror prior to making the Takeover offer. |
| `event_info` | `pre_offer_percentage` | Percentage of the Company's shares outstanding that the Offeror held prior to making the Takeover offer |
| `event_info` | `target_qty` | Total Quantity of shares targeted for the Takeover by the Offeror. |
| `event_info` | `target_percentage` | Percentage of the Company's shares outstanding targeted by the Offeror. |
| `event_info` | `offeror_issuer_id` | Internal `issuer_id` of the Offeror (Join with the `issuer_id` field) |
| `event_info` | `offeror_name` | Name of the issuer making the offer but the issuer is not available in the Corporate Actions dataset. |
| `event_info` | `hostile` | (T)rue if Hostile Takeover (See **[BOOLEAN](https://databento.com/docs/conventions/reference-data-enums.md#boolean)** enum) |
| `event_info` | `event_status` | Takeover Status Code (See **[TKOVRSTAT](https://databento.com/docs/conventions/reference-data-enums.md#tkovrstat)** enum) |

### Exercise of Warrants (`WAREX`)

A Warrant normally has tenure, and this tenure could result in redemption or expire: this event describes the exercise terms.

- Event level: **Security**
- Event category: **Reorganisation**
- Event participation: **Voluntary**
- **Does not use** `event_subtype`

#### **Calendar Dates**

- `event_date` (equal to `to_date`)
- `effective_date` (equal to `from_date`)
- `from_date`
- `to_date`

#### **Dynamic Fields**

| Parent [//]: # (column: sortable) | Field [//]: # (column: sortable) | Description |
| `rate_info` | `strike_price` | Strike Price |
| `rate_info` | `price_per_share` | Price Per Share |
