fintech-algorithms

Corporate-Action Status and Effective-Date Reconciliation

Install and import

bash
npm install fintech-algorithms
ts
import { reconcileCorporateAction } from "fintech-algorithms/corporate-actions-and-security-master-data/point-in-time-universe/corporate-action-status-and-effective-date-reconciliation";

Signature

reconcileCorporateAction(input)

Reconstructs the highest-authority corporate-action state knowable at an as-of time while preserving conflicts and terminal messages.

Parameters

NameTypeNotes
inputobjectTopic-specific point-in-time audit contract.

Returns

object

Structured state, audit rows, diagnostics, and provenance.

Complexity: time O(n log n), space O(n).

Worked example

executed Captured by running this function on the input its own test provides. Real output of real code — but not asserted against a published figure.

Input

input
{
  "event_reference": "CA-77",
  "security_id": "SYNTH-XYZ",
  "event_type": "stock-split",
  "as_of": "2026-07-05T12:00:00Z",
  "records": [
    {
      "message_id": "P-1",
      "event_reference": "CA-77",
      "security_id": "SYNTH-XYZ",
      "event_type": "stock-split",
      "source": "provider-feed",
      "source_rank": 1,
      "version": 1,
      "available_at": "2026-07-01T09:00:00Z",
      "announcement_date": "2026-07-01",
      "effective_date": "2026-07-15",
      "status": "preliminary",
      "function": "new",
      "supersedes": null
    },
    {
      "message_id": "E-1",
      "event_reference": "CA-77",
      "security_id": "SYNTH-XYZ",
      "event_type": "stock-split",
      "source": "exchange-notice",
      "source_rank": 2,
      "version": 1,
      "available_at": "2026-07-03T11:00:00Z",
      "announcement_date": "2026-07-01",
      "effective_date": "2026-07-16",
      "status": "confirmed",
      "function": "new",
      "supersedes": null
    },
    {
      "message_id": "I-2",
      "event_reference": "CA-77",
      "security_id": "SYNTH-XYZ",
      "event_type": "stock-split",
      "source": "issuer-notice",
      "source_rank": 3,
      "version": 2,
      "available_at": "2026-07-04T09:00:00Z",
      "announcement_date": "2026-07-01",
      "effective_date": "2026-07-16",
      "status": "confirmed",
      "function": "replacement",
      "supersedes": "I-1"
    }
  ]
}

Call

reconcileCorporateAction(input)

Returns

object with 10 fields: event_reference, security_id, event_type, as_of, state, selected, applicable, conflicts, …

{
  "event_reference": "CA-77",
  "security_id": "SYNTH-XYZ",
  "event_type": "stock-split",
  "as_of": "2026-07-05T12:00:00Z",
  "state": "reconciled-with-conflicts",
  "selected": {
    "message_id": "I-2",
    "source": "issuer-notice",
    "source_rank": 3,
    "version": 2,
    "available_at": "2026-07-04T09:00:00Z",
    "announcement_date": "2026-07-01",
    "effective_date": "2026-07-16",
    "status": "confirmed",
    "function": "replacement",
    "supersedes": "I-1"
  },
  "applicable": false,
  "conflicts": [
    {
      "type": "status-conflict",
      "selected": "confirmed",
      "other": "preliminary",
      "other_source": "provider-feed"
    },
    {
      "type": "effective-date-conflict",
      "selected": "2026-07-16",
      "other": "2026-07-15",
      "other_source": "provider-feed"
    }
  ],
  "eligible_message_ids": ["E-1", "I-2", "P-1"],
  "future_message_ids": []
}

Diagrams

Corporate-Action Status and Effective-Date Reconciliation — system map

Calculation flow

Corporate-action reconciliation flow
flowchart LR
    A["Versioned source messages"] --> B["Filter available_at ≤ as_of"]
    B --> C["Select latest message per source"]
    C --> D["Rank governed source heads"]
    D --> E{"Equal-rank disagreement?"}
    E -->|Yes| F["Unresolved authority tie"]
    E -->|No| G["Select highest authority"]
    G --> H["Retain status and effective-date conflicts"]
    H --> I{"Terminal, incomplete, or future?"}
    I -->|Yes| J["Block application"]
    I -->|No| K["Applicable event state"]
    K --> L["Audit invariant: no future message enters the selected state"]

How it works

This page states the contract — how to call it correctly. The article explains the concept: why it works, and where it breaks.

Read the article →

References

  • ISO 15022 MT 564 scope
  • ISO 15022 MT 564 field 23G
  • ISO 15022 MT 564 field 20C
  • ISO 15022 MT 564 field 98a
  • FINRA Rule 11140
  • Publication decision