Skip to main content

Methodology — v2.10

The audit trail behind filing-derived data.

Filing-derived metrics retain available source references. Page links appear only when metadata, a matching document, and access permit them. This page documents those controls; the covered universe is listed at /coverage.

Source ledger

Where the data comes from.

Five source streams carry distinct provenance and refresh cadences.

Issuer filings

Annual reports, MD&A, interim reports, and statements from issuer disclosures or the public document aggregator used for discovery. We do not scrape SEDAR+, estimate, or interpolate filing metrics. Available references stay attached.

Earnings call transcripts

Earnings-event transcripts become 4-section summaries: call narrative, executive commentary, guidance, and analyst Q&A. Where an audit runs, deterministic checks trace quotes and figures to the source; unresolved items may receive a second pass. The ledger below reports completed audits.

Daily news synthesis

Provider-backed pulls produce daily, one-row-per-REIT news summaries across the 32 Canadian REITs.

Prices and FX

Daily yfinance and OpenExchangeRates refresh. Prices are delayed and updated daily.

Bottom-up market data

For our Research reports, city and sector reads cover cap rates, vacancy, rents, and quarterly changes from public data and editorial analysis.

What we don’t use

For REIT fundamentals, we do not license a broad-market terminal feed. The dataset is built from primary documents and our own extraction work.

Extraction controls

How we extract.

An LLM-assisted pipeline reads each REIT’s MD&A into normalized JSON under v2.10: 21 top-level properties, 12 required sections, and structured reconciliations. Reusable values carry {value, source, notes}; an optional pdf_page records a page where structured metadata exists.

Three deterministic gates wrap the LLM step. They catch confident-but-wrong extraction failures before publication.

Validation gate

Regex pre-fill

A deterministic parser reads the consolidated balance sheet into a confidence-scored pre-fill. Results below 0.8 use a separate extractor fallback before selected fields enter the final JSON.

Validation gate

Schema and sanity validation

Each extraction faces the v2.10 JSON Schema plus deterministic hard-fail and warning rules. Hard failures stop scoring; warnings remain visible for review.

Validation gate

Four-dimension scoring rubric (self-scored)

Validated extractions receive four internal dimension scores, published below by REIT and period.

Completeness

Weights population across 49 core scalar fields, with smaller deductions for selected dynamic sections. Explained or not-applicable nulls receive reduced or no penalty.

Accuracy

Uses up to 14 weighted cross-field checks plus validator warnings; missing-input checks are skipped.

Source quality

Scores source population and citation format: year, document type, page, and section markers.

Notes quality

Rewards substantive notes on ambiguity, judgment, and cross-period adjustments; empty notes reduce the score.

Self-scored weighting. 35% Accuracy + 30% Completeness + 20% Source quality + 15% Notes quality. Accuracy gets the highest weight because it carries the clearest wrong-number risk.

Canadian non-GAAP framework

How FFO and AFFO align to REALPAC.

REALPAC’s January 2022 FFO and AFFO white paper is the Canadian reference for these non-GAAP measures. REIT Stack organizes FFO, AFFO, per-unit figures, payout ratios, and the IFRS net income reconciliation around it. Issuer filings remain the source of record.

Issuer-reported measures pass through

REIT Stack retains issuer-reported FFO, AFFO, per-unit amounts, payout ratios, reconciliations, and source context. Storage normalizes numeric representation; it does not rewrite issuer adjustments into one house definition.

Calculated views use the reported base

FFO/AFFO yields, P/FFO and P/AFFO multiples, and derived payout ratios use reported inputs and stated denominators. Calculated views do not change issuer definitions.

Comparability has a boundary

Issuer definitions differ, especially for AFFO and adjusted variants. We keep variants and reconciliations distinct so readers can inspect maintenance capital, leasing costs, straight-line rent, and other disclosed adjustments.

Extraction ledger — 32 scored

Current internal composite extraction score (self-scored).

Latest available score per active REIT — median internal composite extraction score (self-scored) across 32 extractions: 8.6/10.

Calculated using REIT Stack’s published four-dimension rubric; not an independent accuracy measure. Freshest scored period represented in this set: 2026 Q2.

32
Actively tracked Canadian REITs
8.6/10
Median internal composite extraction score (self-scored)
Across 32 REITs
29/32
REITs scored ≥ 8.0
2026-08-24
Latest refresh

Composite-score distribution (self-scored)

10.0
0
9.0–9.9
12
8.0–8.9
17
Below 8.0
3
REITPeriodComposite (self-scored)CompletenessAccuracySourceNotes
AP.UN 2026 Q29.58.69.99.910.0
PMZ.UN 2026 Q19.38.69.59.710.0
CRT.UN 2026 Q19.27.510.09.510.0
D.UN 2026 Q29.28.19.79.610.0
FCR.UN 2026 Q19.27.710.09.210.0
HOM.UN 2026 Q19.28.110.09.39.5
SGR.UN 2026 Q19.28.710.08.210.0
APR.UN 2026 Q19.18.29.59.110.0
CAR.UN 2026 Q19.17.410.09.610.0
PLZ.UN 2026 Q19.18.38.810.010.0
BEI.UN 2026 Q19.07.99.59.210.0
MHC.UN 2026 Q19.07.410.09.110.0
GRT.UN 2026 Q28.98.39.28.410.0
CRR.UN 2026 Q18.88.68.39.310.0
VITL.UN 2026 Q28.88.48.59.010.0
FCD.UN 2026 Q28.67.58.59.510.0
KMP.UN 2026 Q18.67.39.57.710.0
BTB.UN 2026 Q28.58.17.98.810.0
NXR.UN 2026 Q28.57.98.88.19.5
SRU.UN 2026 Q18.56.210.08.39.6
CSH.UN 2026 Q18.46.69.28.510.0
HR.UN 2026 Q28.48.27.29.510.0
REI.UN 2026 Q18.47.29.48.87.7
MI.UN 2026 Q18.38.18.08.19.9
NET.UN 2026 Q18.37.29.07.410.0
PRV.UN 2026 Q28.17.87.38.710.0
CHP.UN 2026 Q28.07.47.38.610.0
MRG.UN 2026 Q18.06.98.27.810.0
MRT.UN 2026 Q28.08.06.19.610.0
NRR.UN 2026 Q17.97.07.38.910.0
MPCT.UN 2026 Q27.46.95.88.810.0
DIR.UN 2026 Q27.36.07.28.58.4

On the below-8.0 scores in the table above. From the 2026 Q1 batch onwards, a self-scored composite below 8.0 is flagged for re-extraction. FY 2024 and FY 2025 used a looser threshold and retain their original scores with the flag visible.

Screening signal

Distribution-safety methodology.

One rules-based function turns latest filing data into Covered, Watch, Elevated risk, or Insufficient data across the screener, fact sheets, and REIT-detail card.

Payout basis

The engine checks reported AFFO payout, derived AFFO payout, reported FFO payout, then derived FFO payout. No computable reading returns Insufficient data.

Risk escalators

A sustained cut, elevated debt-to-assets with thin payout cushion, and a rising near-ceiling payout can only increase risk.

Screening signal

Not a credit rating, price target, or recommendation: a first-pass signal for closer source-backed review.

Public fact sheets show headline inputs and drivers; member pages add deeper source and period context.

Transcript ledger

Earnings-transcript audit results.

When a stored summary is audited, deterministic checks trace quotes and figures to the transcript and validate its schema. Uncertain items may receive a judge-reviewed second pass. The figures below cover only recorded audits; they do not claim every summary passed.

334
Summaries audited
99%
Deterministic checks passed
296/334
Reviewed by judge
542/39645
Figures flagged

Correction intake

Report a discrepancy.

Check cited figures against their source. Report mismatches through the contact form under “Report a data discrepancy.” Include the REIT ticker, metric, reporting period, and filing value. Confirmed material errors are published in the public error log.

Public corrections

The public error log.

This log records errors that could change an investment-relevant interpretation. It excludes typos, formatting, and non-material noise.

2025 Q3ERE.UN

ASR magnitude error — EUR 90 vs EUR 0.90 per unit

The Q3 2025 transcript ASR rendered a special distribution as 'EUR 90 per unit.' The initial extraction summarized this verbatim into the 4-section earnings JSON. The actual figure was EUR 0.90 — a 100× error. Caught by manual audit during weekly review, before publication. The current scorer includes a DPU × weighted-average diluted units versus reported total distributions consistency check when all required inputs are present.

2026 Q2Coverage purge

277 transcript stubs removed

A coverage audit revealed that 277 of 462 stored transcripts in our database were paywall remnants — ~1.5KB documents ending in 'Upgrade to unlock.' The summarizer had produced confident JSON from incomplete sources. None of the affected summaries had been published — they sat in a staging table — but the failure mode was real. All 277 stubs purged. Source-verification step added: any transcript under 5KB is now flagged for manual review before downstream summarization.

OpenNews synthesis

Citation provenance — open methodological gap

Our daily news synthesis uses Grok and Perplexity. Briefings are audit-checked against their sources before publishing. Default publish paths refuse missing or blocked audits; the audit traces figures, dates, and URLs against source markdown and checks framing and citations. The unresolved gap: we don't independently verify the citations these tools include in their raw output before they enter the reit_news table. We flag this as an open methodological item rather than a closed one.

Claim boundary

What we don’t claim.

We don’t claim our data is right. We claim it’s auditable — extracted filing metrics retain a source reference, published extractions carry an internal composite score (self-scored), and material errors are documented in a public log. The comparability and transparency are downstream of the audit trail, not separate brand pillars.

Rendered source links connect a figure to its document; page details appear where structured metadata exists.

Version ledger

Methodology version history.

Milestone versions only. The complete field set and full version history live in the extraction schema itself.

v2.10current

Adds optional period-end unit and debenture fields, structured non-controlling-interest components, IFRS 7 debt fair-value disclosures, a basis-of-total-NOI field, and row-level disclosure status on valuation rates, market asset types, and leasing segments. The extractor now reads the interim or annual companion report alongside the MD&A so IAS 40 and IFRS 7 notes are in scope. Validation gains a prior-period regression guard and table presence checks; completeness scoring gains market-exposure coverage. All added fields are optional — v2.9 extractions remain valid.

v2.9

Added an explicit adjusted-EBITDA disclosure-basis field, recording whether a REIT's adjusted EBITDA and debt-to-EBITDA disclosure is a standalone quarter, year-to-date, or rolling twelve months.

v2.4

Introduced the optional structured pdf_page field on reusable value objects; retained here as a historical milestone.

v2.3

4-bucket rate guard plus explicit currency/scale and notes-policy hardening. Introduces the self-scored 4-dimension rubric.

v2.2

Gap-audit deltas: hard rules for null classification and provenance triples.