fintech-algorithms
Using a coding agent? Give it the skill: npx skills add IslamBaraka90/Fintech-Algorithms-Library What it does →

Stock-Split/Consolidation EPS Restatement

Install and import#

bash
npm install fintech-algorithms
ts
import { restateEpsForCapitalEvents } from "fintech-algorithms/earnings-and-per-share-analytics/earnings-and-share-foundations/stock-split-consolidation-eps-restatement";

Signature#

restateEpsForCapitalEvents(input)

Restates EPS for splits and consolidations across every period presented. Accounting standards require retrospective restatement — comparatives must be restated too, and a table where only the current period was adjusted is wrong in a way that looks like growth.

Parameters#

NameTypeNotes
inputRestatementInputaccounting_framework selects IFRS or US GAAP treatment. The scale and rounding fields (earnings_scale, share_scale, share_decimal_places, eps_decimal_places, rounding_mode) are part of the contract because published EPS is a rounded figure and reproducing it requires the same rounding.

Returns#

{ metric, accounting_framework, currency, status, rows }

Restated figures per period with the framework and rounding that produced them.

Errors#

  • When the accounting framework or rounding mode is unrecognised — throws

Complexity: time O(periods × events), space O(periods).

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
{
  "accounting_framework": "IFRS",
  "currency": "USD",
  "statements_authorized_for_issue_date": "2026-02-20",
  "earnings_scale": "1000",
  "share_scale": "1000",
  "share_decimal_places": 0,
  "eps_decimal_places": 4,
  "rounding_mode": "half_even",
  "restatement_policy": "Apply IAS 33.64 retrospectively through authorization.",
  "event_source_policy": "Board-approved and legally effective capital events.",
  "events": [
    {
      "event_id": "SPLIT-2026-01",
      "effective_date": "2026-01-15",
      "event_type": "stock_split",
      "post_split_shares": "2",
      "pre_split_shares": "1",
      "event_is_effective": true,
      "changes_resources": false
    }
  ],
  "periods": [
    {
      "period_id": "FY2025",
      "period_start": "2025-01-01",
      "period_end": "2025-12-31",
      "basis_date": "2025-12-31",
      "basis_is_uniform": true,
      "earnings_available_to_ordinary_shareholders": "8000",
      "weighted_average_ordinary_shares": "2000",
      "is_final": true
    }
  ]
}

Call#

restateEpsForCapitalEvents(input)

Returns#

object with 6 fields: metric, accounting_framework, currency, statements_authorized_for_issue_date, status, rows

{
  "metric": "stock_split_consolidation_eps_restatement",
  "accounting_framework": "IFRS",
  "currency": "USD",
  "statements_authorized_for_issue_date": "2026-02-20",
  "status": "final",
  "rows": [
    {
      "period_id": "FY2025",
      "period_start": "2025-01-01",
      "period_end": "2025-12-31",
      "source_basis_date": "2025-12-31",
      "applied_event_ids": ["SPLIT-2026-01"],
      "factor_numerator": "2",
      "factor_denominator": "1",
      "earnings_available_to_ordinary_shareholders": "8000000",
      "pre_restatement_shares": "2000000",
      "restated_shares": "4000000",
      "pre_restatement_basic_eps": "4.0000",
      "restated_basic_eps": "2.0000",
      "share_rounding_adjusted": false,
      "eps_rounding_adjusted": false
    }
  ]
}

Diagrams#

Stock-Split/Consolidation EPS Restatement — post period restatement timeline
Stock-Split/Consolidation EPS Restatement — split direction bridge

Calculation flow#

Post-period authorization window
sequenceDiagram
  participant P as "FY2025 ends"
  participant S as "2-for-1 split"
  participant A as "Statements authorized"
  P->>S: "2025-12-31"
  S->>A: "Effective 2026-01-15"
  A-->>P: "Present FY2025 on the new share basis"
Restatement calculation flow
flowchart LR
  A["Validated period row"] --> B["Read uniform source basis date"]
  E["Effective ordered events through authorization"] --> C["Select events after basis date"]
  B --> C
  C --> D["Multiply exact factors"]
  D --> F["Restated shares = source shares × factor"]
  A --> G["Preserve earnings numerator"]
  F --> H["Restated EPS = earnings ÷ restated shares"]
  G --> H
  H --> I["Round display fields and emit diagnostics"]

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#

  • Primary accounting sources
  • Historical case sources
  • Technical sources
  • Applicability and limitations

The rest of the Earnings and Share Foundations family#