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

Dividend Safety Score

Install and import#

bash
npm install fintech-algorithms
ts
import { dividendSafetyScore } from "fintech-algorithms/fundamental-analysis-and-valuation/integrated-equity-scoring/dividend-safety-score";

Signature#

dividendSafetyScore(data)

Scores dividend safety from four capped ratios — free cash flow and net income each against twice the dividend, interest coverage against ten times, and cash against four times the dividend — blended into one weighted score.

Parameters#

NameTypeNotes
data{ free_cash_flow: number; dividends_paid: number; net_income: number; interest_coverage: number; cash_and_equivalents: number }dividends_paid is the denominator of the coverage ratios and must be positive. free_cash_flow and net_income are finite and may be negative; interest_coverage and cash_and_equivalents must not be negative.

Returns#

{ state: string; method: string; components: { free_cash_flow_coverage: number; earnings_coverage: number; interest_coverage: number; cash_buffer: number }; weights: Record<string, number>; contributions: Record<string, number>; dividend_safety_score: number; band: string; coverage_policy: string }

components holds the four ratios each clamped to 0 to 100, weights gives 0.35 to free_cash_flow_coverage, 0.25 to earnings_coverage and 0.2 each to interest_coverage and cash_buffer, contributions is each component times its weight, and dividend_safety_score is their sum. band is strong at 75 or above, watch at 50 or above, otherwise weak.

Errors#

  • When any of free_cash_flow, dividends_paid, net_income, interest_coverage or cash_and_equivalents is not a finite number — throws TypeError
  • When dividends_paid is not positive — throws RangeError
  • When interest_coverage or cash_and_equivalents is negative — throws RangeError

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#

data
{
  "free_cash_flow": 180,
  "dividends_paid": 60,
  "net_income": 150,
  "interest_coverage": 6,
  "cash_and_equivalents": 180
}

Call#

dividendSafetyScore(data)

Returns#

object with 8 fields: state, method, components, weights, contributions, dividend_safety_score, band, coverage_policy

{
  "state": "calculated",
  "method": "coverage-and-liquidity-dividend-safety",
  "components": {
    "free_cash_flow_coverage": 100,
    "earnings_coverage": 100,
    "interest_coverage": 60,
    "cash_buffer": 75
  },
  "weights": {
    "free_cash_flow_coverage": 0.35,
    "earnings_coverage": 0.25,
    "interest_coverage": 0.2,
    "cash_buffer": 0.2
  },
  "contributions": {
    "free_cash_flow_coverage": 35,
    "earnings_coverage": 25,
    "interest_coverage": 12,
    "cash_buffer": 15
  },
  "dividend_safety_score": 87,
  "band": "strong",
  "coverage_policy": "coverage is capped at two times and cash buffer at four times"
}

Other exports#

This module also exports calculate, pointInTimeStockScoringInputAssembly, stockScoringPeerCohortResolver, fundamentalMetricDirectionAndPeerNormalization, modelApplicabilityAndVariantRouter, accountingFinancialHealthComposite, earningsQualityComposite, balanceSheetResilienceScore, distressModelEnsemble, crossModelConflictAndDoubleCountingResolver, overallExplainableStockScore, scoreConfidenceMissingDataPenaltyAndAbstention, marketWideStockScreeningAndRanking, stockScoreHistoryMigrationAndChangeAttribution. Every module additionally exports run as an alias of its primary function, and a meta object carrying its catalog id, domain, family, shape and article URL.

Diagrams#

Dividend Safety Score — evidence clock
Dividend Safety Score — model anatomy
Dividend Safety Score — system map
Dividend Safety Score — threshold and interpretation
Dividend Safety Score — variant boundaries

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#

The rest of the Integrated Equity Scoring family#