```{toctree} --- maxdepth: 2 hidden: true --- docs/src/ENUMS.md docs/src/API.md ``` # finance enums Standard financial enumerations [![Build Status](https://github.com/prettygoodcapital/finance-enums/actions/workflows/build.yaml/badge.svg?branch=main&event=push)](https://github.com/prettygoodcapital/finance-enums/actions/workflows/build.yaml) [![codecov](https://codecov.io/gh/prettygoodcapital/finance-enums/branch/main/graph/badge.svg)](https://codecov.io/gh/prettygoodcapital/finance-enums) [![License](https://img.shields.io/github/license/prettygoodcapital/finance-enums)](https://github.com/prettygoodcapital/finance-enums) [![PyPI](https://img.shields.io/pypi/v/finance-enums.svg)](https://pypi.python.org/pypi/finance-enums) ## Overview `finance-enums` is the shared vocabulary layer for the `finance-*` stack. It exposes string-valued Python enums backed by Rust static data tables, plus structured currency metadata and a small frequency enum used by calendar-aware libraries. The goal is to make identifiers boring and consistent: country codes, currencies, exchange codes, GICS-like sector taxonomy, security types, instrument types, portfolio labels, lifecycle states, order flags, trade sides, and time-in-force values all come from one package. ### Quick start ```python from finance_enums import ( CommodityType, ContractStyle, Currency, ExchangeCode, FundType, OptionExerciseType, OptionType, SecurityType, SettlementStatus, SettlementType, Sector, transaction_intent, UnderlyingAssetClass, exchange_record, exchange_records_by_country, build_cfi, parse_cfi, Frequency, to_frequency, ) str(Currency.USD) # "USD" Currency.USD.currency_name() # "United States dollar" Currency.USD.is_iso4217() # True Currency("e-CNY") # Currency.ECNY ExchangeCode.XNYS.value # "XNYS" ExchangeCode.XNYS.record().region # "Americas" exchange_record("XNYS").market_name # "NEW YORK STOCK EXCHANGE, INC." len(exchange_records_by_country("US")) > 0 parse_cfi("ESVUFB").equity_type.value # "Shares" build_cfi(security_type=SecurityType.Option, option_type=OptionType.Call) # "OCXXXX" build_cfi( security_type=SecurityType.Option, option_type=OptionType.Call, option_exercise_type=OptionExerciseType.American, underlying_asset_class=UnderlyingAssetClass.Equity, settlement_type=SettlementType.Physical, contract_style=ContractStyle.Standardized, ) # "OCASPS" build_cfi(security_type=SecurityType.Currency) # "IFXXXP" build_cfi(security_type=SecurityType.Commodity, commodity_type=CommodityType.Agriculture) # "ITAXXX" build_cfi(category="S", group="F") # "SFXXXX" transaction_intent("open_short").side.value # "Sell" SettlementStatus.Settled.value # "Settled" Sector.InformationTechnology.value # "InformationTechnology" FundType.ETF is FundType.ExchangeTradedFund # True FundType("ETF").value # "ExchangeTradedFund" to_frequency("monthly") # Frequency.Month Frequency.Month.periods_per_year # 12 Frequency.Month.polars_truncate # "1mo" ``` ### Enum families The public Python API includes: - Countries: `CountryCode`, `CountryCode3` - Currencies: `Currency`, `CurrencyRecord`, `CurrencyAliasRecord`, `currency_records`, `currency_alias_records` - Venues: `ExchangeCode`, `ExchangeRecord`, `exchange_record`, `exchange_records`, `exchange_records_by_country`, `exchange_records_by_operating_mic`, `exchange_records_by_parent_mic`, `exchange_records_by_status`, `exchange_records_by_region`, `exchange_records_by_market_category`, `MICMarketCategory`, `VenueRegulatoryFlag`, `exchange_records_by_market_category_type`, `exchange_records_by_regulatory_flag` - Sector taxonomy: `Sector`, `IndustryGroup`, `Industry`, `SubIndustry` - Market structure: `VenueType`, `MarketType`, `TradingSession`, `MarketState`, `AuctionType`, `SegmentType`, `MarketStatusReason` - Identifier and notation: `IdentifierType`, `TickerNamespace`, `PriceNotation`, `QuantityUnit`, `CurrencyRole` - Instruments: `SecurityType`, `InstrumentType`, `EquityType`, `OptionType`, `OptionExerciseType`, `BondType`, `CommodityType`, `EnergyType`, `MetalsType`, `AgricultureType`, `FundType`, `FundSubType`, `MutualFundEndedness`, `FutureAssetClass`, `SettlementType`, `DeliveryType`, `UnderlyingAssetClass`, `ContractStyle`, `PayoffStyle`, `ContractUnit`, `LegRole` - Fixed income and financing: `CouponType`, `CouponFrequency`, `DayCountConvention`, `AmortizationType`, `Seniority`, `CollateralType`, `MarginType`, `BorrowType`, `RepoType`, `FinancingType` - Swaps and structured products: `SwapType`, `SwapLegType`, `RateIndex`, `ResetFrequency`, `CompoundingMethod`, `StubType`, `BarrierType`, `AveragingMethod`, `ExoticOptionFeature` - Post-trade and clearing: `SettlementStatus`, `ClearingModel`, `ClearingHouse`, `FailsReason`, `AllocationMethod`, `GiveUpType` - Benchmarks and index administration: `BenchmarkType`, `IndexWeightingMethod`, `RebalanceFrequency`, `CorporateActionAdjustmentType`, `CalculationAgentType` - Portfolio and fund structure: `AccountType`, `BookType`, `PositionType`, `InventoryType`, `StrategyType`, `NettingType`, `VehicleWrapper`, `DistributionPolicy`, `ShareClassHedging`, `LiquidityTerm`, `RedemptionFrequency` - Corporate actions and lifecycle: `CorporateActionType`, `ListingStatus`, `SecurityStatus`, `ExerciseEventType`, `TenderOfferType`, `DelistingReason` - CFI helpers: `CFIClassification`, `parse_cfi`, `build_cfi`, `build_cfi_from_classification`, `validate_cfi_classification` - Versioned enum schema helpers: `EnumVariantRecord`, `EnumFamilySchema`, `enum_variant_records`, `enum_family_schemas`, `enum_schema`, `enum_schema_json`, `enum_export_capsule` - Trading: `OrderType`, `OrderStatus`, `ExecutionType`, `ExecutionInstruction`, `LiquidityFlag`, `PositionEffect`, `OrderCapacity`, `ShortSaleRestriction`, `Side`, `OrderFlag`, `TimeInForce` - Market data: `QuoteCondition`, `TradeCondition`, `AggressorSide`, `CrossType`, `PriceKind`, `PriceNotation` - Frequencies: `Frequency`, `to_frequency` ### Ordinal 0 is the invalid/unknown sentinel Every Rust-backed enum family reserves **ordinal 0 for an invalid/unknown sentinel**, so a real, meaningful variant always has a non-zero ordinal. This makes a zero-initialised or default value unambiguously "not set" in every language (C/C++/Rust/Python), and avoids a falsy-zero variant silently passing for a real value. - Semantic families get an `Invalid` member at ordinal 0, injected by the `finance_enum!` macro in `rust/src/data.rs`. - ISO code families reuse their own standard "no value" code at ordinal 0 instead of a synthetic `Invalid`: `Currency` → `XXX`, `CountryCode` → `XX`, `CountryCode3` → `XXX`, `ExchangeCode` → `XXXX`. These are declared with the `finance_enum_raw!` macro (which does not inject `Invalid`). Each typed Rust enum provides string conversions: `name()` / `as_str()` (to-string) and `from_str()` plus a `std::str::FromStr` impl (from-string). ### Documentation See the [Enums](docs/src/ENUMS.md) page for the enum families, metadata conventions, exchange-code relationship with `finance-dates`, and Rust/Python naming notes. See the [API](docs/src/API.md) page for a reference and recipes. ### Rust crate The Rust crate is published as `finance_enums` on crates.io and imported as `finance_enums` in Rust code: ```toml [dependencies] finance_enums = "0.7.0" ``` ```rust use finance_enums::data::ExchangeCode_VARIANTS; ``` The Python package name is `finance-enums`; the Rust package uses an underscore because the original crates.io name cannot be renamed to the hyphenated spelling. > [!NOTE] > This library was generated using [copier](https://copier.readthedocs.io/en/stable/) from the [Base Python Project Template repository](https://github.com/python-project-templates/base). ## Currency Metadata Currency data is maintained from a structured Rust source of truth. - Each currency row includes a code, display name, and `is_iso4217` flag. - Python exposes structured access through `currency_records()` and `currency_alias_records()`. - Native consumers can re-extract the same immutable dataset through the versioned `finance_enums.currency_export_v1` `PyCapsule` or the exported `finance_enums_currency_export_v1` C ABI symbol. ## Exchange Metadata Exchange coverage is now backed by bundled ISO 10383 MIC records plus a small set of project-defined calendar families. - Python exposes structured exchange access through `exchange_records()` and `ExchangeCode.record()`. - Python also exposes direct venue lookups through `exchange_record()` and indexed filters through `exchange_records_by_country()`, `exchange_records_by_operating_mic()`, `exchange_records_by_parent_mic()`, `exchange_records_by_status()`, `exchange_records_by_region()`, `exchange_records_by_market_category()`, `exchange_records_by_market_category_type()`, and `exchange_records_by_regulatory_flag()`. - Each `ExchangeRecord` and `ExchangeCode` can derive a typed MIC market category through `.market_category()` and standards-backed regulatory flags through `.regulatory_flags()` / `.has_regulatory_flag()`. - Bundled exchange metadata includes market name, legal entity, operating and parent MICs, market category, acronym, ISO country code, city, website, status, region, subregion, segment flag, and official/project provenance. - Project-defined non-ISO venue families remain available for downstream calendar consumers: `PYPR`, `SIMU`, `FOREX`, `CRYPTO`, `SIFMA_US`, `ICE_US`, and `CFE`. ## Native C ABI `finance-enums` ships a versioned C ABI for immutable metadata and enum-family discovery. - The core Rust crate exports `finance_enums_currency_export_v1` and `finance_enums_exchange_export_v1`. - The core Rust crate also exports `finance_enums_enum_export_v1`, a flat enum-family / variant table that lets C and C++ consumers discover every Rust-backed enum without needing Python. - The public header lives at `finance_enums/include/finance_enums.h`; hatch-rs validates it as an expected artifact and wheel builds install it to `include/finance_enums/finance_enums.h`. - Wheels also bundle a standalone shared library inside `finance_enums/lib/` so downstream C or C++ code can link against the same versioned export surface. - Python exposes the same schema as dataclasses through `enum_variant_records()` and `enum_family_schemas()`, and as deterministic JSON through `enum_schema_json()` for Arrow/JSON schema bridges. ### Compile-time enum headers In addition to the runtime ABI, two header-only artifacts give C and C++ consumers zero-overhead access to families known at compile time (no library load required): - `finance_enums/include/finance_enums_generated.h` — generated `typedef enum` constants (`FE__`) plus `FE__COUNT` and the `FE_ENUMS_ORDINAL_VALID(family, ordinal)` macro, and matching C++ `enum class` definitions in `namespace fe`. Regenerate with `python finance_enums/gen_enums_header.py`. - `finance_enums/include/finance_enums_convert.hpp` — `constexpr` helpers in `fe::convert` (`to_ordinal`, `from_ordinal_unchecked`, `try_from_ordinal`, `checked_from_ordinal`) to move between an ordinal and a typed `fe::`. These cover the `finance_enum!` families declared in `rust/src/data.rs`. The name-indexed `Currency` and `ExchangeCode` families remain runtime-only via the C ABI export, since they are generated from their own data tables. ```cpp #include // compile-time enum class #include // ordinal <-> enum helpers auto sec = fe::SecurityType::Equity; // enum class, size_t underlying std::size_t ord = fe::convert::to_ordinal(sec); // round-trips to Python int() if (auto s = fe::convert::checked_from_ordinal(ord, FE_SecurityType_COUNT)) use(*s); ``` ### ABI compatibility The enum data exposes a **semantic** ABI version — `(major, minor, patch)` — so any consumer (Rust, C, C++, or Python) can check at runtime whether the library it loaded is compatible with the version it was built against. | Component | Meaning after 1.0 | Example change | | --------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | --------------------------------------------- | | **MAJOR** | Backwards-*incompatible* change. A variant or family was reordered, removed, or renamed, or an export struct layout changed. Consumers built against a different major MUST NOT use the library. | Reordering `Side` variants; removing a family | | **MINOR** | Backwards-*compatible* append. New variants added to the **end** of a family, or entirely new families. Existing ordinals never move. | Adding a new `Currency` at the end | | **PATCH** | No effect on the ordinal layout. Docs, display names, metadata, internal refactors. | Fixing a label typo | The C ABI remains beta while the package major version is zero. During this period, consumers require an exact major/minor match. Starting with 1.0, a consumer is compatible when the major matches and the library minor is at least the consumer minor. ```python # Python — straight from the installed wheel from finance_enums import abi_version, abi_compatible, assert_abi_compatible abi_version() # (0, 7, 0) abi_compatible(0, 7) # True abi_compatible(0, 6) # False — beta minor mismatch assert_abi_compatible(0, 7) # raises RuntimeError if incompatible ``` ```rust // Rust use finance_enums::{abi_compatible, assert_abi_compatible}; use finance_enums::{ENUM_ABI_VERSION_MAJOR, ENUM_ABI_VERSION_MINOR}; assert!(abi_compatible(ENUM_ABI_VERSION_MAJOR, ENUM_ABI_VERSION_MINOR)); assert_abi_compatible(ENUM_ABI_VERSION_MAJOR, ENUM_ABI_VERSION_MINOR); // panics if not ``` ```c /* C — compares the compile-time header version against the loaded library */ #include if (!finance_enums_abi_header_compatible()) { /* refuse to run against an incompatible library */ } ``` ```cpp // C++ — RAII loader resolves and checks the version for you #include fe::EnumLibrary lib("./libfinance_enums.dylib"); lib.assert_abi_compatible(); // throws std::runtime_error on mismatch auto v = lib.abi_version(); // fe::AbiVersion{major, minor, patch} ``` The C / C++ paths need the shared library built once via `cargo build --release` in `rust/` (wheels bundle it under `finance_enums/lib/`). ### Package-manager builds The conda recipe produces two packages from one source tree: `libfinance-enums` contains the shared C ABI library, headers, CMake config, and pkg-config metadata; `finance-enums` contains the Python extension and depends on the exact native package build. Build both locally with `rattler-build build --recipe conda/recipe.yaml`. The repository also contains a native-only vcpkg overlay port. It intentionally requires a dynamic triplet because the supported ABI boundary is the standalone shared library: ```console vcpkg install finance-enums --classic --overlay-ports=ports --triplet x64-linux-dynamic ``` The overlay uses the local checkout while under development. Before registry submission, its portfile must use a tagged release archive and pinned SHA512. ### 0.7 beta ABI baseline Version 0.7 establishes ordinal-zero invalid/unknown sentinels across every enum family. Published 0.6 consumers must treat 0.7 as ABI-incompatible: the sentinel insertion changed existing ordinals and several families were renamed or replaced. Runtime compatibility checks therefore reject consumers built against semantic ABI 0.6. Because the ABI is still beta, 0.7 finalizes the existing V1 export structures in place instead of adding parallel V2 exports. Consumers must pair 0.7 headers with a 0.7 library. At 1.0, existing layouts and ordinals become stable; later layout changes will require a new versioned export. The checked-in `reference_snapshots/abi.json` records the complete 0.7 schema digest, family-prefix counts, semantic ABI, C layout, and published 0.6 baseline. Tests require a deliberate version and snapshot update whenever the public ABI changes. ## Trading Intent Helpers `Side` intentionally remains trade direction only: `None`, `Buy`, and `Sell`. Short-sale and cover semantics are represented by combining `Side` with `PositionEffect` and `PositionType`. ```python from finance_enums import transaction_intent transaction_intent("open_long") # Buy + Open + Long transaction_intent("close_long") # Sell + Close + Long transaction_intent("open_short") # Sell + Open + Short transaction_intent("cover_short") # Buy + Close + Short ``` This follows the FIX-style separation between side/direction and position effect while giving downstream transaction schemas one canonical helper for common intents. ## Reference Data Maintenance The repository includes deterministic local tooling for standards-backed data maintenance. - `scripts/generate_reference_data.py --check` validates that `rust/src/exchange_codes.rs` remains aligned with the vendored MIC records in `rust/src/exchange_records/*.tsv`; `--write` can regenerate the compatibility table. - `scripts/snapshot_reference_diffs.py --check` compares current MIC, currency, country, and future-related snapshots with `reference_snapshots/standards.json`; `--write` refreshes the checked-in snapshot after an intentional data update. - `make develop` now performs an editable install with build isolation, and `make rebuild-extension` rebuilds the local extension in-place after Rust or PyO3 changes. ## CFI Helpers `finance-enums` now includes a broader ISO 10962 / CFI parser and builder. - `parse_cfi()` maps supported families into the existing enum surface for equities, bonds, funds, options, futures, swaps, financing, spot FX, spot commodities, forwards, spreads, and indices, while preserving the raw category, group, and attribute characters. - `build_cfi()` emits category/group-correct codes for the supported enum-backed families and also accepts raw `category`, `group`, and `attributes` inputs for ISO categories that the library does not model with dedicated enums yet. - `build_cfi_from_classification()` and `CFIClassification.to_code()` provide a structured round-trip path from typed enum-backed classifications back into ISO 10962 strings. - `validate_cfi_classification()` and `CFIClassification.validate()` check that the typed fields, raw CFI positions, and stored `code` all agree before downstream code persists or republishes a classification. - Listed options and futures now expose typed derivative attributes for underlier asset class, settlement or delivery semantics, and contract standardization instead of leaving those positions opaque. - Non-listed options, forwards, and strategies now support rate, credit, mixed-asset, and other high-value CFI underlier groups through `UnderlyingAssetClass`. - `SecurityType.PerpetualFuture` is available as a standalone library type and builds through the ISO futures CFI envelope, because ISO 10962 does not encode a dedicated perpetual-future category. - Remaining unsupported enum families still raise `NotImplementedError` during generation rather than guessing invalid codes. ## Live Reference Tests Live standards coverage tests are part of the normal pytest suite and are marked `live_source`. - Default local test runs skip them automatically. - Enable them by running `FINANCE_ENUMS_RUN_LIVE_TESTS=1 /opt/homebrew/bin/python -m pytest -q finance_enums/tests`. ## Enum Reference **118 families, 1088 variants**
Show all 118 enum families | Family | Count | Variants | | ------------------------------- | ----: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `AgricultureType` | 11 | `Corn`, `Wheat`, `Oats`, `Soybean`, `Cocoa`, `Coffee`, `Sugar`, `Cotton`, `OrangeJuice`, `Cattle`, `Hogs` | | `BondType` | 3 | `Corporate`, `Government`, `Municipal` | | `CommodityType` | 8 | `Energy`, `Metals`, `Agriculture`, `Livestock`, `Softs`, `Lumber`, `Freight`, `Carbon` | | `LivestockType` | 3 | `Cattle`, `Feeder`, `Hogs` | | `EnergyType` | 8 | `Crude`, `NaturalGas`, `HeatingOil`, `Gasoline`, `Electricity`, `LiquefiedNaturalGas`, `Propane`, `Uranium` | | `EquityType` | 8 | `Shares`, `PreferredShares`, `ConvertibleShares`, `PreferredConvertibleShares`, `DepositoryReceipt`, `Warrant`, `Right`, `Unit` | | `FundSubType` | 4 | `Index`, `Sector`, `Active`, `Passive` | | `FundType` | 3 | `ExchangeTradedFund`, `MutualFund`, `RealEstateInvestmentTrust` | | `VenueType` | 8 | `Exchange`, `AlternativeTradingSystem`, `MultilateralTradingFacility`, `OrganizedTradingFacility`, `DarkPool`, `ElectronicCommunicationNetwork`, `Dealer`, `RequestForQuote` | | `MarketType` | 10 | `Equities`, `FixedIncome`, `ForeignExchange`, `Commodities`, `Derivatives`, `Options`, `Futures`, `Funds`, `DigitalAssets`, `OverTheCounter` | | `TradingSession` | 8 | `PreOpen`, `OpeningAuction`, `Continuous`, `IntradayAuction`, `ClosingAuction`, `PostClose`, `AfterHours`, `Overnight` | | `MarketState` | 6 | `PreOpen`, `Open`, `Auction`, `Closed`, `Halted`, `Suspended` | | `AuctionType` | 6 | `Opening`, `Closing`, `Intraday`, `Volatility`, `Call`, `Indicative` | | `SegmentType` | 7 | `Primary`, `Secondary`, `Segment`, `Composite`, `Lit`, `Dark`, `Retail` | | `MarketStatusReason` | 8 | `ScheduledOpen`, `ScheduledClose`, `Halt`, `CircuitBreaker`, `Regulatory`, `Technical`, `Volatility`, `Holiday` | | `IdentifierType` | 10 | `Ticker`, `InternationalSecuritiesIdentificationNumber`, `CommitteeOnUniformSecuritiesIdentificationProcedures`, `StockExchangeDailyOfficialList`, `FinancialInstrumentGlobalIdentifier`, `LegalEntityIdentifier`, `ReutersInstrumentCode`, `Bloomberg`, `MarketIdentifierCode`, `Internal` | | `TickerNamespace` | 8 | `Exchange`, `Composite`, `Bloomberg`, `Reuters`, `Vendor`, `OverTheCounter`, `Internal`, `Synthetic` | | `PriceNotation` | 12 | `Decimal`, `PercentageOfPar`, `Yield`, `Spread`, `BasisPoints`, `Volatility`, `IndexPoints`, `Pips`, `PerUnit`, `Percentage`, `CleanPrice`, `DirtyPrice` | | `PriceKind` | 6 | `Bid`, `Ask`, `Mid`, `Last`, `Settlement`, `Vwap` | | `QuantityUnit` | 8 | `Shares`, `Contracts`, `Units`, `Lots`, `CurrencyAmount`, `NotionalAmount`, `FaceValue`, `Weight` | | `CurrencyRole` | 6 | `Base`, `Quote`, `Settlement`, `Margin`, `ProfitAndLoss`, `Reporting` | | `MICMarketCategory` | 14 | `NotSpecified`, `MultilateralTradingFacility`, `SystematicInternaliser`, `RegulatedMarket`, `AlternativeTradingSystem`, `OrganizedTradingFacility`, `Other`, `SwapExecutionFacility`, `RegulatedMarketOffBookSegment`, `ApprovedPublicationArrangement`, `CryptoAssetServiceProvider`, `DesignatedContractMarket`, `TradeReportingFacility`, `InterDealerQuotationSystem` | | `VenueRegulatoryFlag` | 12 | `Multilateral`, `OrganizedTrading`, `TradeReporting`, `SwapExecution`, `Publication`, `SystematicInternaliser`, `RegulatedMarket`, `AlternativeTradingSystem`, `OffBookSegment`, `CryptoAssetServiceProvider`, `DesignatedContractMarket`, `InterDealerQuotation` | | `ContractStyle` | 2 | `Standardized`, `NonStandardized` | | `ContractUnit` | 6 | `Share`, `Unit`, `Contract`, `CurrencyAmount`, `NotionalAmount`, `IndexPoint` | | `DeliveryType` | 8 | `Physical`, `Cash`, `NonDeliverable`, `ElectAtExercise`, `DeliveryVersusPayment`, `FreeOfPayment`, `HoldInCustody`, `TriParty` | | `CouponType` | 6 | `Fixed`, `Floating`, `Zero`, `StepUp`, `InflationLinked`, `PaymentInKind` | | `CouponFrequency` | 6 | `Monthly`, `Quarterly`, `SemiAnnual`, `Annual`, `ZeroCoupon`, `AtMaturity` | | `DayCountConvention` | 6 | `Actual360`, `Actual365Fixed`, `ActualActual`, `Thirty360`, `ThirtyE360`, `Business252` | | `AmortizationType` | 6 | `Bullet`, `Linear`, `MortgageStyle`, `NegativeAmortization`, `SinkingFund`, `Accrediting` | | `Seniority` | 6 | `SeniorSecured`, `SeniorUnsecured`, `SeniorSubordinated`, `Subordinated`, `JuniorSubordinated`, `Preferred` | | `CollateralType` | 6 | `GeneralCollateral`, `SpecificCollateral`, `CashCollateral`, `GovernmentBonds`, `CorporateBonds`, `Equities` | | `MarginType` | 6 | `Initial`, `Variation`, `IndependentAmount`, `Maintenance`, `CrossMargin`, `PortfolioMargin` | | `BorrowType` | 5 | `StockLoan`, `SecuritiesLending`, `MarginLoan`, `RepoBorrow`, `UnsecuredBorrow` | | `RepoType` | 6 | `Bilateral`, `TriParty`, `HoldInCustody`, `Open`, `Term`, `Evergreen` | | `AccountType` | 6 | `Cash`, `Margin`, `PrimeBrokerage`, `Custody`, `Settlement`, `Omnibus` | | `BookType` | 6 | `Trading`, `Hedging`, `Treasury`, `Financing`, `Inventory`, `Custody` | | `PositionType` | 5 | `Long`, `Short`, `Flat`, `Net`, `Gross` | | `InventoryType` | 6 | `Available`, `Reserved`, `Borrowed`, `Lent`, `Encumbered`, `PendingSettlement` | | `StrategyType` | 6 | `MarketMaking`, `Arbitrage`, `Hedging`, `Directional`, `Execution`, `RelativeValue` | | `NettingType` | 5 | `None`, `Bilateral`, `Multilateral`, `Portfolio`, `CrossProduct` | | `VehicleWrapper` | 6 | `ExchangeTradedFund`, `MutualFund`, `UnitTrust`, `SocieteInvestissementCapitalVariable`, `OpenEndedInvestmentCompany`, `LimitedPartnership` | | `DistributionPolicy` | 5 | `Accumulating`, `Distributing`, `Income`, `Growth`, `Mixed` | | `ShareClassHedging` | 5 | `Unhedged`, `CurrencyHedged`, `DurationHedged`, `CommodityHedged`, `PartialHedged` | | `LiquidityTerm` | 6 | `Daily`, `Weekly`, `Monthly`, `Quarterly`, `SemiAnnual`, `Annual` | | `RedemptionFrequency` | 6 | `Daily`, `Weekly`, `Monthly`, `Quarterly`, `Annual`, `AtMaturity` | | `FinancingType` | 3 | `LoanLease`, `RepurchaseAgreement`, `SecuritiesLending` | | `FutureAssetClass` | 2 | `Financial`, `Commodity` | | `SwapLegType` | 8 | `Fixed`, `Floating`, `Inflation`, `Credit`, `Equity`, `Commodity`, `ForeignExchange`, `Basis` | | `RateIndex` | 8 | `SecuredOvernightFinancingRate`, `FedFunds`, `EuroShortTermRate`, `SterlingOvernightIndexAverage`, `EuroInterbankOfferedRate`, `TokyoOvernightAverageRate`, `SwissAverageRateOvernight`, `ConsumerPriceIndex` | | `ResetFrequency` | 6 | `Daily`, `Weekly`, `Monthly`, `Quarterly`, `SemiAnnual`, `Annual` | | `CompoundingMethod` | 5 | `Simple`, `Compounded`, `Averaged`, `Flat`, `Straight` | | `StubType` | 5 | `None`, `ShortFront`, `ShortBack`, `LongFront`, `LongBack` | | `BarrierType` | 6 | `UpAndIn`, `UpAndOut`, `DownAndIn`, `DownAndOut`, `DoubleKnockIn`, `DoubleKnockOut` | | `AveragingMethod` | 5 | `Arithmetic`, `Geometric`, `Weighted`, `VolumeWeighted`, `SpotAverage` | | `ExoticOptionFeature` | 8 | `Barrier`, `Digital`, `Asian`, `Lookback`, `Cliquet`, `Chooser`, `Compound`, `Quanto` | | `CorporateActionType` | 9 | `CashDividend`, `StockDividend`, `StockSplit`, `ReverseSplit`, `RightsIssue`, `SpinOff`, `Merger`, `TenderOffer`, `Delisting` | | `ListingStatus` | 6 | `Listed`, `Suspended`, `Delisted`, `PendingListing`, `PendingDelisting`, `Unlisted` | | `SecurityStatus` | 7 | `Active`, `Inactive`, `Matured`, `Defaulted`, `Called`, `Converted`, `Expired` | | `ExerciseEventType` | 5 | `Automatic`, `Voluntary`, `Assignment`, `Expiration`, `EarlyExercise` | | `TenderOfferType` | 5 | `Cash`, `Stock`, `Mixed`, `DutchAuction`, `ExchangeOffer` | | `DelistingReason` | 6 | `Merger`, `Acquisition`, `Bankruptcy`, `Regulatory`, `Voluntary`, `FailureToMeetRequirements` | | `LegRole` | 4 | `Payer`, `Receiver`, `Buyer`, `Seller` | | `PayoffStyle` | 3 | `Linear`, `Optional`, `Binary` | | `SettlementType` | 7 | `Physical`, `Cash`, `NonDeliverable`, `ElectAtExercise`, `DeliveryVersusPayment`, `PaymentVersusPayment`, `FreeOfPayment` | | `SettlementStatus` | 8 | `Pending`, `Instructed`, `Matched`, `Unmatched`, `Settled`, `PartiallySettled`, `Failed`, `Canceled` | | `ClearingModel` | 5 | `Bilateral`, `CentralCounterparty`, `PrimeBroker`, `SponsoredAccess`, `AgentCleared` | | `ClearingHouse` | 11 | `NationalSecuritiesClearingCorporation`, `FixedIncomeClearingCorporation`, `OptionsClearingCorporation`, `ChicagoMercantileExchange`, `IntercontinentalExchangeClear`, `LondonClearingHouse`, `EurexClearing`, `DepositoryTrustClearingCorporation`, `Euroclear`, `Clearstream`, `Other` | | `FailsReason` | 9 | `InsufficientSecurities`, `InsufficientCash`, `CounterpartyMismatch`, `InstructionMismatch`, `RegulatoryHold`, `MarketDeadlineMissed`, `CorporateAction`, `SystemIssue`, `Other` | | `AllocationMethod` | 8 | `AveragePrice`, `SpecificLot`, `ProRata`, `FirstInFirstOut`, `LastInFirstOut`, `Manual`, `Automated`, `StepOut` | | `GiveUpType` | 5 | `None`, `GiveUp`, `GiveIn`, `AveragePriceGiveUp`, `ClearingGiveUp` | | `BenchmarkType` | 8 | `InterestRate`, `EquityIndex`, `FixedIncomeIndex`, `CommodityIndex`, `ForeignExchangeFixing`, `InflationIndex`, `CreditIndex`, `Custom` | | `IndexWeightingMethod` | 8 | `MarketCap`, `FloatAdjustedMarketCap`, `PriceWeighted`, `EqualWeighted`, `Fundamental`, `VolatilityWeighted`, `RiskParity`, `ModifiedMarketCap` | | `RebalanceFrequency` | 7 | `Daily`, `Weekly`, `Monthly`, `Quarterly`, `SemiAnnual`, `Annual`, `AdHoc` | | `CorporateActionAdjustmentType` | 7 | `None`, `PriceReturn`, `TotalReturn`, `NetTotalReturn`, `GrossTotalReturn`, `CapitalOnly`, `DivisorAdjustment` | | `CalculationAgentType` | 7 | `Exchange`, `BenchmarkAdministrator`, `IndexProvider`, `CalculationAgent`, `Dealer`, `IndependentAgent`, `Internal` | | `UnderlyingAssetClass` | 24 | `Agriculture`, `Basket`, `Commodity`, `Credit`, `Currency`, `Debt`, `Energy`, `Environmental`, `Equity`, `ExtractionResources`, `Future`, `GeneratedResources`, `Index`, `IndustrialProducts`, `InterestRate`, `Metals`, `MixedAssets`, `Option`, `Other`, `Paper`, `PolypropyleneProducts`, `Services`, `StockDividend`, `Swap` | | `Industry` | 74 | `EnergyEquipmentAndServices`, `OilGasAndConsumableFuels`, `Chemicals`, `ConstructionMaterials`, `ContainersAndPackaging`, `MetalsAndMining`, `PaperAndForestProducts`, `AerospaceAndDefense`, `BuildingProducts`, `ConstructionAndEngineering`, `ElectricalEquipment`, `IndustrialConglomerates`, `Machinery`, `TradingCompaniesAndDistributors`, `CommercialServicesAndSupplies`, `ProfessionalServices`, `AirFreightAndLogistics`, `PassengerAirlines`, `MarineTransportation`, `GroundTransportation`, `TransportationInfrastructure`, `AutomobileComponents`, `Automobiles`, `HouseholdDurables`, `LeisureProducts`, `TextilesApparelAndLuxuryGoods`, `HotelsRestaurantsAndLeisure`, `DiversifiedConsumerServices`, `Distributors`, `BroadlineRetail`, `SpecialtyRetail`, `ConsumerStaplesDistributionAndRetail`, `Beverages`, `FoodProducts`, `Tobacco`, `HouseholdProducts`, `PersonalCareProducts`, `HealthCareEquipmentAndSupplies`, `HealthCareProvidersAndServices`, `HealthCareTechnology`, `Biotechnology`, `Pharmaceuticals`, `LifeSciencesToolsAndServices`, `Banks`, `FinancialServices`, `ConsumerFinance`, `CapitalMarkets`, `MortgageRealEstateInvestmentTrusts`, `Insurance`, `InformationTechnologyServices`, `Software`, `CommunicationsEquipment`, `TechnologyHardwareStorageAndPeripherals`, `ElectronicEquipmentInstrumentsAndComponents`, `SemiconductorsAndSemiconductorEquipment`, `DiversifiedTelecommunicationServices`, `WirelessTelecommunicationServices`, `Media`, `Entertainment`, `InteractiveMediaAndServices`, `ElectricUtilities`, `GasUtilities`, `MultiUtilities`, `WaterUtilities`, `IndependentPowerAndRenewableElectricityProducers`, `DiversifiedRealEstateInvestmentTrusts`, `IndustrialRealEstateInvestmentTrusts`, `HotelAndResortRealEstateInvestmentTrusts`, `OfficeRealEstateInvestmentTrusts`, `HealthCareRealEstateInvestmentTrusts`, `ResidentialRealEstateInvestmentTrusts`, `RetailRealEstateInvestmentTrusts`, `SpecializedRealEstateInvestmentTrusts`, `RealEstateManagementAndDevelopment` | | `IndustryGroup` | 25 | `Energy`, `Materials`, `CapitalGoods`, `CommercialAndProfessionalServices`, `Transportation`, `AutomobilesAndComponents`, `ConsumerDurablesAndApparel`, `ConsumerServices`, `ConsumerDiscretionaryDistributionAndRetail`, `ConsumerStaplesDistributionAndRetail`, `FoodBeverageAndTobacco`, `HouseholdAndPersonalProducts`, `HealthCareEquipmentAndServices`, `PharmaceuticalsBiotechnologyAndLifeSciences`, `Banks`, `FinancialServices`, `Insurance`, `SoftwareAndServices`, `TechnologyHardwareAndEquipment`, `SemiconductorsAndSemiconductorEquipment`, `TelecommunicationServices`, `MediaAndEntertainment`, `Utilities`, `EquityRealEstateInvestmentTrusts`, `RealEstateManagementAndDevelopment` | | `InstrumentType` | 11 | `Spot`, `Option`, `Forward`, `Future`, `Swap`, `Financing`, `Right`, `Warrant`, `Spread`, `Pair`, `Basket` | | `MetalsType` | 13 | `Gold`, `Silver`, `Copper`, `Platinum`, `Palladium`, `Aluminum`, `Zinc`, `Nickel`, `Lead`, `Tin`, `Steel`, `Cobalt`, `Iron` | | `MutualFundEndedness` | 2 | `OpenEnded`, `ClosedEnded` | | `OptionExerciseType` | 3 | `American`, `European`, `Bermudan` | | `OptionType` | 2 | `Call`, `Put` | | `OrderStatus` | 9 | `New`, `PendingNew`, `PartiallyFilled`, `Filled`, `Canceled`, `Rejected`, `Expired`, `Suspended`, `PendingCancel` | | `ExecutionType` | 8 | `New`, `Trade`, `Canceled`, `Replaced`, `Rejected`, `Expired`, `TradeCorrect`, `TradeCancel` | | `ExecutionInstruction` | 8 | `AllOrNone`, `DoNotIncrease`, `DoNotReduce`, `ParticipateDoNotInitiate`, `StayOnOfferSide`, `StayOnBidSide`, `LastPeg`, `MidPricePeg` | | `LiquidityFlag` | 6 | `Added`, `Removed`, `RoutedOut`, `Auction`, `None`, `Neutral` | | `PositionEffect` | 5 | `Open`, `Close`, `CloseToday`, `CloseYesterday`, `Rolled` | | `OrderCapacity` | 5 | `Agency`, `Principal`, `RisklessPrincipal`, `Proprietary`, `MarketMaker` | | `ShortSaleRestriction` | 5 | `None`, `RegulationShoPriceTest`, `UptickRule`, `LocateRequired`, `BorrowRequired` | | `OrderFlag` | 4 | `None`, `FillOrKill`, `AllOrNone`, `ImmediateOrCancel` | | `OrderType` | 7 | `Limit`, `Market`, `Stop`, `StopLimit`, `MarketOnClose`, `LimitOnClose`, `Pegged` | | `QuoteCondition` | 6 | `Regular`, `Indicative`, `Manual`, `FastTrading`, `SlowTrading`, `Closed` | | `TradeCondition` | 8 | `Regular`, `Auction`, `AveragePrice`, `Block`, `DerivativelyPriced`, `PriorReferencePrice`, `OutOfSequence`, `Canceled` | | `AggressorSide` | 3 | `Buy`, `Sell`, `Unknown` | | `CrossType` | 5 | `Internal`, `Exchange`, `Broker`, `OpeningAuction`, `ClosingAuction` | | `Sector` | 11 | `Energy`, `Materials`, `Industrials`, `ConsumerDiscretionary`, `ConsumerStaples`, `HealthCare`, `Financials`, `InformationTechnology`, `CommunicationServices`, `Utilities`, `RealEstate` | | `SecurityType` | 16 | `Equity`, `Option`, `Bond`, `Forward`, `Future`, `PerpetualFuture`, `Swap`, `Financing`, `Spread`, `Fund`, `Commodity`, `Currency`, `Pair`, `Index`, `Warrant`, `Right` | | `Side` | 3 | `None`, `Buy`, `Sell` | | `SwapType` | 6 | `Rates`, `Commodities`, `Equity`, `Credit`, `ForeignExchange`, `Other` | | `SubIndustry` | 163 | `OilAndGasDrilling`, `OilAndGasEquipmentAndServices`, `IntegratedOilAndGas`, `OilAndGasExplorationAndProduction`, `OilAndGasRefiningAndMarketing`, `OilAndGasStorageAndTransportation`, `CoalAndConsumableFuels`, `CommodityChemicals`, `DiversifiedChemicals`, `FertilizersAndAgriculturalChemicals`, `IndustrialGases`, `SpecialtyChemicals`, `ConstructionMaterials`, `MetalGlassAndPlasticContainers`, `PaperAndPlasticPackagingProductsAndMaterials`, `Aluminum`, `DiversifiedMetalsAndMining`, `Copper`, `Gold`, `PreciousMetalsAndMinerals`, `Silver`, `Steel`, `ForestProducts`, `PaperProducts`, `AerospaceAndDefense`, `BuildingProducts`, `ConstructionAndEngineering`, `ElectricalComponentsAndEquipment`, `HeavyElectricalEquipment`, `IndustrialConglomerates`, `ConstructionMachineryAndHeavyTransportationEquipment`, `AgriculturalAndFarmMachinery`, `IndustrialMachinerySuppliesAndComponents`, `TradingCompaniesAndDistributors`, `CommercialPrinting`, `EnvironmentalAndFacilitiesServices`, `OfficeServicesAndSupplies`, `DiversifiedSupportServices`, `SecurityAndAlarmServices`, `HumanResourcesAndEmploymentServices`, `ResearchAndConsultingServices`, `DataProcessingAndOutsourcedServices`, `AirFreightAndLogistics`, `PassengerAirlines`, `MarineTransportation`, `RailTransportation`, `CargoGroundTransportation`, `PassengerGroundTransportation`, `AirportServices`, `HighwaysAndRailtracks`, `MarinePortsAndServices`, `AutomotivePartsAndEquipment`, `TiresAndRubber`, `AutomobileManufacturers`, `MotorcycleManufacturers`, `ConsumerElectronics`, `HomeFurnishings`, `Homebuilding`, `HouseholdAppliances`, `HousewaresAndSpecialties`, `LeisureProducts`, `ApparelAccessoriesAndLuxuryGoods`, `Footwear`, `Textiles`, `CasinosAndGaming`, `HotelsResortsAndCruiseLines`, `LeisureFacilities`, `Restaurants`, `EducationServices`, `SpecializedConsumerServices`, `Distributors`, `BroadlineRetail`, `ApparelRetail`, `ComputerAndElectronicsretail`, `HomeImprovementRetail`, `OtherSpecialtyRetail`, `AutomotiveRetail`, `HomefurnishingRetail`, `DrugRetail`, `FoodDistributors`, `FoodRetail`, `ConsumerStaplesMerchandiseRetail`, `Brewers`, `DistillersAndVintners`, `SoftDrinksAndNonAlcoholicBeverages`, `AgriculturalProductsAndServices`, `PackagedFoodsAndMeats`, `Tobacco`, `HouseholdProducts`, `PersonalCareProducts`, `HealthCareEquipment`, `HealthCareSupplies`, `HealthCareDistributors`, `HealthCareServices`, `HealthCareFacilities`, `ManagedHealthCare`, `HealthCareTechnology`, `Biotechnology`, `Pharmaceuticals`, `LifeSciencesToolsAndServices`, `DiversifiedBanks`, `RegionalBanks`, `DiversifiedFinancialServices`, `MultiSectorHoldings`, `SpecializedFinance`, `CommercialAndResidentialMortgageFinance`, `TransactionAndPaymentProcessingServices`, `ConsumerFinance`, `AssetManagementAndCustodyBanks`, `InvestmentBankingAndBrokerage`, `DiversifiedCapitalMarkets`, `FinancialExchangesAndData`, `MortgageRealEstateInvestmentTrusts`, `InsuranceBrokers`, `LifeAndHealthInsurance`, `MultilineInsurance`, `PropertyAndCasualtyInsurance`, `Reinsurance`, `InformationTechnologyConsultingAndOtherServices`, `InternetServicesAndInfrastructure`, `ApplicationSoftware`, `SystemsSoftware`, `CommunicationsEquipment`, `TechnologyHardwareStorageAndPeripherals`, `ElectronicEquipmentAndInstruments`, `ElectronicComponents`, `ElectronicManufacturingServices`, `TechnologyDistributors`, `SemiconductorMaterialsAndEquipment`, `Semiconductors`, `AlternativeCarriers`, `IntegratedTelecommunicationServices`, `WirelessTelecommunicationServices`, `Advertising`, `Broadcasting`, `CableAndSatellite`, `Publishing`, `MoviesAndEntertainment`, `InteractiveHomeEntertainment`, `InteractiveMediaAndServices`, `ElectricUtilities`, `GasUtilities`, `MultiUtilities`, `WaterUtilities`, `IndependentPowerProducersAndEnergyTraders`, `RenewableElectricity`, `DiversifiedRealEstateInvestmentTrusts`, `IndustrialRealEstateInvestmentTrusts`, `HotelAndResortRealEstateInvestmentTrusts`, `OfficeRealEstateInvestmentTrusts`, `HealthCareRealEstateInvestmentTrusts`, `MultiFamilyResidentialRealEstateInvestmentTrusts`, `SingleFamilyResidentialRealEstateInvestmentTrusts`, `RetailRealEstateInvestmentTrusts`, `OtherSpecializedRealEstateInvestmentTrusts`, `SelfStorageRealEstateInvestmentTrusts`, `TelecomTowerRealEstateInvestmentTrusts`, `TimberRealEstateInvestmentTrusts`, `DataCenterRealEstateInvestmentTrusts`, `DiversifiedRealEstateActivities`, `RealEstateOperatingCompanies`, `RealEstateDevelopment`, `RealEstateServices` | | `TimeInForce` | 8 | `None`, `Day`, `GoodTillCanceled`, `ImmediateOrCancel`, `FillOrKill`, `GoodTillDate`, `AtOpen`, `AtClose` | | `ExecutionDisposition` | 3 | `Regular`, `Bust`, `Correct` | | `FXSubType` | 3 | `Spot`, `Forward`, `NonDeliverable` | | `FXTenor` | 52 | `TOD`, `TOM`, `SP`, `SNX`, `D2`, `D3`, `D4`, `W1`, `W2`, `W3`, `M1`, `M2`, `M3`, `M4`, `M5`, `M6`, `M7`, `M8`, `M9`, `M10`, `M11`, `M13`, `M14`, `M15`, `M16`, `M17`, `M18`, `M19`, `M20`, `M21`, `M22`, `M23`, `BMF1`, `BMF2`, `Y1`, `Y2`, `Y3`, `Y4`, `Y5`, `Y6`, `Y7`, `Y8`, `Y9`, `Y10`, `Y15`, `Y20`, `Y25`, `Y30`, `IM1`, `IM2`, `IM3`, `IM4` | | `FactorGroup` | 5 | `Style`, `Industry`, `Country`, `Currency`, `Market` | | `FamaFrench3Factor` | 3 | `Market`, `Size`, `Value` | | `FamaFrench5Factor` | 5 | `Market`, `Size`, `Value`, `Profitability`, `Investment` | | `FutureMonthCode` | 12 | `F`, `G`, `H`, `J`, `K`, `M`, `N`, `Q`, `U`, `V`, `X`, `Z` | | `FutureSpreadLegType` | 4 | `BuyLeg`, `SellLeg`, `NearLeg`, `FarLeg` | | `FutureSpreadSubType` | 2 | `Asset`, `Calendar` | | `FutureUnderlyingType` | 18 | `Baskets`, `Equities`, `Debt`, `Currency`, `Indices`, `Options`, `Futures`, `Swaps`, `InterestRates`, `StockDividend`, `Extraction`, `Agriculture`, `Industrial`, `Services`, `Environmental`, `Polypropylene`, `Generated`, `Others` | | `MsciFactorModel` | 6 | `Value`, `Momentum`, `Quality`, `Size`, `Volatility`, `Yield` | | `OrderSide` | 4 | `Buy`, `Sell`, `SellShort`, `BuyToCover` | | `Symbology` | 18 | `Ticker`, `RIC`, `PrimaryRIC`, `SecCode`, `MQAID`, `StableID`, `PointID`, `CUSIP`, `CUSIP9`, `SEDOL`, `SEDOL7`, `ISIN`, `PanoID`, `BloombergTicker`, `RollingFuture`, `BarraID`, `OSI`, `FIGI` | | `TickDirection` | 2 | `Up`, `Down` | | `TradingSessionStatus` | 12 | `NotOpen`, `PreOpen`, `Open`, `Closed`, `AfterHours`, `Halted`, `Suspended`, `OpeningAuction`, `IntradayAuction`, `ClosingAuction`, `CircuitBreakerAuction`, `QuotingOnly` |