What (One-liner)
A lightweight narrative intensity heuristic (type-token ratio + length + token density weighted) + optional topic overlap / break detection (Jaccard). Used for quick narrative monitoring of central bank statements, research reports, news texts.
How to use
Drag b0_narrative_v1 into Canvas, fill in text (required) and optionally reference_text (for topic comparison). Outputs token_count / TTR / narrative_intensity (0-1) + optional Jaccard / topic_break.
Core formulas
TTR = unique_tokens / total_tokens
length_norm = min(len(text) / 4000, 1)
intensity = min(1, 0.45·TTR + 0.35·sqrt(length_norm) + 0.2·min(n/500, 1))
# Optional (when reference_text provided):
Jaccard = |set(A) ∩ set(B)| / |set(A) ∪ set(B)|
topic_break = 1 - JaccardAssumptions & applicability
Assumptions: Token-level heuristics are sufficient to roughly reflect narrative intensity; no need for deep semantics (that's FinBERT's job, Tier 2+ upgrade path).
Applicability: English / Chinese news / central bank statements / research reports / long text comments.
Not applicable: Short texts (<50 tokens), structured data, multilingual mixed text, pure numbers / tables.
Input / Output contract
See frontmatter. Note scale: The output field is named narrative_intensity_0_1, with a value range of [0, 1] (not BLCV's 0-100 scale). The naming convention itself implies this — consumers should not multiply by 100.
Known limitations
- Lexical heuristic does not understand semantics ('not bullish' vs 'bullish' are indistinguishable)
- Weights 0.45/0.35/0.2 are empirically tuned
- Tokenizer regex may miss emojis / URLs
- Jaccard is sensitive to length differences (biased low)
- Scale convention is 0-1, naming has been indicated — do not confuse with BLCV's 0-100 scale
References
Shiller (2017) Narrative Economics + Loughran & McDonald (2011) financial text TTR. See frontmatter for details.
Golden Test
tests/golden/fixtures/tier1/b0_narrative/, 1e-12 tolerance, 3 tests (matches_reference / empty_text / with_reference_jaccard). Passing as of 2026-04-20.
Changelog
- 1.0.0 (2026-04-20) — Initial Active release

