Every figure this model derived for CP, the value it took, and
the element in the company's own XBRL it was read from — so any of it can be checked
against the filing rather than taken on trust.
As at 2026-06-30.
The figures, and where each came from
This is the part no other screener shows. Each figure below names the XBRL element it
was read from, so it can be checked against the filing itself.
Figure
Value
XBRL tag
As at
capex
3,070,000,000
PaymentsToAcquirePropertyPlantAndEquipment
2026-06-30
cash
639,000,000
CashAndCashEquivalentsAtCarryingValue
2026-06-30
current assets
3,453,000,000
AssetsCurrent
2026-06-30
current liabilities
5,812,000,000
LiabilitiesCurrent
2026-06-30
equity
46,626,000,000
StockholdersEquity
2026-06-30
interest expense
899,000,000
InterestPaidNet
2026-06-30
ocf
5,500,000,000
NetCashProvidedByUsedInOperatingActivities
2026-06-30
revenue
15,449,000,000
Revenues
2026-06-30
sbc
59,000,000
AllocatedShareBasedCompensationExpense
2025-12-31
The ratios
The figures themselves rather than their scores — what somebody looking up
CP on one particular measure came for.
Ratio
Value
cash operating margin
50.43
current ratio
0.59
current ratio reported
0.59
deferred revenue growth
-25.93
dilution pct
-1.87
fcf margin
15.73
interest cover
6.32
net debt ebitda
3.17
operating margin
36.76
owner earnings margin
15.35
revenue growth
3.57
revenue growth per share
5.54
roic
6.31
rule of 40
40.33
sbc pct revenue
0.38
What to be careful about
What this model itself distrusts about CP's figures. Written by the
derivation as it ran, not added afterwards.
reports in CAD while its share price is quoted in USD, and no exchange rate could be used (no rate for USD to CAD that is less than 30 days old, and this is not a refresh). Every multiple would pair one currency with another, so none of them is a ratio — set `market_cap` in overrides.yaml in CAD to score it
no forward EPS estimate; growth rests on filings only. Analyst consensus is not published in XBRL, so it has to be fetched from a data provider or set by hand in overrides.yaml as `eps_growth_2y`
valuation DROPPED from the total: only 0 of 2 inputs could be computed (ev sales, ev owner earnings not tagged), so the score is not meaningful. Its weight is spread over the other dimensions
durability DROPPED from the total: only 0 of 4 inputs could be computed (worst year, contracted coverage, gross margin stability, cash flow stability not tagged), so the score is not meaningful. Its weight is spread over the other dimensions
growth DROPPED from the total: only 1 of 4 inputs could be computed (sustained growth, margin trend, margin recent not tagged), so the score is not meaningful. Its weight is spread over the other dimensions
3 of 5 dimensions could not be measured (valuation, durability, growth -- 55% of the model), so this row is not comparable with the others; its total rests on what was left