Every figure this model derived for BMHL, 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 2025-03-31.
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
cash
6,084
CashAndCashEquivalents
2025-03-31
current assets
110,532
CurrentAssets
2025-03-31
equity
38,503
Equity
2025-03-31
interest expense
283
FinanceCosts
2025-03-31
ocf
10,518
CashFlowsFromUsedInOperatingActivities
2025-03-31
revenue
53,757
Revenue
2025-03-31
The ratios
The figures themselves rather than their scores — what somebody looking up
BMHL on one particular measure came for.
Ratio
Value
cash operating margin
25.81
fcf margin
19.57
interest cover
49.03
operating margin
25.81
owner earnings margin
19.57
revenue growth
63.65
revenue growth per share
63.65
roic
33.81
rule of 40
89.47
sbc pct revenue
0.0
What to be careful about
What this model itself distrusts about BMHL's figures. Written by the
derivation as it ran, not added afterwards.
newest fact in the filing is 2025-03-31 (1y old); this company's data is not usable and the scores below should be ignored
presents no operating result; summed as revenue minus the costs it does tag (CostOfSales, GeneralAndAdministrativeExpense). Checked against the company's own figures: the answer lands 1.1% of revenue from the 0M pre-tax profit it reports, which is its interest and other non-operating items
revenue is annual, not TTM
operating income is annual, not TTM
revenue period ends 2025-03-31 (517 days ago) - the tag chain found nothing recent, so treat this row as unscored
no current stock compensation tagged; treated as zero, so owner earnings are overstated
no current capital expenditure tagged; treated as zero, so free cash flow is overstated and equals operating cash flow
no market cap; set `market_cap` in overrides.yaml
reports in HKD and no currency is recorded for its share price, so the two cannot be shown to match. The price refresh records one; until it has run for this company the multiples are left out rather than assumed comparable
share count is from 2026-03-31 (152 days old, dei cover page); a stock split since then would make the market cap wrong. Set `market_cap` in overrides.yaml to be sure.
no usable diluted share count, so growth is measured on total revenue rather than per share; a company issuing shares to fund that growth reads better than it is
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
resilience rests on 2 of 3 inputs; not tagged: liquidity
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