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

Treasury-Share Method for Options/Warrants

Install and import#

bash
npm install fintech-algorithms
ts
import { calculateTreasuryShareMethod } from "fintech-algorithms/earnings-and-per-share-analytics/basic-and-diluted-eps/treasury-share-method-for-options-warrants";

Signature#

calculateTreasuryShareMethod(input)

The treasury share method for options and warrants: assume exercise, assume the proceeds buy back shares at the average market price, count only the net new shares. Using the period-end price instead of the average is the standard error, and it changes the answer.

Parameters#

NameTypeNotes
inputTreasuryShareInputInstrument terms with period_application — instruments outstanding for part of the period are weighted for that part only, not counted in full.

Returns#

{ metric, instrument_type, incremental_shares, dilutive, diluted_eps, … }

The incremental share count and the dilution determination, with every intermediate the calculation passed through.

Errors#

  • When the average market price is missing or not positive — reported as a status rather than thrown

Complexity: time O(1), space O(1).

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
{
  "entity_id": "EXAMPLE-PLC",
  "instrument_id": "2024-WARRANTS",
  "instrument_type": "WARRANT",
  "period_start": "2025-01-01",
  "period_end": "2025-12-31",
  "as_of": "2026-02-20T16:30:00Z",
  "accounting_framework": "IFRS",
  "period_application": "IFRS_DIRECT_PERIOD",
  "currency": "USD",
  "basic_control_numerator": "120",
  "basic_weighted_average_shares": "50",
  "earnings_scale": "1000000",
  "share_scale": "1000000",
  "ordinary_shares_under_instrument": "10"
}

Showing 14 of 51 fields.

Call#

calculateTreasuryShareMethod(input)

Returns#

object with 53 fields: metric, entity_id, instrument_id, instrument_type, period_start, period_end, as_of, accounting_framework, …

{
  "metric": "treasury_share_method_options_warrants",
  "entity_id": "EXAMPLE-PLC",
  "instrument_id": "2024-WARRANTS",
  "instrument_type": "WARRANT",
  "period_start": "2025-01-01",
  "period_end": "2025-12-31",
  "as_of": "2026-02-20T16:30:00Z",
  "accounting_framework": "IFRS",
  "period_application": "IFRS_DIRECT_PERIOD",
  "currency": "USD",
  "basic_control_numerator_base": "120000000",
  "basic_weighted_average_shares_base": "50000000",
  "shares_under_instrument_base": "10000000",
  "cash_exercise_price_per_share": "15"
}

Showing 14 of 53 fields.

Diagrams#

Treasury-Share Method for Options/Warrants — treasury share bridge

Calculation flow#

Treasury-share method decision flow
flowchart TD
    F{"Which accounting framework?"} -->|IAS 33| FI["Use IAS 33 assumed-proceeds treatment and IFRS 2 future-service value"]
    F -->|US GAAP| FG["Use treasury stock method and average unrecognized compensation; exclude excess tax benefits"]
    F -->|Declared local| FO["Load documented local proceeds and period policy"]
    FI --> A["Receive one fixed option or warrant series"]
    FG --> A
    FO --> A
    A --> B{"One non-contingent series, unchanged terms, complete sources?"}
    B -->|No| R["Reject incomplete contract"]
    B -->|Yes| P{"Framework and period application compatible?"}
    P -->|No| V["Route to required period aggregation variant"]
    P -->|Yes| T["Weight gross shares while instrument is outstanding"]
    T --> E["Effective price = cash + permitted service + permitted tax + declared-other proceeds"]
    E --> M{"Average market price exceeds effective price?"}
    M -->|No| X["Zero incremental shares; exclude"]
    M -->|Yes| S["Repurchase shares = gross weighted shares × effective price / market price"]
    S --> I["Incremental shares = gross weighted shares − repurchase shares"]
    I --> C["Candidate EPS = unchanged Basic numerator / Basic shares + incremental shares"]
    C --> D{"Exact candidate below exact Basic EPS?"}
    D -->|Yes| Y["Dilutive: include standalone series"]
    D -->|No or equal| N["Antidilutive: exclude"]

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#

  • R01 - IAS 33 Earnings per Share
  • R02 - FASB ASU 2020-06, Debt with Conversion and Other Options
  • R03 - FASB ASU 2016-09, Improvements to Employee Share-Based Payment Accounting
  • Research reconciliation
  • Historical evidence status

The rest of the Basic and Diluted EPS family#