If-Converted Convertible-Preference Dilution
Install and import#
npm install fintech-algorithmsimport { calculateConvertiblePreferenceDilution } from "fintech-algorithms/earnings-and-per-share-analytics/basic-and-diluted-eps/if-converted-convertible-preference-dilution";Signature#
calculateConvertiblePreferenceDilution(input)The if-converted method for convertible preference shares: assume conversion, add the shares, add back the preference dividend. Conversion is only included when it is **dilutive** — an anti-dilutive instrument is excluded, and including it overstates EPS.
Parameters#
| Name | Type | Notes |
|---|---|---|
input | DilutionInput | The instrument's conversion terms plus basic_control_numerator and basic_weighted_average_shares, which are the control figures the dilution test is measured against. |
Returns#
{ metric, loss_making_period_flag, dilutive, diluted_eps, … }
The diluted figure with an explicit dilutive/anti-dilutive determination, and a loss-making flag — in a loss period potential shares are anti-dilutive by definition, which reverses the usual test.
Errors#
- When the conversion ratio 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#
{
"entity_id": "EXAMPLE-PLC",
"instrument_id": "SERIES-A-CPS",
"period_start": "2025-01-01",
"period_end": "2025-12-31",
"as_of": "2026-02-20T16:30:00Z",
"accounting_framework": "IFRS",
"currency": "USD",
"basic_control_numerator": "90",
"basic_weighted_average_shares": "30",
"earnings_scale": "1000000",
"share_scale": "1000000",
"preferred_dividend_adjustment_deducted_from_basic": "6",
"other_pre_tax_income_adjustment_if_converted": "0",
"income_tax_effect_of_other_adjustment_if_converted": "0"
}Showing 14 of 45 fields.
Call#
calculateConvertiblePreferenceDilution(input)Returns#
object with 37 fields: metric, entity_id, instrument_id, period_start, period_end, accounting_framework, loss_control_rule, currency, …
{
"metric": "if_converted_convertible_preference_dilution",
"entity_id": "EXAMPLE-PLC",
"instrument_id": "SERIES-A-CPS",
"period_start": "2025-01-01",
"period_end": "2025-12-31",
"accounting_framework": "IFRS",
"loss_control_rule": "candidate_comparison",
"currency": "USD",
"basic_control_numerator_base": "90000000",
"basic_weighted_average_shares_base": "30000000",
"preferred_dividend_addback_base": "6000000",
"other_pre_tax_income_adjustment_base": "0",
"income_tax_effect_of_other_adjustment_base": "0",
"net_numerator_adjustment_base": "6000000"
}Showing 14 of 37 fields.
Diagrams#
Calculation flow#
If-converted preference decision flow
flowchart TD
A["Receive one preferred series and Basic continuing-operations control"] --> B{"Basic, dividend, share basis, and terms complete?"}
B -->|No| R["Reject incomplete contract"]
B -->|Yes| P{"Participating, partial, contingent-unresolved, or variable terms?"}
P -->|Participating| T["Route to D46-F02-A05 two-class resolution"]
P -->|Unresolved| U["Resolve framework, contingency, tranche, and holder-advantageous terms"]
P -->|No| S["Exposure start = later of period start and issue date"]
S --> E["Exposure end (exclusive) = earliest of period end + 1, conversion, or lapse"]
E --> W["ΔD = fixed conversion shares × exposure days / period days"]
W --> N["ΔN = Basic-basis dividend + other pre-tax effect + explicit tax effect"]
N --> C["Candidate = (Basic numerator + ΔN) / (Basic shares + ΔD)"]
C --> L{"Declared rule excludes all shares for a control loss?"}
L -->|Yes| X["Framework loss-control exclusion"]
L -->|No| D{"Exact candidate < exact Basic EPS?"}
D -->|Yes| I["Dilutive: include in standalone candidate"]
D -->|No or equal| X["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.
References#
- IAS 33 Earnings per Share
- FASB Statement No. 128, Earnings per Share
- ASU 2020-06, Debt—Debt with Conversion and Other Options and Derivatives and Hedging
- Celsius Holdings, Inc. 2026 first-quarter EPS note
- Research reconciliation