Standards

Event Definition v1

1.0.0

What the event means, which source is authoritative, and what happens when it is late. Version 1.0.0 is the binding every RainMuin market cites.

License: CC0-1.0Published: 2026-10-21JSON API JSON Schema

Governance

Correction policy
Published versions are immutable. A correction is issued as a new version with a changelog entry; events keep the version they were created with.
Licensing
Schema, identifiers and methodology: CC0 (free to implement and cite). Resolution determination, custom mandates and certification: commercial licence.
Citation
RainMuin Event Definition v1.0.0 (2026-10-21), https://rainmuin.com/standards/event-definition/v1

Event definitions

Each definition has a permanent event ID. A version is immutable; a correction is a new version.

NASDAQ 100 official close
RMN-EQ-NDX-CLOSE · rmn.eq.nasdaq100.close@1.0.0
Expand
Subject: NASDAQ 100 ^NDX · NASDAQ
Metric: pct_change = (close_target − close_reference) / close_reference × 100

Source hierarchy

PriorityPublisherFieldFinal as of
1Nasdaq Global Indexes Official index closing levelAt the exchange close on the target trading day
2Yahoo Finance Daily close (index level)Within 2 hours of the exchange close
3Stooq Daily closeWithin 6 hours of the exchange close

Fallback rules

  • The authoritative exchange source has not published the official close by the publication deadline → Use the next source in the hierarchy (priority 2), record its URL and the exact retrieval timestamp in this receipt, and mark the source tier. Never substitute a neighbouring trading day.
  • Every source is unavailable or disagrees → Do not resolve. The market stays open and is retried on the next scheduled run; after 5 trading days the determination authority publishes a written determination and a new receipt.
  • A published close is later corrected by the exchange → Issue a corrective receipt that supersedes the original (append-only). The original receipt and its evidence snapshot remain public.

Rounding

half_up · 2 dp — Percentage change is rounded to 2 decimals before bucket mapping

Reference time

Official close of the target trading day (or the most recent prior close on a holiday) · 23:59 exchange local time on the target trading day

Edge cases

  • Exchange holiday or unscheduled closure on the target date — The target observation is the most recent official close on or before the scheduled resolution date; the receipt records the actual close date, not the scheduled date.
  • Early close (half-day session) — The official close of that shortened session counts; no adjustment is made.
  • Trading halt at the scheduled close — The exchange’s official closing value for that session counts, including a halted close if the exchange publishes one.
  • Index methodology or constituent change between the reference and target dates — The published index level is used as-is. Methodology changes are not normalised out; the question text states this when a rebalance is scheduled.
  • Two sources disagree by more than 0.01% — The higher-priority source wins and the discrepancy is recorded in the receipt snapshot. If priority 1 is unavailable, the discrepancy is disclosed on the receipt page.
  • Ticker or index name changes — The event ID is permanent. A renamed ticker keeps the same event ID and the change is recorded in the definition changelog.
Dispute window: 72hDetermination authority: RainMuin Standards Registry (acting as determination agent for its own venues)
1.0.0 (2026-10-21): Initial publication.
KOSPI official close
RMN-EQ-KOSPI-CLOSE · rmn.eq.kospi.close@1.0.0
Expand
Subject: KOSPI ^KS11 · KRX
Metric: pct_change = (close_target − close_reference) / close_reference × 100

Source hierarchy

PriorityPublisherFieldFinal as of
1Korea Exchange (KRX) Official index closing levelAt the exchange close on the target trading day
2Yahoo Finance Daily close (index level)Within 2 hours of the exchange close
3Stooq Daily closeWithin 6 hours of the exchange close

Fallback rules

  • The authoritative exchange source has not published the official close by the publication deadline → Use the next source in the hierarchy (priority 2), record its URL and the exact retrieval timestamp in this receipt, and mark the source tier. Never substitute a neighbouring trading day.
  • Every source is unavailable or disagrees → Do not resolve. The market stays open and is retried on the next scheduled run; after 5 trading days the determination authority publishes a written determination and a new receipt.
  • A published close is later corrected by the exchange → Issue a corrective receipt that supersedes the original (append-only). The original receipt and its evidence snapshot remain public.

Rounding

half_up · 2 dp — Percentage change is rounded to 2 decimals before bucket mapping

Reference time

Official close of the target trading day (or the most recent prior close on a holiday) · 23:59 exchange local time on the target trading day

Edge cases

  • Exchange holiday or unscheduled closure on the target date — The target observation is the most recent official close on or before the scheduled resolution date; the receipt records the actual close date, not the scheduled date.
  • Early close (half-day session) — The official close of that shortened session counts; no adjustment is made.
  • Trading halt at the scheduled close — The exchange’s official closing value for that session counts, including a halted close if the exchange publishes one.
  • Index methodology or constituent change between the reference and target dates — The published index level is used as-is. Methodology changes are not normalised out; the question text states this when a rebalance is scheduled.
  • Two sources disagree by more than 0.01% — The higher-priority source wins and the discrepancy is recorded in the receipt snapshot. If priority 1 is unavailable, the discrepancy is disclosed on the receipt page.
  • Ticker or index name changes — The event ID is permanent. A renamed ticker keeps the same event ID and the change is recorded in the definition changelog.
Dispute window: 72hDetermination authority: RainMuin Standards Registry (acting as determination agent for its own venues)
1.0.0 (2026-10-21): Initial publication.
Nikkei 225 official close
RMN-EQ-N225-CLOSE · rmn.eq.nikkei225.close@1.0.0
Expand
Subject: Nikkei 225 ^N225 · TSE
Metric: pct_change = (close_target − close_reference) / close_reference × 100

Source hierarchy

PriorityPublisherFieldFinal as of
1Nikkei Inc. Official index closing levelAt the exchange close on the target trading day
2Yahoo Finance Daily close (index level)Within 2 hours of the exchange close
3Stooq Daily closeWithin 6 hours of the exchange close

Fallback rules

  • The authoritative exchange source has not published the official close by the publication deadline → Use the next source in the hierarchy (priority 2), record its URL and the exact retrieval timestamp in this receipt, and mark the source tier. Never substitute a neighbouring trading day.
  • Every source is unavailable or disagrees → Do not resolve. The market stays open and is retried on the next scheduled run; after 5 trading days the determination authority publishes a written determination and a new receipt.
  • A published close is later corrected by the exchange → Issue a corrective receipt that supersedes the original (append-only). The original receipt and its evidence snapshot remain public.

Rounding

half_up · 2 dp — Percentage change is rounded to 2 decimals before bucket mapping

Reference time

Official close of the target trading day (or the most recent prior close on a holiday) · 23:59 exchange local time on the target trading day

Edge cases

  • Exchange holiday or unscheduled closure on the target date — The target observation is the most recent official close on or before the scheduled resolution date; the receipt records the actual close date, not the scheduled date.
  • Early close (half-day session) — The official close of that shortened session counts; no adjustment is made.
  • Trading halt at the scheduled close — The exchange’s official closing value for that session counts, including a halted close if the exchange publishes one.
  • Index methodology or constituent change between the reference and target dates — The published index level is used as-is. Methodology changes are not normalised out; the question text states this when a rebalance is scheduled.
  • Two sources disagree by more than 0.01% — The higher-priority source wins and the discrepancy is recorded in the receipt snapshot. If priority 1 is unavailable, the discrepancy is disclosed on the receipt page.
  • Ticker or index name changes — The event ID is permanent. A renamed ticker keeps the same event ID and the change is recorded in the definition changelog.
Dispute window: 72hDetermination authority: RainMuin Standards Registry (acting as determination agent for its own venues)
1.0.0 (2026-10-21): Initial publication.
Bovespa official close
RMN-EQ-BVSP-CLOSE · rmn.eq.bovespa.close@1.0.0
Expand
Subject: Bovespa ^BVSP · B3
Metric: pct_change = (close_target − close_reference) / close_reference × 100

Source hierarchy

PriorityPublisherFieldFinal as of
1B3 S.A. — Brasil, Bolsa, Balcão Official index closing levelAt the exchange close on the target trading day
2Yahoo Finance Daily close (index level)Within 2 hours of the exchange close
3Stooq Daily closeWithin 6 hours of the exchange close

Fallback rules

  • The authoritative exchange source has not published the official close by the publication deadline → Use the next source in the hierarchy (priority 2), record its URL and the exact retrieval timestamp in this receipt, and mark the source tier. Never substitute a neighbouring trading day.
  • Every source is unavailable or disagrees → Do not resolve. The market stays open and is retried on the next scheduled run; after 5 trading days the determination authority publishes a written determination and a new receipt.
  • A published close is later corrected by the exchange → Issue a corrective receipt that supersedes the original (append-only). The original receipt and its evidence snapshot remain public.

Rounding

half_up · 2 dp — Percentage change is rounded to 2 decimals before bucket mapping

Reference time

Official close of the target trading day (or the most recent prior close on a holiday) · 23:59 exchange local time on the target trading day

Edge cases

  • Exchange holiday or unscheduled closure on the target date — The target observation is the most recent official close on or before the scheduled resolution date; the receipt records the actual close date, not the scheduled date.
  • Early close (half-day session) — The official close of that shortened session counts; no adjustment is made.
  • Trading halt at the scheduled close — The exchange’s official closing value for that session counts, including a halted close if the exchange publishes one.
  • Index methodology or constituent change between the reference and target dates — The published index level is used as-is. Methodology changes are not normalised out; the question text states this when a rebalance is scheduled.
  • Two sources disagree by more than 0.01% — The higher-priority source wins and the discrepancy is recorded in the receipt snapshot. If priority 1 is unavailable, the discrepancy is disclosed on the receipt page.
  • Ticker or index name changes — The event ID is permanent. A renamed ticker keeps the same event ID and the change is recorded in the definition changelog.
Dispute window: 72hDetermination authority: RainMuin Standards Registry (acting as determination agent for its own venues)
1.0.0 (2026-10-21): Initial publication.

Generic resolution

Every market without a family definition still binds to a versioned spec, with its declared resolution source as the authority of record.

Generic market resolution
RMN-GENERIC-RESOLUTION · rmn.generic.market@1.0.0
Expand
Metric: The outcome whose stated condition is satisfied by the declared source at the reference time.

Source hierarchy

PriorityPublisherFieldFinal as of
1Declared on the market markets.resolution_sourceAt the reference time stated in the market description

Fallback rules

  • The declared source is unavailable, ambiguous or contradicts the question text → The determination authority reviews the market in public and publishes a written determination with a resolution receipt. No silent resolution.
  • The event did not occur by the scheduled resolution date → Resolve to the outcome consistent with the question; if the question is void, mark it void rather than guessing.

Rounding

none · 0 dp — Not applicable to categorical outcomes

Reference time

The moment stated in the market description · Within 24 hours of the scheduled resolution time

Edge cases

  • Ambiguous question wording — The published definition version in force at market creation prevails over later interpretation.
  • Source publishes a correction — A corrective receipt supersedes the original; both remain public.
Dispute window: 72hDetermination authority: RainMuin Standards Registry
1.0.0 (2026-10-21): Initial publication.

Resolution spec (JSON Schema 2020-12)

The object stored in markets.resolution_spec and quoted by every receipt.

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://rainmuin.com/standards/event-definition/v1/schema.json",
  "title": "RainMuin Event Definition v1 — Resolution Spec",
  "description": "A machine-readable binding between a market and a published event definition: ordered data sources, fallback rules, rounding, reference time, edge cases and the dispute window.",
  "type": "object",
  "required": [
    "spec_id",
    "spec_version",
    "event_id",
    "sources",
    "fallback",
    "rounding",
    "reference_time",
    "edge_cases",
    "dispute_window_hours"
  ],
  "additionalProperties": false,
  "properties": {
    "spec_id": {
      "type": "string",
      "pattern": "^rmn\\.[a-z0-9._-]+$"
    },
    "spec_version": {
      "type": "string",
      "pattern": "^\\d+\\.\\d+\\.\\d+$"
    },
    "event_id": {
      "type": "string",
      "pattern": "^RMN-[A-Z0-9-]+$"
    },
    "sources": {
      "type": "array",
      "minItems": 1,
      "items": {
        "type": "object",
        "required": [
          "publisher",
          "url",
          "field",
          "priority",
          "as_of",
          "timezone"
        ],
        "additionalProperties": false,
        "properties": {
          "publisher": {
            "type": "string",
            "minLength": 1
          },
          "url": {
            "type": "string",
            "format": "uri"
          },
          "field": {
            "type": "string",
            "minLength": 1
          },
          "priority": {
            "type": "integer",
            "minimum": 1
          },
          "as_of": {
            "type": "string",
            "minLength": 1
          },
          "timezone": {
            "type": "string",
            "minLength": 1
          }
        }
      }
    },
    "fallback": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "when",
          "action"
        ],
        "additionalProperties": false,
        "properties": {
          "when": {
            "type": "string",
            "minLength": 1
          },
          "action": {
            "type": "string",
            "minLength": 1
          }
        }
      }
    },
    "rounding": {
      "type": "object",
      "required": [
        "mode",
        "decimals",
        "at"
      ],
      "additionalProperties": false,
      "properties": {
        "mode": {
          "enum": [
            "half_up",
            "half_even",
            "down",
            "up",
            "none"
          ]
        },
        "decimals": {
          "type": "integer",
          "minimum": 0,
          "maximum": 8
        },
        "at": {
          "type": "string",
          "minLength": 1
        }
      }
    },
    "reference_time": {
      "type": "object",
      "required": [
        "observation",
        "publication_deadline",
        "timezone"
      ],
      "additionalProperties": false,
      "properties": {
        "observation": {
          "type": "string",
          "minLength": 1
        },
        "publication_deadline": {
          "type": "string",
          "minLength": 1
        },
        "timezone": {
          "type": "string",
          "minLength": 1
        }
      }
    },
    "edge_cases": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "case",
          "treatment"
        ],
        "additionalProperties": false,
        "properties": {
          "case": {
            "type": "string",
            "minLength": 1
          },
          "treatment": {
            "type": "string",
            "minLength": 1
          }
        }
      }
    },
    "dispute_window_hours": {
      "type": "integer",
      "minimum": 0,
      "maximum": 720
    }
  }
}