Source: https://databento.com/docs/datasets/dbix-cgif


# Databento Core Indices - CGIF

**Dataset ID**: [DBIX.CORE]($PLATFORM_HOSTNAME/catalog/dbix/DBIX.CORE)

`DBIX.CORE` consolidates index data from multiple upstream feeds into a single dataset, organized by `venue`. It's an aggregate of index feeds rather than an order-driven market, so Databento does not offer an [MBO schema](https://databento.com/docs/schemas/mbo.md) for `DBIX.CORE`.

This page covers the channels sourced from Cboe's Titanium Cboe Global Indices Feed (CGIF).

### Channels

Cboe disseminates index values, contributor values, and index summaries from several index providers through CGIF, which Databento receives over UDP multicast in our NY4 data center and normalizes into `DBIX.CORE`. CGIF carries values from seven index providers, each its own channel, mapped to a distinct `Publisher` within `DBIX.CORE`:

| Channel | Publisher (ID) | Provider | Source messages |
| `MAIN` | `DBIX.CORE.MAIN` (146) | Cboe Global Indices Feed | `IndexValue` |
| `MSCI` | `DBIX.CORE.MSCI` (147) | MSCI | `IndexValue` |
| `FTSE` | `DBIX.CORE.FTSE` (148) | FTSE Russell | `IndexValue` |
| `INAV` | `DBIX.CORE.INAV` (149) | Intraday Net Asset Values | `IndexValue` |
| `MSTAR` | `DBIX.CORE.MSTAR` (150) | Morningstar | `ContributorValue`, `IndexSummary` |
| `CCCY` | `DBIX.CORE.CCCY` (151) | Crypto Currency Indices | `IndexValue` |
| `CGI` | `DBIX.CORE.CGI` (152) | Cboe Global Indices | `IndexValueWithStatus` |

Index status is normalized to the [status](https://databento.com/docs/schemas/status.md) schema, and index definitions to [instrument definitions](https://databento.com/docs/schemas/instrument-definitions.md), the same way across all seven channels.

### Timestamps

CGIF messages include a `SendingTime` in the packet header, shared by every message in that packet.
As with all of our datasets, we also collect a `ts_recv` timestamp when the packet was received by our capture server.

| Databento Field | CGIF Field | Description |
| `ts_recv` | N/A | The capture-server-received timestamp. |
| `ts_event` | `SendingTime` (packet header) | The gateway-sending timestamp, shared by every message in the same packet. |
| `ts_in_delta` | N/A | The delta between `ts_recv` and `ts_event`, or between `ts_recv` and `TransactTime` for `MSTAR`. |

Note that `SendingTime` only carries millisecond resolution, and no additional precision is added when normalizing it to a nanosecond `ts_event`.

For `MSTAR`, messages also include a `TransactTime`, a millisecond-resolution epoch timestamp present on both `ContributorValue` and `IndexSummary` messages. `TransactTime` is the source for `ts_in_delta` on `MSTAR`'s [MBP-1](https://databento.com/docs/schemas/mbp-1.md), [trades](https://databento.com/docs/schemas/trades.md), and [statistics](https://databento.com/docs/schemas/statistics.md) records; it's more accurate than the packet-level `SendingTime` used for the other channels' `ts_in_delta`.

For `IndexSummary` messages, the [statistics schema](https://databento.com/docs/schemas/statistics.md)'s `ts_ref` field is set to the summary's effective `Date` (a `YYYYMMDD` value) decoded to UTC midnight, rather than a precise event time.

More details about our timestamps are available in our [timestamping guide](https://databento.com/docs/architecture/timestamping-guide.md).

### MBP-1 and Trades normalization

CGIF does not publish order book depth, so each source message is normalized to a single-level [MBP-1](https://databento.com/docs/schemas/mbp-1.md) record: the `Bid` and `Ask` values become `bid_px` and `ask_px` at the top book level, the index value becomes `price`, and `action` is fixed to Trade. Every MBP-1 record also produces a matching [trades](https://databento.com/docs/schemas/trades.md) record, copying over `ts_recv`, `ts_event`, `ts_in_delta`, `price`, `flags`, and `action`, with `depth` fixed to `0`.

**MAIN, MSCI, FTSE, INAV, CCCY**

The source message is `IndexValue`, and `flags` is fixed to `F_LAST`.

**CGI**

The source message is `IndexValueWithStatus`, but only entries without a `Close` or `Settlement` value are normalized this way; see Statistics normalization below for the rest. `F_LAST` is always set. `F_PUBLISHER_SPECIFIC` indicates an indicative index value: set when `IndexStatus` is `Indicative`, and unset when `Normal`.

**MSTAR**

The source message is `ContributorValue`, and `flags` is fixed to `F_LAST`.

### Statistics normalization

Only `CGI` and `MSTAR` produce [statistics schema](https://databento.com/docs/schemas/statistics.md) records; the other CGIF channels have no source messages that normalize to statistics.

**CGI**

`CGI`'s `IndexValueWithStatus` entries that carry a `Close` or `Settlement` value are normalized to statistics instead of MBP-1/trades:

| CGIF MDEntryType | `stat_type` | `stat_flags` |
| `Close` | `CLOSE_PRICE`, or `INDICATIVE_CLOSE_PRICE` when `IndexStatus` is `Indicative` | Unset |
| `Settlement` | `SETTLEMENT_PRICE` | `1` when `IndexStatus` is `Normal`, or `0` when `Indicative` |

`CGI` only carries `IndexValueWithStatus` messages - it doesn't receive `IndexSummary` messages, so it never produces the start-of-day and end-of-day statistics that `MSTAR` does.

**MSTAR**

`MSTAR`'s `IndexSummary` messages are always normalized to statistics, one record per `MDEntryType` entry. `stat_type` is always `VENUE_SPECIFIC_PRICE_1`.

`stat_flags` is a bit field that depends on the entry's `MDEntryType` and whether `SummaryType` is start-of-day (`SOD`) or end-of-day (`EOD`):

| Value | Decimal | Description |
| `1 << 0` | 1 | `IndexValue` entry, `SummaryType` is `SOD`. |
| `1 << 1` | 2 | `Bid` entry, `SummaryType` is `SOD`. |
| `1 << 2` | 4 | `Ask` entry, `SummaryType` is `SOD`. |
| `1 << 3` | 8 | `IndexValue` entry, `SummaryType` is `EOD`. |
| `1 << 4` | 16 | `Bid` entry, `SummaryType` is `EOD`. |
| `1 << 5` | 32 | `Ask` entry, `SummaryType` is `EOD`. |

`MSTAR` doesn't receive `IndexValueWithStatus` messages, so it never produces the Close and Settlement statistics that `CGI` does.

### Definition normalization

Index definitions are normalized to [instrument definitions](https://databento.com/docs/schemas/instrument-definitions.md) the same way across all seven channels:

| Databento Field | CGIF Field | Description |
| `raw_symbol` | `Symbol` | Normalized verbatim. |
| `group` | `Agent` | A 2-character classification code. |
| `secsubtype` | `Channel` | The CGIF channel that index data is received on. |
| `exchange` | N/A | Always set to the literal `CGIF`. |
| `instrument_class` | N/A | Always `INDEX`. |
| `match_algorithm` | N/A | Always `UNDEFINED`, since CGIF is an index feed with no matching engine. |

### Status normalization

The corresponding [status schema](https://databento.com/docs/schemas/status.md) record is derived from the definition's `Status` field:

| CGIF Trading Status | `action` | `is_trading` | `is_quoting` |
| Active | `TRADING` | Yes | Yes |
| Inactive | `CLOSE` | No | No |
| Deleted | `SUSPEND` | No | No |
