Event Definition v1
1.0.0What 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.
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 closeRMN-EQ-NDX-CLOSE · rmn.eq.nasdaq100.close@1.0.0Expand
Source hierarchy
| Priority | Publisher | Field | Final as of |
|---|---|---|---|
| 1 | Nasdaq Global Indexes | Official index closing level | At the exchange close on the target trading day |
| 2 | Yahoo Finance | Daily close (index level) | Within 2 hours of the exchange close |
| 3 | Stooq | Daily close | Within 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.
KOSPI official closeRMN-EQ-KOSPI-CLOSE · rmn.eq.kospi.close@1.0.0Expand
Source hierarchy
| Priority | Publisher | Field | Final as of |
|---|---|---|---|
| 1 | Korea Exchange (KRX) | Official index closing level | At the exchange close on the target trading day |
| 2 | Yahoo Finance | Daily close (index level) | Within 2 hours of the exchange close |
| 3 | Stooq | Daily close | Within 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.
Nikkei 225 official closeRMN-EQ-N225-CLOSE · rmn.eq.nikkei225.close@1.0.0Expand
Source hierarchy
| Priority | Publisher | Field | Final as of |
|---|---|---|---|
| 1 | Nikkei Inc. | Official index closing level | At the exchange close on the target trading day |
| 2 | Yahoo Finance | Daily close (index level) | Within 2 hours of the exchange close |
| 3 | Stooq | Daily close | Within 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.
Bovespa official closeRMN-EQ-BVSP-CLOSE · rmn.eq.bovespa.close@1.0.0Expand
Source hierarchy
| Priority | Publisher | Field | Final as of |
|---|---|---|---|
| 1 | B3 S.A. — Brasil, Bolsa, Balcão | Official index closing level | At the exchange close on the target trading day |
| 2 | Yahoo Finance | Daily close (index level) | Within 2 hours of the exchange close |
| 3 | Stooq | Daily close | Within 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.
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 resolutionRMN-GENERIC-RESOLUTION · rmn.generic.market@1.0.0Expand
Source hierarchy
| Priority | Publisher | Field | Final as of |
|---|---|---|---|
| 1 | Declared on the market | markets.resolution_source | At 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.
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
}
}
}