# Generated by tools/build_contracts.py from tools/algoseek_catalog.py -- do not edit by hand.
# Open Data Contract Standard v3.2.0 (https://bitol-io.github.io/open-data-contract-standard/).
apiVersion: v3.2.0
kind: DataContract
id: urn:alphaswarm:datacontract:algoseek:us-equities-otc-market-compliance-data
name: AlgoSeek US Equities OTC Market Compliance Data
version: 0.1.0
status: draft
domain: market-data
tags:
- algoseek
- licensed-data
- equity
- reference
- us
description:
  purpose: 'Twice-daily snapshot, one row per OTC equity security (about 22,000), of OTC Markets Group
    compliance attributes: penny-stock and OTC Recommendation Rule exemption inputs, tier, Caveat Emptor,
    reporting standard, shell status, shares outstanding, quote eligibility under Rule 15c2-11, plus FIGI.
    Used for regulatory monitoring and risk controls.'
  usage: Point-in-time security identity, corporate-action adjustment, and universe construction for US
    equities.
  limitations: 'Vendor-curated reference data: rows can be restated when AlgoSeek learns of a late or
    corrected event, so land each delivery as a snapshot rather than overwriting history. Identity: SecId
    and CompId are OTC Markets Group identifiers, NOT algoseek''s ASID/SecId. The OTC Security Master
    carries these as OTCSecId/OTCCompId lists per ASID; join compliance rows to it by matching SecId to
    an OTCSecId element whose date range contains TradeDate. FIGI is the composite (country-level) FIGI;
    ShareClassFIGI (global) is documented but not in the sample. Snapshot semantics: every row is the
    state of the security as of the file, not an event; the AM and PM files for one TradeDate hold the
    same date value and only the file name tells them apart, so a contract key must include the file period
    (TradeDate, AM/PM, SecId). Quote-eligibility and disclosure fields (ProprietaryQuoteEligible, DisclosureStatus,
    OTCLinkECNEligibleFlag, GracePeriod, 211ShellFlag) are blank in the 6 sample rows whose SecurityStatus
    is R (SEC revocation) and the reason-code fields are blank in 7 rows, so blank there means not applicable/not
    assessed rather than N. Sparse by design: financial exemption inputs (NetTangibleAssets, TotalAssets,
    ShareholderEquity, revenue and the PED dates) are blank when OTC Markets has no qualified financials
    (12 of 19 sample rows), and can be very stale (period-end dates as old as 2005 and last-report dates
    as old as 2006-2007 in the sample). Exemption flags then default to N.'
  authoritativeDefinitions:
  - type: businessDefinition
    url: https://algoseek.com/dataset/us-equities-otc-market-compliance-data/
  - type: implementation
    url: https://algoseek.com/data-docs/equity-reference/US.Equity.OTC.Market.Compliance.Data.Guide.pdf
  - type: implementation
    url: https://algoseek.com/docs/rest-api/reference
context:
  instructions: Rows are effective-dated. Answer point-in-time questions with the row in force on the
    as-of date, never the latest row. SecId and ASID are both durable AlgoSeek security keys but different
    values (the ASID lookup links them); tickers are reused across companies, so resolve a ticker to a
    key with a trade date.
  constraints:
  - id: c1
    constraint: 'Licensed vendor data: never export raw rows to a tenant-local destination or include
      them verbatim in a public artifact; serve only through entitlement-checked platform reads.'
  - id: c3
    constraint: Do not treat the vendor's `Ticker` as a stable identity across time; join on an AlgoSeek
      security key (SecId or ASID, which are distinct) or the platform symbol mapping.
servers:
- server: algoseek-s3
  type: s3
  environment: vendor
  description: AlgoSeek flat-file delivery (the layout the schema below describes).
  location: s3://${ALGOSEEK_S3_BUCKET_EQ_OTC_MARKET_COMPLIANCE}/
  format: csv
  encoding: UTF-8
  customProperties:
  - property: layout
    value: gzip-compressed plain-text CSV, two files per trading day (before market open and after market
      close), named yyyymmdd_pp.csv.gz where pp = AM or PM; fixed header first; one row per security.
  - property: compression
    value: gzip
  - property: header
    value: true
  - property: entitlement
    value: Bucket access is granted per subscription; bucket names arrive with license provisioning.
- server: algoseek-rest-api
  type: api
  environment: vendor
  description: AlgoSeek Datasets REST API (X-API-KEY header; JSON, CSV or gzipped CSV). Returns AlgoSeek's
    normalized API layout, which differs from the flat-file columns in this contract's schema.
  location: https://api.algoseek.com/v1/data/us-equity-ref/otc-market-compliance/:identifier
  customProperties:
  - property: auth
    value: X-API-KEY header issued by AlgoSeek
  - property: columnsEndpoint
    value: https://api.algoseek.com/v1/meta/datasets/{dataset_id}/columns
  - property: statusEndpoint
    value: https://api.algoseek.com/v1/meta/datasets/{dataset_id}/status
  - property: responseFormats
    value:
    - json
    - csv
    - csv_gzip
  - property: pagination
    value: offset + limit; tick endpoints take trade_date and identifier (Ticker or ASID) in the path
schema:
- name: us_equities_otc_market_compliance_data
  physicalName: eq_otc_market_compliance
  physicalType: file
  logicalType: object
  businessName: US Equities OTC Market Compliance Data
  description: 'Twice-daily snapshot, one row per OTC equity security (about 22,000), of OTC Markets Group
    compliance attributes: penny-stock and OTC Recommendation Rule exemption inputs, tier, Caveat Emptor,
    reporting standard, shell status, shares outstanding, quote eligibility under Rule 15c2-11, plus FIGI.
    Used for regulatory monitoring and risk controls.'
  dataGranularityDescription: one OTC security (SecId) per snapshot file; two snapshots (AM, PM) per trading
    day
  properties:
  - name: TradeDate
    logicalType: date
    logicalTypeOptions:
      format: yyyymmdd
    physicalType: string (yyyymmdd) (csv text)
    description: File creation date. The AM and PM files of a day share this date; the period appears
      only in the file name.
    primaryKey: true
    primaryKeyPosition: 1
    required: true
    customProperties:
    - property: nullMeaning
      value: Never
    - property: evidence
      value: guide+sample
  - name: SecId
    logicalType: integer
    logicalTypeOptions:
      format: i64
    physicalType: integer (csv text)
    description: OTC Markets Group unique security identifier (not algoseek's SecId/ASID).
    primaryKey: true
    primaryKeyPosition: 2
    required: true
    customProperties:
    - property: nullMeaning
      value: Never
    - property: evidence
      value: guide+sample
  - name: CompId
    logicalType: integer
    logicalTypeOptions:
      format: i64
    physicalType: integer (csv text)
    description: OTC Markets Group unique company identifier for the security.
    required: true
    customProperties:
    - property: nullMeaning
      value: Never
    - property: evidence
      value: guide+sample
  - name: Ticker
    logicalType: string
    physicalType: string (csv text)
    description: US markets symbol.
    customProperties:
    - property: nullMeaning
      value: Blank
    - property: evidence
      value: guide+sample
  - name: FIGI
    logicalType: string
    logicalTypeOptions:
      format: 12-character FIGI
    physicalType: string (csv text)
    description: Current composite (country-level) FIGI of the security, from OpenFIGI.
    customProperties:
    - property: nullMeaning
      value: Blank
    - property: evidence
      value: guide+sample
  - name: CompanyName
    logicalType: string
    physicalType: string (csv text)
    description: Company name.
    required: true
    customProperties:
    - property: nullMeaning
      value: Never
    - property: evidence
      value: guide+sample
  - name: SecurityName
    logicalType: string
    physicalType: string (csv text)
    description: Security name (OTC Markets short-form name in sample).
    required: true
    customProperties:
    - property: nullMeaning
      value: Never
    - property: evidence
      value: guide+sample
  - name: Venue
    logicalType: string
    physicalType: string (csv text)
    description: US trading venue; OTC Link and Grey Market in sample.
    customProperties:
    - property: nullMeaning
      value: Never
    - property: evidence
      value: guide+sample
  - name: SecurityType
    logicalType: string
    physicalType: string (csv text)
    description: Security type (e.g. common, unit, warrant); Common Stock, Ordinary Shares, ADR strings
      in sample.
    customProperties:
    - property: nullMeaning
      value: Blank
    - property: evidence
      value: guide+sample
  - name: SecurityClass
    logicalType: string
    physicalType: string (csv text)
    description: Security class; blank in all 19 sample rows.
    customProperties:
    - property: nullMeaning
      value: Blank
    - property: evidence
      value: guide+sample
  - name: CaveatEmptor
    logicalType: string
    logicalTypeOptions:
      format: Y/N
    physicalType: string (csv text)
    description: Caveat Emptor (Buyer Beware) flag.
    required: true
    enum:
    - value: Y
      label: Caveat Emptor (buyer beware) designation applies
    - value: N
      label: not designated
    customProperties:
    - property: nullMeaning
      value: Never
    - property: evidence
      value: guide+sample
  - name: OTCTier
    logicalType: string
    physicalType: string (csv text)
    description: OTC Markets tier name (Grey Market, Pink Current, Pink Limited, Pink No Information in
      sample); tier details not in the guide appendix.
    customProperties:
    - property: nullMeaning
      value: Never
    - property: evidence
      value: guide+sample
  - name: OTCTierId
    logicalType: integer
    logicalTypeOptions:
      format: i64
    physicalType: integer (csv text)
    description: OTC tier identifier (30 Grey Market, 20 Pink Current, 21 Pink Limited, 22 Pink No Information
      in sample).
    required: true
    customProperties:
    - property: nullMeaning
      value: Never
    - property: evidence
      value: guide+sample
  - name: ReportingStandard
    logicalType: string
    physicalType: string (csv text)
    description: Company reporting standard (SEC Reporting, International Reporting in sample).
    customProperties:
    - property: nullMeaning
      value: Never
    - property: evidence
      value: guide+sample
  - name: SecurityStatus
    logicalType: string
    physicalType: string (csv text)
    description: Security status code; guide gives no code list (A and R in sample; see OTC Security Master
      for A/S/H/I/R/D).
    customProperties:
    - property: nullMeaning
      value: Never
    - property: evidence
      value: guide+sample
  - name: ProprietaryQuoteEligible
    logicalType: string
    logicalTypeOptions:
      format: Y/N
    physicalType: string (csv text)
    description: Whether the security is eligible for proprietary quoting under SEC Rule 15c2-11.
    customProperties:
    - property: nullMeaning
      value: Blank
    - property: evidence
      value: guide+sample
  - name: PennyStockExempt
    logicalType: string
    logicalTypeOptions:
      format: Y/N
    physicalType: string (csv text)
    description: Y if exempt from penny-stock classification under Rule 3a51-1; N if no exemption applies.
    required: true
    customProperties:
    - property: nullMeaning
      value: Never
    - property: evidence
      value: guide+sample
  - name: PSPriceExemption
    logicalType: string
    logicalTypeOptions:
      format: Y/N
    physicalType: string (csv text)
    description: Y if previous closing inside bid (2 priced quotes) is at least $5, with unit/ADR adjustments,
      so the security is price-exempt.
    required: true
    customProperties:
    - property: nullMeaning
      value: Never
    - property: evidence
      value: guide+sample
  - name: PreviousClosingInsideBid
    logicalType: number
    physicalType: decimal (csv text)
    description: Closing inside bid on the previous trading day; needs 2 priced quotes.
    customProperties:
    - property: unit
      value: USD
    - property: nullMeaning
      value: Blank
    - property: evidence
      value: guide+sample
  - name: PreviousLastTrade
    logicalType: number
    physicalType: decimal (csv text)
    description: Previous last sale price of the security.
    customProperties:
    - property: unit
      value: USD
    - property: nullMeaning
      value: Blank
    - property: evidence
      value: guide+sample
  - name: InvestmentCompanyExemption
    logicalType: string
    logicalTypeOptions:
      format: Y/N
    physicalType: string (csv text)
    description: Y if the issuer is a registered investment company (1940 Act), making the security exempt
      from penny-stock status.
    customProperties:
    - property: nullMeaning
      value: Blank
    - property: evidence
      value: guide+sample
  - name: PSQualifiedFinancials
    logicalType: string
    logicalTypeOptions:
      format: Y/N
    physicalType: string (csv text)
    description: Y if the financial data needed for the Net Tangible Asset / Average Revenue exemptions
      is available; N otherwise.
    customProperties:
    - property: nullMeaning
      value: Blank
    - property: evidence
      value: guide+sample
  - name: NetTangibleAssetsExemption
    logicalType: string
    logicalTypeOptions:
      format: Y/N
    physicalType: string (csv text)
    description: Y if net tangible assets exceed $2M (3+ years operating) or $5M (under 3 years), exempting
      the penny-stock label; needs qualified financials.
    customProperties:
    - property: nullMeaning
      value: Blank
    - property: evidence
      value: guide+sample
  - name: NetTangibleAssets
    logicalType: integer
    logicalTypeOptions:
      format: i64
    physicalType: integer (csv text)
    description: Dollar value of the most recent annual net tangible assets; can be negative.
    customProperties:
    - property: unit
      value: USD
    - property: nullMeaning
      value: Blank
    - property: evidence
      value: guide+sample
  - name: NetTangibleAssetsPED
    logicalType: date
    logicalTypeOptions:
      format: yyyymmdd
    physicalType: string (yyyymmdd) (csv text)
    description: Period end date of the net tangible assets value.
    customProperties:
    - property: nullMeaning
      value: Blank
    - property: evidence
      value: guide+sample
  - name: AverageRevenueExemption
    logicalType: string
    logicalTypeOptions:
      format: Y/N
    physicalType: string (csv text)
    description: Y if mean revenue over the trailing 3 years is at least $6M, exempting the penny-stock
      label; needs qualified financials.
    required: true
    customProperties:
    - property: nullMeaning
      value: Never
    - property: evidence
      value: guide+sample
  - name: AverageRevenue
    logicalType: integer
    logicalTypeOptions:
      format: i64
    physicalType: integer (csv text)
    description: Dollar value of average revenue over the past 3 years.
    customProperties:
    - property: unit
      value: USD
    - property: nullMeaning
      value: Blank
    - property: evidence
      value: guide+sample
  - name: OTCRecRuleExempt
    logicalType: string
    logicalTypeOptions:
      format: Y/N
    physicalType: string (csv text)
    description: Y if any OTC Recommendation Rule exemption flag below is Y; other FINRA Rule 2114 exemptions
      may still apply.
    required: true
    customProperties:
    - property: nullMeaning
      value: Never
    - property: evidence
      value: guide+sample
  - name: OTCRecRulePriceExemption
    logicalType: string
    logicalTypeOptions:
      format: Y/N
    physicalType: string (csv text)
    description: Y if previous closing inside bid (2 priced quotes) is at least $50, with unit/ADR adjustments.
    required: true
    customProperties:
    - property: nullMeaning
      value: Never
    - property: evidence
      value: guide+sample
  - name: OTCRecRuleQualifiedFinancials
    logicalType: string
    logicalTypeOptions:
      format: Y/N
    physicalType: string (csv text)
    description: Y if the financial data needed for the asset/shareholder-equity exemption is available;
      N otherwise.
    customProperties:
    - property: nullMeaning
      value: Never
    - property: evidence
      value: guide+sample
  - name: OTCRecRuleAssetExemption
    logicalType: string
    logicalTypeOptions:
      format: Y/N
    physicalType: string (csv text)
    description: Y if total assets are at least $50M and shareholder equity at least $10M in the latest
      statements.
    required: true
    customProperties:
    - property: nullMeaning
      value: Never
    - property: evidence
      value: guide+sample
  - name: TotalAssets
    logicalType: integer
    logicalTypeOptions:
      format: i64
    physicalType: integer (csv text)
    description: Dollar value of total assets in the most recent annual financial statement.
    customProperties:
    - property: unit
      value: USD
    - property: nullMeaning
      value: Blank
    - property: evidence
      value: guide+sample
  - name: ShareholderEquity
    logicalType: integer
    logicalTypeOptions:
      format: i64
    physicalType: integer (csv text)
    description: Dollar value of shareholder equity in the most recent annual financial statement; can
      be negative.
    customProperties:
    - property: unit
      value: USD
    - property: nullMeaning
      value: Blank
    - property: evidence
      value: guide+sample
  - name: LastBalanceSheetPED
    logicalType: date
    logicalTypeOptions:
      format: yyyymmdd
    physicalType: string (yyyymmdd) (csv text)
    description: Date of the most recent annual balance sheet.
    customProperties:
    - property: nullMeaning
      value: Blank
    - property: evidence
      value: guide+sample
  - name: LastIncomeStatementPED
    logicalType: date
    logicalTypeOptions:
      format: yyyymmdd
    physicalType: string (yyyymmdd) (csv text)
    description: Date of the most recent annual income statement.
    customProperties:
    - property: nullMeaning
      value: Blank
    - property: evidence
      value: guide+sample
  - name: OTCRecRuleBankExemption
    logicalType: string
    logicalTypeOptions:
      format: Y/N
    physicalType: string (csv text)
    description: Y if the issuer is a bank or insurance company, exempting the security from the OTC Recommendation
      Rule.
    required: true
    customProperties:
    - property: nullMeaning
      value: Never
    - property: evidence
      value: guide+sample
  - name: 144AInformationAvailable
    logicalType: string
    logicalTypeOptions:
      format: Y/N
    physicalType: string (csv text)
    description: Y if the issuer is exempt under Rule 12g3-2(b) or current financial information is available.
    required: true
    customProperties:
    - property: nullMeaning
      value: Never
    - property: evidence
      value: guide+sample
  - name: 144A12g32bExemption
    logicalType: string
    logicalTypeOptions:
      format: Y/N
    physicalType: string (csv text)
    description: Y if the issuer is exempt from reporting under Rule 12g3-2(b).
    required: true
    customProperties:
    - property: nullMeaning
      value: Never
    - property: evidence
      value: guide+sample
  - name: 144AFinancialDataExemption
    logicalType: string
    logicalTypeOptions:
      format: Y/N
    physicalType: string (csv text)
    description: Y if current financial information is available for the issuer.
    required: true
    customProperties:
    - property: nullMeaning
      value: Never
    - property: evidence
      value: guide+sample
  - name: LastAnnualBalanceSheetPED
    logicalType: date
    logicalTypeOptions:
      format: yyyymmdd
    physicalType: string (yyyymmdd) (csv text)
    description: Date of the most recent annual balance sheet (same wording as LastBalanceSheetPED).
    customProperties:
    - property: nullMeaning
      value: Blank
    - property: evidence
      value: guide+sample
  - name: FiscalYearEnd
    logicalType: string
    logicalTypeOptions:
      format: ddmm
    physicalType: string (ddmm) (csv text)
    description: Fiscal year end in ddmm format (3112 = 31 December).
    customProperties:
    - property: nullMeaning
      value: Blank
    - property: evidence
      value: guide+sample
  - name: FilingCycle
    logicalType: string
    physicalType: string (csv text)
    description: Filing cycle of the company; Q and A occur in sample, values undocumented.
    customProperties:
    - property: nullMeaning
      value: Blank
    - property: evidence
      value: guide+sample
  - name: LastReportDate
    logicalType: date
    logicalTypeOptions:
      format: yyyymmdd
    physicalType: string (yyyymmdd) (csv text)
    description: Date of the last 10-K, 10-Q, 8-K or alternative report.
    customProperties:
    - property: nullMeaning
      value: Blank
    - property: evidence
      value: guide+sample
  - name: LastReportType
    logicalType: string
    physicalType: string (csv text)
    description: Type of the last report (10QSB, 10-Q, 8-K in sample).
    customProperties:
    - property: nullMeaning
      value: Blank
    - property: evidence
      value: guide+sample
  - name: 12g32bExemptStatus
    logicalType: string
    logicalTypeOptions:
      format: Y/N
    physicalType: string (csv text)
    description: Whether the company is exempt from SEC reporting under Rule 12g3-2(b).
    required: true
    customProperties:
    - property: nullMeaning
      value: Never
    - property: evidence
      value: guide+sample
  - name: Bankruptcy
    logicalType: string
    logicalTypeOptions:
      format: Y/N
    physicalType: string (csv text)
    description: Whether the company is in bankruptcy.
    required: true
    customProperties:
    - property: nullMeaning
      value: Never
    - property: evidence
      value: guide+sample
  - name: Shell
    logicalType: string
    logicalTypeOptions:
      format: Y/N
    physicalType: string (csv text)
    description: Whether the company is a shell company.
    required: true
    customProperties:
    - property: nullMeaning
      value: Never
    - property: evidence
      value: guide+sample
  - name: BankThrift
    logicalType: string
    logicalTypeOptions:
      format: Y/N
    physicalType: string (csv text)
    description: Whether the company is a bank/thrift or other non-bank regulated company such as an insurer.
    required: true
    customProperties:
    - property: nullMeaning
      value: Never
    - property: evidence
      value: guide+sample
  - name: AuditedFinancials
    logicalType: string
    logicalTypeOptions:
      format: Y/N
    physicalType: string (csv text)
    description: Whether the company's financials are audited.
    required: true
    customProperties:
    - property: nullMeaning
      value: Never
    - property: evidence
      value: guide+sample
  - name: MarketParticipants
    logicalType: integer
    logicalTypeOptions:
      format: i64
    physicalType: integer (csv text)
    description: Number of broker-dealers quoting the security.
    customProperties:
    - property: unit
      value: count
    - property: nullMeaning
      value: Blank
    - property: evidence
      value: guide+sample
  - name: 20DayAvgVolume
    logicalType: integer
    logicalTypeOptions:
      format: i64
    physicalType: integer (csv text)
    description: Mean share volume over the past 20 trading days.
    customProperties:
    - property: unit
      value: shares
    - property: nullMeaning
      value: Blank
    - property: evidence
      value: guide+sample
  - name: 30DayAvgVolume
    logicalType: integer
    logicalTypeOptions:
      format: i64
    physicalType: integer (csv text)
    description: Mean share volume over the past 30 trading days.
    customProperties:
    - property: unit
      value: shares
    - property: nullMeaning
      value: Blank
    - property: evidence
      value: guide+sample
  - name: LastSplitDate
    logicalType: date
    logicalTypeOptions:
      format: yyyymmdd
    physicalType: string (yyyymmdd) (csv text)
    description: Date of the last forward or reverse share split.
    customProperties:
    - property: nullMeaning
      value: Blank
    - property: evidence
      value: guide+sample
  - name: LastSplitRatio
    logicalType: number
    physicalType: decimal (csv text)
    description: Share amount per 1 pre-split share; above 1 is a forward split, below 1 a reverse split.
    customProperties:
    - property: nullMeaning
      value: Blank
    - property: evidence
      value: guide+sample
  - name: LastSplitComments
    logicalType: string
    physicalType: string (csv text)
    description: Text comments on the last split.
    customProperties:
    - property: nullMeaning
      value: Blank
    - property: evidence
      value: guide+sample
  - name: PreviousSplitDate
    logicalType: date
    logicalTypeOptions:
      format: yyyymmdd
    physicalType: string (yyyymmdd) (csv text)
    description: Date of the split before the last one.
    customProperties:
    - property: nullMeaning
      value: Blank
    - property: evidence
      value: guide+sample
  - name: PreviousSplitRatio
    logicalType: number
    physicalType: decimal (csv text)
    description: Share amount per 1 pre-split share for the previous split; above 1 forward, below 1 reverse.
    customProperties:
    - property: nullMeaning
      value: Blank
    - property: evidence
      value: guide+sample
  - name: PreviousSplitComments
    logicalType: string
    physicalType: string (csv text)
    description: Text comments on the previous split.
    customProperties:
    - property: nullMeaning
      value: Blank
    - property: evidence
      value: guide+sample
  - name: HomeMarketTradingTicker
    logicalType: string
    physicalType: string (csv text)
    description: Home-market symbol for foreign securities (F shares, ADRs).
    customProperties:
    - property: nullMeaning
      value: Blank
    - property: evidence
      value: guide+sample
  - name: HomeMarketTradingVenue
    logicalType: string
    physicalType: string (csv text)
    description: Home-market trading venue for foreign securities.
    customProperties:
    - property: nullMeaning
      value: Blank
    - property: evidence
      value: guide+sample
  - name: HomeMarketTradingVenueTier
    logicalType: string
    physicalType: string (csv text)
    description: Tier within the home-market venue (e.g. LSE AIM); 'No Tier', 'Prime Market', 'Main Board'
      in sample.
    customProperties:
    - property: nullMeaning
      value: Blank
    - property: evidence
      value: guide+sample
  - name: SharesOutstanding
    logicalType: integer
    logicalTypeOptions:
      format: i64
    physicalType: integer (csv text)
    description: Shares outstanding for the security.
    customProperties:
    - property: unit
      value: shares
    - property: nullMeaning
      value: Blank
    - property: evidence
      value: guide+sample
  - name: SharesOutstandingAsOfDate
    logicalType: date
    logicalTypeOptions:
      format: yyyymmdd
    physicalType: string (yyyymmdd) (csv text)
    description: As-of date of the shares outstanding value; can be years old.
    customProperties:
    - property: nullMeaning
      value: Blank
    - property: evidence
      value: guide+sample
  - name: TransferAgentVerified
    logicalType: string
    logicalTypeOptions:
      format: Y/N
    physicalType: string (csv text)
    description: Flag for transfer-agent verification; the guide text repeats the company-profile-verified
      wording.
    customProperties:
    - property: nullMeaning
      value: Never
    - property: evidence
      value: guide+sample
  - name: CompanyProfileVerified
    logicalType: string
    logicalTypeOptions:
      format: Y/N
    physicalType: string (csv text)
    description: Whether company profile data (description, officers, directors) is verified by the issuer;
      verification must be under six months old.
    customProperties:
    - property: nullMeaning
      value: Never
    - property: evidence
      value: guide+sample
  - name: CompanyProfileVerifiedAsOfDate
    logicalType: date
    logicalTypeOptions:
      format: yyyymmdd
    physicalType: string (yyyymmdd) (csv text)
    description: Date the company profile was verified.
    customProperties:
    - property: nullMeaning
      value: Blank
    - property: evidence
      value: guide+sample
  - name: TransferAgent
    logicalType: string
    logicalTypeOptions:
      format: several agents separated by ';'
    physicalType: string (csv text)
    description: Transfer agent(s) for the security, semicolon-separated if several.
    customProperties:
    - property: nullMeaning
      value: Blank
    - property: evidence
      value: guide+sample
  - name: TierAbbreviation
    logicalType: string
    logicalTypeOptions:
      format: 2 letters
    physicalType: string (csv text)
    description: Two-letter abbreviation of the OTC tier (GM, PC, PL, PN in sample).
    required: true
    customProperties:
    - property: nullMeaning
      value: Never
    - property: evidence
      value: guide+sample
  - name: UNSQuoteOnly
    logicalType: string
    logicalTypeOptions:
      format: Y/N
    physicalType: string (csv text)
    description: Whether the security may be quoted only on an unsolicited basis on OTC Link ATS.
    required: true
    customProperties:
    - property: nullMeaning
      value: Never
    - property: evidence
      value: guide+sample
  - name: OTCLinkECNEligibleFlag
    logicalType: string
    logicalTypeOptions:
      format: Y/N
    physicalType: string (csv text)
    description: Whether the security is eligible for OTC Link ECN.
    customProperties:
    - property: nullMeaning
      value: Blank
    - property: evidence
      value: guide+sample
  - name: DisclosureStatus
    logicalType: string
    physicalType: string (csv text)
    description: Issuer disclosure status (Current Information, Limited Information in sample).
    customProperties:
    - property: nullMeaning
      value: Blank
    - property: evidence
      value: guide+sample
  - name: ProprietaryQuoteEligibleEntryReasonCodes
    logicalType: string
    logicalTypeOptions:
      format: integer reason codes separated by ';'
    physicalType: string (csv text)
    description: Rule 15c-211 compliance basis for proprietary quote eligibility; codes 1-24, semicolon-separated
      (see reason code table).
    customProperties:
    - property: nullMeaning
      value: Blank
    - property: evidence
      value: guide+sample
  - name: DeterminationDates
    logicalType: string
    logicalTypeOptions:
      format: yyyymmdd values separated by ';'
    physicalType: string (yyyymmdd;yyyymmdd;...) (csv text)
    description: Determination date for each reason code, in the same order as ProprietaryQuoteEligibleEntryReasonCodes.
    customProperties:
    - property: nullMeaning
      value: Blank
    - property: evidence
      value: guide+sample
  - name: GracePeriod
    logicalType: string
    logicalTypeOptions:
      format: Y/N
    physicalType: string (csv text)
    description: Whether the security is in a grace period for Rule 15c-211 compliance.
    customProperties:
    - property: nullMeaning
      value: Blank
    - property: evidence
      value: guide+sample
  - name: GracePeriodAnticipatedEndDate
    logicalType: date
    logicalTypeOptions:
      format: yyyymmdd
    physicalType: string (yyyymmdd) (csv text)
    description: Anticipated final date of the grace period; absent a status change the security loses
      proprietary quote eligibility the next trading day.
    customProperties:
    - property: nullMeaning
      value: Blank
    - property: evidence
      value: guide+sample
  - name: 211ShellFlag
    logicalType: string
    logicalTypeOptions:
      format: Y/N
    physicalType: string (csv text)
    description: Whether the issuer is a shell company under Rule 15c2-11.
    customProperties:
    - property: nullMeaning
      value: Blank
    - property: evidence
      value: guide+sample
  - name: 211ShellAsOfDate
    logicalType: date
    logicalTypeOptions:
      format: yyyymmdd
    physicalType: string (yyyymmdd) (csv text)
    description: Date of the security's initial proprietary quote, the base of the 18-month piggyback
      exemption window.
    customProperties:
    - property: nullMeaning
      value: Blank
    - property: evidence
      value: guide+sample
  - name: 211ShellDaysRemaining
    logicalType: integer
    logicalTypeOptions:
      format: i64
    physicalType: integer (csv text)
    description: Days left in the 18-month shell piggyback timeframe; null once it has expired.
    customProperties:
    - property: nullMeaning
      value: Blank
    - property: evidence
      value: guide+sample
  - name: ShareClassFIGI
    logicalType: string
    logicalTypeOptions:
      format: 12-character FIGI
    physicalType: string (csv text)
    description: Current share-class (global-level) FIGI of the security; documented in the guide but
      absent from the sample header.
    customProperties:
    - property: nullMeaning
      value: Blank
    - property: evidence
      value: guide-only
  quality:
  - id: row_count_positive
    metric: rowCount
    mustBeGreaterThan: 0
    dimension: completeness
    severity: error
    description: Every delivered partition (trade date, or snapshot) carries at least one row.
  - id: primary_key_unique
    metric: duplicateValues
    mustBe: 0
    arguments:
      properties:
      - TradeDate
      - SecId
    dimension: uniqueness
    severity: error
    description: The declared primary key is unique within each delivered partition (one file or table
      snapshot).
  - id: 20DayAvgVolume_non_negative
    type: sql
    description: 20DayAvgVolume is never negative.
    query: SELECT COUNT(*) FROM {object} WHERE 20DayAvgVolume < 0
    mustBe: 0
    dimension: accuracy
    severity: error
  - id: 30DayAvgVolume_non_negative
    type: sql
    description: 30DayAvgVolume is never negative.
    query: SELECT COUNT(*) FROM {object} WHERE 30DayAvgVolume < 0
    mustBe: 0
    dimension: accuracy
    severity: error
support:
- channel: algoseek-support
  tool: email
  url: mailto:support@algoseek.com
  scope: issues
  description: Vendor support for data defects, missing days, and entitlement problems.
team:
  name: AlphaSwarm data engineering
slaProperties:
- id: history_start
  property: generalAvailability
  value: '2024-11-01'
  description: First trade date of the vendor history.
- id: retention
  property: retention
  value: license-term
  description: Retention of landed copies is bounded by the AlgoSeek license; purge on termination.
  driver: regulatory
customProperties:
- property: vendor
  value: AlgoSeek
- property: vendorDataGroup
  value: us-equity-ref
- property: vendorDatasetTextId
  value: eq_otc_market_compliance
- property: vendorSampleUrl
  value: https://as-metadata-services-assets.s3.amazonaws.com/sample_data/cloud_storage/eq_otc_market_compliance.csv
- property: assetClass
  value: equity
- property: venues
  value:
  - OTC Link
  - Grey Market
- property: coverage
  value: Full universe of US OTC equity securities (~22k instruments), an extension of the OTC Markets
    Compliance Data file, with FIGI from OpenFIGI. Data available from November 2024 (page).
- property: timezone
  value: America/New_York
- property: timestampFormat
  value: yyyymmdd for dates; ddmm for FiscalYearEnd
- property: priceAdjustment
  value: n/a
- property: licensedData
  value: true
- property: evidenceGrade
  value: vendor-doc
- property: knownIssues
  value:
  - Primary key is inferred; AlgoSeek's guide does not name one.
  - 'Doc discrepancy: Guide Table 1 includes ShareClassFIGI (current global FIGI) immediately after FIGI,
    but the published sample header has no ShareClassFIGI column (78 sample columns vs 79 guide fields);
    the page also only mentions ''a FIGI identifier''.'
  - 'Doc discrepancy: Guide says OTCTier details are ''outlined in appendix'' and the reason-code field
    points to ''Table 6'', but the appendix contains only an unnumbered reason-code table; no tier table
    or Table 6 exists.'
  - 'Doc discrepancy: Guide describes TransferAgentVerified with the same text as CompanyProfileVerified
    (company profile data verified by the issuer), so the real meaning of TransferAgentVerified is undocumented.'
  - 'Doc discrepancy: Guide does not define SecurityStatus codes (the OTC Security Master guide does);
    sample shows A and R.'
  - 'Doc discrepancy: Guide refers to a ''Qualified Financial Data Available Field'' and a ''Qualified
    Financial Data'' flag; the matching columns are PSQualifiedFinancials and OTCRecRuleQualifiedFinancials.'
  - 'Doc discrepancy: Guide TradeDate is ''File creation date'' but two files (AM and PM) exist per day
    with the same date; the guide lists no column for the AM/PM period, which appears only in the file
    name.'
  - 'Doc discrepancy: Guide leaves several value sets undocumented that occur in the sample: Venue, ReportingStandard,
    DisclosureStatus, FilingCycle (Q, A), LastReportType, HomeMarketTradingVenueTier.'
  - 'Doc discrepancy: LastBalanceSheetPED and LastAnnualBalanceSheetPED have the same description (''Date
    of most recent annual Balance Sheet'') and identical values in the sample.'
contractCreatedTs: '2026-11-02T00:00:00Z'
