# 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-corporate-actions
name: AlgoSeek US Equities OTC Corporate Actions
version: 0.1.0
status: draft
domain: market-data
tags:
- algoseek
- licensed-data
- equity
- reference
- us
- event
description:
  purpose: 'One row per corporate-action record for OTC equities from FINRA''s OTC Equities Daily List:
    security additions, changes and deletions plus dividend/distribution/split additions, changes and
    cancellations, with old and new symbol, name, class, round lot, market category and regulatory attributes.
    Used for symbol/name tracking and price adjustment.'
  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. No SecId, ASID,
    CUSIP or ISIN in this dataset: securities are identified only by OldTicker/NewTicker plus names. The
    OTC Security Master uses this dataset to join related OTC SecIds under one ASID, so link to it by
    ticker and date, and expect ticker reuse. Event model by CorporateActionCode: SA adds a security to
    the OTC master (SecurityAddFlag=Y), SD removes it (SecurityDeleteFlag=Y, NewTicker blank), SC changes
    attributes with Old*/New* pairs (ChangeSecurityAttributeFlag=Y), DA announces a dividend/distribution/split,
    DC revises one, DD cancels one. Flags agree with codes in the sample (SA/SD/SC rows carry the matching
    flag; DA/DC/DD rows carry none). SA/SD describe membership of the OTC Equity Security Master, not
    listing direction: in the sample, ''Market Center Change Delisted from NYSE'' is an SA (the security
    appears on OTC) and ''Market Center Change Listed on NASDAQ'' is an SD (it leaves OTC). A DD record
    repeats the DividendId of the DA it cancels but has its own CorporateActionId and a note such as ''will
    reannounce'' (sample: FBSE and RGBP); a cancelled action may be re-announced later with a new DividendId.
    DC rows in the sample have their own DividendIds.'
  authoritativeDefinitions:
  - type: businessDefinition
    url: https://algoseek.com/dataset/us-equities-otc-corporate-actions/
  - type: implementation
    url: https://algoseek.com/data-docs/equity-reference/algoseek.US.Equity.OTC.Corporate.Actions.pdf
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_CORP_ACTIONS}/
  format: csv
  encoding: UTF-8
  customProperties:
  - property: layout
    value: gzip-compressed CSV, one file per announcement trading day named yyyymmdd.csv.gz (yyyymmdd
      = announcement date in the OTC Equities Daily List); fixed header first; records sorted by AnnounceDate,
      AnnounceTime, EffectiveDate, EffectiveTime.
  - property: compression
    value: gzip
  - property: header
    value: true
  - property: entitlement
    value: Bucket access is granted per subscription; bucket names arrive with license provisioning.
schema:
- name: us_equities_otc_corporate_actions
  physicalName: eq_otc_corp_actions
  physicalType: file
  logicalType: object
  businessName: US Equities OTC Corporate Actions
  description: 'One row per corporate-action record for OTC equities from FINRA''s OTC Equities Daily
    List: security additions, changes and deletions plus dividend/distribution/split additions, changes
    and cancellations, with old and new symbol, name, class, round lot, market category and regulatory
    attributes. Used for symbol/name tracking and price adjustment.'
  dataGranularityDescription: one corporate action record (security event or dividend/distribution event)
    announced on the FINRA OTC Daily List
  properties:
  - name: AnnounceDate
    logicalType: date
    logicalTypeOptions:
      format: yyyymmdd
    physicalType: string (yyyymmdd) (csv text)
    description: Date the corporate action was announced, i.e. published on the FINRA OTC Equities Daily
      List.
    required: true
    customProperties:
    - property: nullMeaning
      value: Never
    - property: evidence
      value: guide+sample
  - name: AnnounceTime
    logicalType: time
    logicalTypeOptions:
      format: HH:MM:SS
    physicalType: string (HH:MM:SS) (csv text)
    description: Time the corporate action was announced; 00:00:00 appears in 13 of 83 sample rows (likely
      a default).
    customProperties:
    - property: nullMeaning
      value: Never
    - property: evidence
      value: guide+sample
  - name: EffectiveDate
    logicalType: date
    logicalTypeOptions:
      format: yyyymmdd
    physicalType: string (yyyymmdd) (csv text)
    description: Date the action takes effect (e.g. symbol change official date, dividend ex-date).
    customProperties:
    - property: nullMeaning
      value: Blank
    - property: evidence
      value: guide+sample
  - name: EffectiveTime
    logicalType: time
    logicalTypeOptions:
      format: HH:MM:SS
    physicalType: string (HH:MM:SS) (csv text)
    description: Time the action takes effect; 00:00:00 in 81 of 83 sample rows.
    customProperties:
    - property: nullMeaning
      value: Blank; Always blank before 2018-12-18 (legacy FINRA format).
    - property: evidence
      value: guide+sample
  - name: CorporateActionCode
    logicalType: string
    physicalType: string (csv text)
    description: Event type code, one of six values; see CorporateActionCode.
    enum:
    - value: SA
      label: Security Addition - a security is being added to the OTC Equity Security Master
    - value: SC
      label: Security Change - one or more attributes (symbol, name, status, OATS, round lot, market category)
        change; old and new values both present
    - value: SD
      label: Security Deletion - a security is removed from the OTC Equity Security Master (acquisition,
        delisting, bankruptcy, regulatory action)
    - value: DA
      label: Dividend Addition - new dividend, distribution or split announced; also used when an attribute
        change and a distribution (forward/reverse split, stock dividend) are announced together
    - value: DC
      label: Dividend Change - a previously announced dividend/distribution record was updated
    - value: DD
      label: Dividend Deletion/Cancellation - a previously announced dividend/distribution was cancelled
    customProperties:
    - property: nullMeaning
      value: Never (guide), but always blank before 2018-12-18
    - property: evidence
      value: guide+sample
  - name: CorporateActionReason
    logicalType: string
    physicalType: string (csv text)
    description: More detailed reason for the action; one of 82 listed values (guide Appendix B).
    required: true
    customProperties:
    - property: nullMeaning
      value: Never
    - property: evidence
      value: guide+sample
  - name: CorporateActionId
    logicalType: integer
    logicalTypeOptions:
      format: i64
    physicalType: integer (csv text)
    description: Unique numeric identifier of each corporate action record.
    primaryKey: true
    primaryKeyPosition: 1
    required: true
    customProperties:
    - property: nullMeaning
      value: Never (guide), but always blank before 2018-12-18
    - property: evidence
      value: guide+sample
  - name: OldTicker
    logicalType: string
    physicalType: string (csv text)
    description: Symbol before the effective date of the action.
    required: true
    customProperties:
    - property: nullMeaning
      value: Never
    - property: evidence
      value: guide+sample
  - name: NewTicker
    logicalType: string
    physicalType: string (csv text)
    description: Symbol from the effective date; blank for deletions (SD) and dividend cancellations (DD)
      in sample.
    customProperties:
    - property: nullMeaning
      value: Blank
    - property: evidence
      value: guide+sample
  - name: OldSecurityClass
    logicalType: string
    physicalType: string (csv text)
    description: Security class before the effective date.
    customProperties:
    - property: nullMeaning
      value: Blank
    - property: evidence
      value: guide+sample
  - name: NewSecurityClass
    logicalType: string
    physicalType: string (csv text)
    description: Security class from the effective date.
    customProperties:
    - property: nullMeaning
      value: Blank
    - property: evidence
      value: guide+sample
  - name: OldSecurityName
    logicalType: string
    physicalType: string (csv text)
    description: Security name before the effective date.
    required: true
    customProperties:
    - property: nullMeaning
      value: Never
    - property: evidence
      value: guide+sample
  - name: NewSecurityName
    logicalType: string
    physicalType: string (csv text)
    description: Security name from the effective date.
    customProperties:
    - property: nullMeaning
      value: Blank
    - property: evidence
      value: guide+sample
  - name: DividendTypeCode
    logicalType: string
    physicalType: string (csv text)
    description: Type of dividend announced; codes CD, RS, SD, FS occur in sample but are not enumerated
      in the guide.
    customProperties:
    - property: nullMeaning
      value: Blank
    - property: evidence
      value: guide+sample
  - name: DividendTypeDescription
    logicalType: string
    physicalType: string (csv text)
    description: Descriptive name of the dividend type (Cash Dividend, Reverse Split, Stock Dividend,
      Forward Split in sample).
    customProperties:
    - property: nullMeaning
      value: Blank; Always blank before 2018-12-18 (legacy FINRA format).
    - property: evidence
      value: guide+sample
  - name: DeclarationDate
    logicalType: date
    logicalTypeOptions:
      format: yyyymmdd
    physicalType: string (yyyymmdd) (csv text)
    description: Date the issuer declared or approved the action.
    customProperties:
    - property: nullMeaning
      value: Blank
    - property: evidence
      value: guide+sample
  - name: RecordDate
    logicalType: date
    logicalTypeOptions:
      format: yyyymmdd
    physicalType: string (yyyymmdd) (csv text)
    description: Date the company's books close to determine holders entitled to the distribution.
    customProperties:
    - property: nullMeaning
      value: Blank
    - property: evidence
      value: guide+sample
  - name: PaymentDate
    logicalType: date
    logicalTypeOptions:
      format: yyyymmdd
    physicalType: string (yyyymmdd) (csv text)
    description: Date the payment is sent to the record owner.
    customProperties:
    - property: nullMeaning
      value: Blank
    - property: evidence
      value: guide+sample
  - name: PaymentMethod
    logicalType: string
    physicalType: string (csv text)
    description: Method of receiving a new distribution (surrender certificates or not); PUS and MOD occur
      in sample, undocumented.
    customProperties:
    - property: nullMeaning
      value: Blank
    - property: evidence
      value: guide+sample
  - name: StockPercentage
    logicalType: number
    physicalType: decimal (csv text)
    description: Distribution amount expressed as a percentage per share.
    customProperties:
    - property: unit
      value: percent
    - property: nullMeaning
      value: Blank
    - property: evidence
      value: guide+sample
  - name: CashAmount
    logicalType: number
    physicalType: decimal (csv text)
    description: Distribution amount as cash per share; currency not stated.
    customProperties:
    - property: nullMeaning
      value: Blank
    - property: evidence
      value: guide+sample
  - name: DividendId
    logicalType: integer
    logicalTypeOptions:
      format: i64
    physicalType: integer (csv text)
    description: Unique numeric identifier of the dividend event; a DD row repeats the DividendId of the
      dividend it cancels (sample).
    customProperties:
    - property: nullMeaning
      value: Blank; Always blank before 2018-12-18 (legacy FINRA format).
    - property: evidence
      value: guide+sample
  - name: DividendADRFlag
    logicalType: string
    logicalTypeOptions:
      format: Y/N (per sample)
    physicalType: string (csv text)
    description: Whether the security whose dividend, split or distribution is announced is an ADR.
    customProperties:
    - property: nullMeaning
      value: Never (guide), but always blank before 2018-12-18
    - property: evidence
      value: guide+sample
  - name: DividendNonADRFlag
    logicalType: string
    logicalTypeOptions:
      format: Y/N (per sample)
    physicalType: string (csv text)
    description: Whether the security whose dividend, split or distribution is announced is NOT an ADR.
    customProperties:
    - property: nullMeaning
      value: Never (guide), but always blank before 2018-12-18
    - property: evidence
      value: guide+sample
  - name: ADRGrossRate
    logicalType: number
    physicalType: decimal (csv text)
    description: ADR gross dividend cash amount.
    customProperties:
    - property: nullMeaning
      value: Blank
    - property: evidence
      value: guide+sample
  - name: ADRNetRate
    logicalType: number
    physicalType: decimal (csv text)
    description: ADR net dividend cash amount.
    customProperties:
    - property: nullMeaning
      value: Blank
    - property: evidence
      value: guide+sample
  - name: ADRFeeAmount
    logicalType: number
    physicalType: decimal (csv text)
    description: Fee charged by the depository bank for processing the dividend.
    customProperties:
    - property: nullMeaning
      value: Blank
    - property: evidence
      value: guide+sample
  - name: ADRTaxReliefAmount
    logicalType: number
    physicalType: decimal (csv text)
    description: Fee charged by the depository bank for tax purposes; empty in all 83 sample rows.
    customProperties:
    - property: nullMeaning
      value: Blank
    - property: evidence
      value: guide+sample
  - name: ADRWitholdingTaxPercentage
    logicalType: number
    physicalType: decimal (csv text)
    description: ADR tax percent withheld on the distribution; header spelling 'Witholding' is as published.
    customProperties:
    - property: unit
      value: percent
    - property: nullMeaning
      value: Blank
    - property: evidence
      value: guide+sample
  - name: ADRIssuanceFeeAmount
    logicalType: number
    physicalType: decimal (csv text)
    description: Fee for issuing additional ADRs to current holders; empty in all 83 sample rows.
    customProperties:
    - property: nullMeaning
      value: Blank
    - property: evidence
      value: guide+sample
  - name: DividendCriteria
    logicalType: string
    physicalType: string (csv text)
    description: Whether the distribution meets the criteria for lower capital-gains tax; Yes, No, Unknown
      in sample.
    customProperties:
    - property: nullMeaning
      value: Blank
    - property: evidence
      value: guide+sample
  - name: SplitRatio
    logicalType: string
    logicalTypeOptions:
      format: new:old, e.g. 2.4:1 (per sample)
    physicalType: string (csv text)
    description: New and old share amounts resulting from a stock split.
    customProperties:
    - property: nullMeaning
      value: Blank
    - property: evidence
      value: guide+sample
  - name: ReverseSplitRatio
    logicalType: string
    logicalTypeOptions:
      format: new:old, e.g. 1:15 (per sample)
    physicalType: string (csv text)
    description: New and old share amounts resulting from a reverse stock split.
    customProperties:
    - property: nullMeaning
      value: Blank
    - property: evidence
      value: guide+sample
  - name: AdjustmentFactor
    logicalType: number
    physicalType: decimal (csv text)
    description: Adjustment factor for the action; guide says it is always empty in this dataset version.
    customProperties:
    - property: nullMeaning
      value: Blank (always empty in this version)
    - property: evidence
      value: guide+sample
  - name: CorporateActionIndicator
    logicalType: string
    physicalType: string (csv text)
    description: Indicates a corporate action without (CA) or with (CD) a distribution.
    enum:
    - value: CA
      label: Security subject to a corporate action without a distribution
    - value: CD
      label: Security subject to a corporate action with a distribution of a certain percent
    customProperties:
    - property: nullMeaning
      value: Blank
    - property: evidence
      value: guide+sample
  - name: OldADRRatio
    logicalType: string
    logicalTypeOptions:
      format: ratio, e.g. 1:20 (per sample)
    physicalType: string (csv text)
    description: Ratio of ADR shares to underlying shares before the effective date.
    customProperties:
    - property: nullMeaning
      value: Blank
    - property: evidence
      value: guide+sample
  - name: NewADRRatio
    logicalType: string
    logicalTypeOptions:
      format: ratio, e.g. 1:20 (per sample)
    physicalType: string (csv text)
    description: Ratio of ADR shares to underlying shares from the effective date.
    customProperties:
    - property: nullMeaning
      value: Blank
    - property: evidence
      value: guide+sample
  - name: OldRoundLot
    logicalType: integer
    logicalTypeOptions:
      format: i64
    physicalType: integer (csv text)
    description: Round lot size before the effective date.
    required: true
    customProperties:
    - property: unit
      value: shares
    - property: nullMeaning
      value: Never
    - property: evidence
      value: guide+sample
  - name: NewRoundLot
    logicalType: integer
    logicalTypeOptions:
      format: i64
    physicalType: integer (csv text)
    description: Round lot size from the effective date.
    customProperties:
    - property: unit
      value: shares
    - property: nullMeaning
      value: Blank
    - property: evidence
      value: guide+sample
  - name: OldMaturityDate
    logicalType: date
    logicalTypeOptions:
      format: yyyymmdd
    physicalType: string (yyyymmdd) (csv text)
    description: Maturity date before the effective date, if applicable.
    customProperties:
    - property: nullMeaning
      value: Blank
    - property: evidence
      value: guide+sample
  - name: NewMaturityDate
    logicalType: date
    logicalTypeOptions:
      format: yyyymmdd
    physicalType: string (yyyymmdd) (csv text)
    description: Maturity date from the effective date, if applicable.
    customProperties:
    - property: nullMeaning
      value: Blank
    - property: evidence
      value: guide+sample
  - name: OldMarketCategory
    logicalType: string
    physicalType: string (csv text)
    description: Whether the security was other-OTC or OTCBB before the effective date; sample value 'u'
      is not explained.
    customProperties:
    - property: nullMeaning
      value: Never
    - property: evidence
      value: guide+sample
  - name: NewMarketCategory
    logicalType: string
    physicalType: string (csv text)
    description: Whether the security is other-OTC or OTCBB from the effective date.
    customProperties:
    - property: nullMeaning
      value: Blank
    - property: evidence
      value: guide+sample
  - name: OldFinancialStatus
    logicalType: string
    physicalType: string (csv text)
    description: Financial status code before the effective date; N and M occur in sample, undocumented.
    customProperties:
    - property: nullMeaning
      value: Blank
    - property: evidence
      value: guide+sample
  - name: NewFinancialStatus
    logicalType: string
    physicalType: string (csv text)
    description: Financial status code from the effective date.
    customProperties:
    - property: nullMeaning
      value: Blank
    - property: evidence
      value: guide+sample
  - name: OldOATSFlag
    logicalType: string
    logicalTypeOptions:
      format: Y/N (per sample)
    physicalType: string (csv text)
    description: Whether trades were OATS-reportable before the effective date.
    required: true
    customProperties:
    - property: nullMeaning
      value: Never
    - property: evidence
      value: guide+sample
  - name: NewOATSFlag
    logicalType: string
    logicalTypeOptions:
      format: Y/N (per sample)
    physicalType: string (csv text)
    description: Whether trades are OATS-reportable from the effective date.
    customProperties:
    - property: nullMeaning
      value: Blank
    - property: evidence
      value: guide+sample
  - name: OldRegFeeFlag
    logicalType: string
    logicalTypeOptions:
      format: Y/N (per sample)
    physicalType: string (csv text)
    description: Whether a regulatory transaction fee applied before the effective date.
    required: true
    customProperties:
    - property: nullMeaning
      value: Never
    - property: evidence
      value: guide+sample
  - name: NewRegFeeFlag
    logicalType: string
    logicalTypeOptions:
      format: Y/N (per sample)
    physicalType: string (csv text)
    description: Whether a regulatory transaction fee applies from the effective date.
    customProperties:
    - property: nullMeaning
      value: Blank
    - property: evidence
      value: guide+sample
  - name: OfferingType
    logicalType: string
    physicalType: string (csv text)
    description: Whether the security is 144A, Reg S or freely tradable ('No Restrictions', '144A', 'Reg
      S' in sample).
    required: true
    customProperties:
    - property: nullMeaning
      value: Never
    - property: evidence
      value: guide+sample
  - name: SecurityAddFlag
    logicalType: string
    logicalTypeOptions:
      format: Y/N (per sample)
    physicalType: string (csv text)
    description: Y when the record is a security addition event (SA).
    customProperties:
    - property: nullMeaning
      value: Never (guide), but always blank before 2018-12-18
    - property: evidence
      value: guide+sample
  - name: SecurityDeleteFlag
    logicalType: string
    logicalTypeOptions:
      format: Y/N (per sample)
    physicalType: string (csv text)
    description: Y when the record is a security deletion event (SD).
    customProperties:
    - property: nullMeaning
      value: Never (guide), but always blank before 2018-12-18
    - property: evidence
      value: guide+sample
  - name: BankruptcyFlag
    logicalType: string
    logicalTypeOptions:
      format: Y/N (per sample)
    physicalType: string (csv text)
    description: Whether the security is flagged for bankruptcy.
    customProperties:
    - property: nullMeaning
      value: Never (guide), but always blank before 2018-12-18
    - property: evidence
      value: guide+sample
  - name: ChangeFinancialStatusFlag
    logicalType: string
    logicalTypeOptions:
      format: Y/N (per sample)
    physicalType: string (csv text)
    description: Whether the financial status of the security changed.
    required: true
    customProperties:
    - property: nullMeaning
      value: Never (guide), but always blank before 2018-12-18
    - property: evidence
      value: guide+sample
  - name: ChangeOATSFlag
    logicalType: string
    logicalTypeOptions:
      format: Y/N (per sample)
    physicalType: string (csv text)
    description: Whether the OATS-reportable status changed.
    required: true
    customProperties:
    - property: nullMeaning
      value: Never (guide), but always blank before 2018-12-18
    - property: evidence
      value: guide+sample
  - name: ChangeOTCBBQuoteFlag
    logicalType: string
    logicalTypeOptions:
      format: Y/N (per sample)
    physicalType: string (csv text)
    description: Whether the OTCBB quote status changed.
    required: true
    customProperties:
    - property: nullMeaning
      value: Never (guide), but always blank before 2018-12-18
    - property: evidence
      value: guide+sample
  - name: ChangeRegFeeFlag
    logicalType: string
    logicalTypeOptions:
      format: Y/N (per sample)
    physicalType: string (csv text)
    description: Whether the regulatory fee status changed.
    required: true
    customProperties:
    - property: nullMeaning
      value: Never (guide), but always blank before 2018-12-18
    - property: evidence
      value: guide+sample
  - name: ChangeRoundLotFlag
    logicalType: string
    logicalTypeOptions:
      format: Y/N (per sample)
    physicalType: string (csv text)
    description: Whether the round lot quantity changed.
    required: true
    customProperties:
    - property: nullMeaning
      value: Never (guide), but always blank before 2018-12-18
    - property: evidence
      value: guide+sample
  - name: ChangeSecurityAttributeFlag
    logicalType: string
    logicalTypeOptions:
      format: Y/N (per sample)
    physicalType: string (csv text)
    description: Whether a security attribute changed; Y on all SC rows in sample.
    required: true
    customProperties:
    - property: nullMeaning
      value: Never (guide), but always blank before 2018-12-18
    - property: evidence
      value: guide+sample
  - name: ChangeSecurityNameFlag
    logicalType: string
    logicalTypeOptions:
      format: Y/N (per sample)
    physicalType: string (csv text)
    description: Whether the security name changed.
    required: true
    customProperties:
    - property: nullMeaning
      value: Never (guide), but always blank before 2018-12-18
    - property: evidence
      value: guide+sample
  - name: ChangeTickerFlag
    logicalType: string
    logicalTypeOptions:
      format: Y/N (per sample)
    physicalType: string (csv text)
    description: Whether the symbol changed.
    required: true
    customProperties:
    - property: nullMeaning
      value: Never (guide), but always blank before 2018-12-18
    - property: evidence
      value: guide+sample
  - name: Notes
    logicalType: string
    physicalType: string (csv text)
    description: Free-text comments on the corporate action; may contain HTML-escaped characters (&gt;
      in sample).
    customProperties:
    - property: nullMeaning
      value: Blank
    - property: evidence
      value: guide+sample
  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:
      - CorporateActionId
    dimension: uniqueness
    severity: error
    description: The declared primary key is unique within each delivered partition (one file or table
      snapshot).
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: '2014-11-17'
  description: First trade date of the vendor history.
- id: update_frequency
  property: frequency
  value: 1
  unit: d
  driver: analytics
- 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_corp_actions
- property: vendorSampleUrl
  value: https://as-metadata-services-assets.s3.amazonaws.com/sample_data/cloud_storage/eq_otc_corp_actions.csv
- property: assetClass
  value: equity
- property: venues
  value:
  - OTC (OTCBB and Other OTC)
- property: coverage
  value: OTC securities from 2014-11-17 to present with daily updates. FINRA Daily List archives supply
    2014-11-17 to 2018-12-17; the FINRA public API supplies 2018-12-18 onward. The feed format changed
    on 2018-12-18, and several fields exist only from then on.
- property: timezone
  value: America/New_York
- property: timestampFormat
  value: yyyymmdd and HH:MM:SS
- property: priceAdjustment
  value: n/a
- property: licensedData
  value: true
- property: evidenceGrade
  value: vendor-doc
- property: knownIssues
  value:
  - 'Doc discrepancy: Guide marks CorporateActionCode, CorporateActionId, DividendADRFlag, DividendNonADRFlag,
    SecurityAddFlag, SecurityDeleteFlag, BankruptcyFlag and all Change*Flag fields as Missing = ''Never'',
    but also says every (*) field is always blank before 2018-12-18; ''Never'' holds only for post-2018-12-18
    records.'
  - 'Doc discrepancy: Guide FAQ says ''all eleven Change...Flag fields'' but only eight columns are named
    Change*Flag; eleven is reached only if SecurityAddFlag, SecurityDeleteFlag and BankruptcyFlag are
    counted.'
  - 'Doc discrepancy: AdjustmentFactor is empty in every sample row and the guide says it is always empty
    in this version, although the intro says the dataset supports historical price adjustment; adjustment
    must be derived from SplitRatio, ReverseSplitRatio and CashAmount.'
  - 'Doc discrepancy: Guide Appendix B lists near-duplicate reason strings (Failure to Comply w/with FINRA
    Rule 6530; Rule 15c-211 vs 15c2-11; Forward Split Cusip Change vs Forward Split/CUSIP Change; Reverse
    Split/Cusip Change vs /CUSIP; 12(j) Registration vs 12(j)Registration).'
  - 'Doc discrepancy: Guide leaves several code sets undocumented that appear in the sample: DividendTypeCode
    (CD, RS, SD, FS), PaymentMethod (PUS, MOD), OldMarketCategory ''u'', FinancialStatus (N, M), DividendCriteria
    (Yes, No, Unknown), and the Y/N flag values.'
  - 'Doc discrepancy: Guide Table 1 gives EffectiveTime Missing = ''Blank''; the sample EffectiveTime
    is populated in every row, with 00:00:00 in 81 of 83, so 00:00:00 acts as ''no time'' rather than
    a real timestamp (same for AnnounceTime).'
  - 'Doc discrepancy: Sample Notes field contains an HTML-escaped character (''Prdct chng OTCE-OTCE&gt;UTP-NSDQ'');
    the guide says nothing about escaping.'
  - 'Doc discrepancy: Header name ADRWitholdingTaxPercentage is spelled with one ''h'' in both guide and
    sample (not corrected here; do not ''fix'' it in a contract).'
contractCreatedTs: '2026-11-02T00:00:00Z'
