# 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-daily-ssr-circuit-breakers
name: AlgoSeek US Equities Daily SSR Circuit Breakers
version: 0.1.0
status: draft
domain: market-data
tags:
- algoseek
- licensed-data
- equity
- reference
- us
- event
description:
  purpose: One row per security for which the SEC Short Sale Rule (Reg SHO Rule 201) circuit breaker was
    triggered on a trading date, with the trigger time and primary listing exchange. Used to model short-sale
    price-test restrictions in execution, compliance and post-trade analysis.
  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. Point-in-time:
    TriggerTime is the intraday moment the SSR was triggered on TradeDate; the restriction (short sales
    only above the national best bid) applies for the rest of that day and the next trading day per the
    page, so the second-day restriction must be derived (the guide does not say it is emitted as its own
    row). 15 of 100 sample rows have TriggerTime exactly 09:30:00 - the guide does not say whether these
    are opening-print triggers or carry-over restrictions. Identifiers: SecId (algoseek) and Ticker (as
    of TradeDate) only; no ASID, CUSIP or ISIN. Name and PrimaryExchange are as of TradeDate (''Primary
    listing exchange on the TradeDate''). Row order in the sample is ascending TriggerTime within the
    file; the guide does not promise any sort order. One row per SecId per TradeDate in the sample (100
    unique SecIds), but uniqueness is not stated in the guide. Universe includes non-common instruments
    (warrants and units, e.g. CLNNW, FFIEW, BITE.WS) listed on NASDAQ/NYSE/AMEX/ARCA/BATS.'
  authoritativeDefinitions:
  - type: businessDefinition
    url: https://algoseek.com/dataset/us-equities-daily-ssr-circuit-breakers/
  - type: implementation
    url: https://algoseek.com/data-docs/equity-reference/US.Equity.SSR.Circuit.Breakers.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_SSR_CIRC_BREAK}/
  format: csv
  encoding: UTF-8
  customProperties:
  - property: layout
    value: Plain-text CSV with a fixed header row; one file per trading date containing the affected securities
      from both exchanges.
  - 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/ssr-circ-break
  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_daily_ssr_circuit_breakers
  physicalName: eq_ssr_circ_break
  physicalType: file
  logicalType: object
  businessName: US Equities Daily SSR Circuit Breakers
  description: One row per security for which the SEC Short Sale Rule (Reg SHO Rule 201) circuit breaker
    was triggered on a trading date, with the trigger time and primary listing exchange. Used to model
    short-sale price-test restrictions in execution, compliance and post-trade analysis.
  dataGranularityDescription: one security whose SSR circuit breaker was triggered on a trading date
  properties:
  - name: TradeDate
    logicalType: date
    logicalTypeOptions:
      format: yyyymmdd
    physicalType: string (yyyymmdd) (csv text)
    description: Trading date on which the Short Sale Rule event is listed.
    primaryKey: true
    primaryKeyPosition: 1
    required: true
    customProperties:
    - property: nullMeaning
      value: unstated (always populated in sample)
    - property: evidence
      value: guide+sample
  - name: TriggerTime
    logicalType: time
    logicalTypeOptions:
      format: HH:MM:SS
    physicalType: string (HH:MM:SS) (csv text)
    description: Time at which the Short Sale Rule was triggered for the security; whole seconds.
    customProperties:
    - property: nullMeaning
      value: unstated (always populated in sample)
    - property: evidence
      value: guide+sample
  - name: SecId
    logicalType: integer
    logicalTypeOptions:
      format: i64
    physicalType: int (csv text)
    description: algoseek unique security identifier.
    primaryKey: true
    primaryKeyPosition: 2
    required: true
    customProperties:
    - property: nullMeaning
      value: unstated (always populated in sample)
    - property: evidence
      value: guide+sample
  - name: Ticker
    logicalType: string
    physicalType: string (csv text)
    description: Symbol name; includes warrant/unit style tickers such as BITE.WS in sample.
    customProperties:
    - property: nullMeaning
      value: unstated (always populated in sample)
    - property: evidence
      value: guide+sample
  - name: Name
    logicalType: string
    physicalType: string (csv text)
    description: Security name.
    customProperties:
    - property: nullMeaning
      value: unstated (always populated in sample)
    - property: evidence
      value: guide+sample
  - name: PrimaryExchange
    logicalType: string
    physicalType: string (csv text)
    description: Primary listing exchange on the TradeDate (NASDAQ, NYSE, AMEX, BATS, ARCA seen in sample).
    customProperties:
    - property: nullMeaning
      value: unstated (always populated in sample)
    - 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:
      - TradeDate
      - SecId
    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: '2011-02-28'
  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_ssr_circ_break
- property: vendorSampleUrl
  value: https://as-metadata-services-assets.s3.amazonaws.com/sample_data/cloud_storage/eq_ssr_circ_break.csv
- property: assetClass
  value: equity
- property: venues
  value:
  - NASDAQ
  - NYSE
  - AMEX
  - BATS
  - ARCA
- property: coverage
  value: SSR executions on NYSE-listed securities from 2015-03-25 and Nasdaq-listed securities from 2011-02-28
    (guide); both exchanges are combined in one file per trading date.
- property: timezone
  value: America/New_York
- property: timestampFormat
  value: HH:MM:SS (TriggerTime); yyyymmdd (TradeDate)
- 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 intro says data is available from NYSE (2015-03-25) and NASDAQ (2011-02-28),
    but PrimaryExchange values include AMEX (also in the guide''s own Table 1), and the sample adds BATS
    and ARCA; the guide does not enumerate the value set.'
  - 'Doc discrepancy: Guide intro words the trigger as the price dropping ''below 10% from the previous
    close'' with the restriction lasting ''up to 2 trade days''; the page states a -10% decline with the
    restriction for the rest of the day and the following day. The threshold wording is not precise about
    whether exactly 10% triggers.'
  - 'Doc discrepancy: Page says the dataset identifies securities for which the circuit breaker ''was
    in effect'', while the guide and TriggerTime describe the trigger event; the guide does not say whether
    the second restricted day (carry-over) is listed again.'
  - 'Doc discrepancy: Guide gives no Missing column and does not state the time zone of TriggerTime.'
contractCreatedTs: '2026-11-02T00:00:00Z'
