Methodology

Every instrument passes through three independent lenses, then the results are reconciled — agreement raises confidence, divergence is published as-is. Below: exactly how each lens is built, and how we test our own forecasts against reality in public.

LENS 1

Fundamental

Ground-up valuation, matched to what the business actually is: a full cash-flow model for an operating company, a dividend-discount model for a bank, sum-of-the-parts for a holding company or a developer. Revenue built from volume × price, costs line by line, margins as an output — never an assumed input. Four independent lenses reconciled into a range, never blended into one number. Details ↓

LENS 2

Technical

A fully computed read of the price tape — moving averages and their direction, RSI and MACD momentum, true-range volatility, and support/resistance clustered from the chart's own turning points. Nothing is hand-drawn, so nothing goes stale when the price moves. Details ↓

LENS 3

Monte Carlo

One engine, 50,000 simulated future paths, applied the same way to every name: centered on the neutral cost of carry, widened by a near-term volatility forecast, shaped with fat tails — then graded against reality in public. Details ↓

Why distributions, not price targets?

Because a single number is a comfortable lie. The future is a probability distribution, and whoever sells you certainty sells you an illusion. We publish the median, the bands, and level-touch probabilities — then measure our calibration in public: do the 90% bands actually contain reality 90% of the time? The full track record is on the ledger.

The two horizons — and what a “month” means here

Every distribution is published at two horizons: 1 month and 3 months from the day it was struck. Those are literal calendar dates — a study anchored on 18 August is checked on 18 September and 18 November. If that date falls on a weekend or a public holiday for that exchange, we check on the next day it actually trades. Nothing else moves the date.

This has been the rule since 27 July 2026. Every horizon we publish is a calendar horizon — one month or three months from the day the forecast was issued. A calendar month works out at roughly 21 trading sessions and a quarter at roughly 63, but the exact count moves with each exchange’s own holidays, which is why the date is what we anchor to. Forecasts issued before the change are graded on the window they were issued for and their published numbers are never re-written; their horizons are simply named in calendar terms like every other row. See the ledger.

The simulation steps in trading sessions, so a calendar horizon has to be converted into a session count — roughly 21 for a month and 63 for a quarter, varying by market and by month. That conversion is made from each exchange's own realized trading calendar rather than assumed, and the five-year test that validates every cone runs over the same calendar window that gets published instead of a fixed session count.

Fundamental valuation, in depthmethod by company class, ground up

Different businesses need different methods

A single valuation formula forced onto every company is a common shortcut, and a common source of bad answers. What a business actually is decides how it gets valued:

  • Operating companies & industrials — a full discounted cash-flow, built from free cash flow to the firm through to an enterprise-value-to-equity bridge.
  • Banks — a dividend discount model as the primary method, cross-checked with free cash flow to equity and a residual/excess-return model, because a bank's economics run on net interest margin and capital adequacy, not the producible good a standard cash-flow model assumes.
  • Holding companies — a disciplined sum-of-the-parts: each holding valued on its own terms, corporate-level debt and cash netted off, rather than one blended multiple hiding what's actually inside.
  • Real-estate developers — sum-of-the-parts / net asset value, each project or land parcel valued on its own unit economics; a pure recurring-income landlord instead gets a long-run cash-flow model with an explicit terminal capitalization rate.
  • Contractors — free-cash-flow-to-firm blended with sum-of-the-parts, where a backlog of distinct projects drives the value.
  • Aggregators & platform businesses — a cash-flow model built on a driver tree specific to the business (volumes, take rate, unit economics), not a generic revenue-growth assumption.

Every one of these is cross-checked against relative multiples (how similar businesses trade) and normalized earnings power (mid-cycle profitability, not a one-off spike or trough year) — four independent lenses on the same business, reconciled into a range rather than blended into a single tidy number. Where the four don't agree, we publish the disagreement rather than average it away.

Built from the ground up, not assumed from the top down

Wherever a company discloses enough detail, revenue is built as volume × price per product or segment — not a single top-down growth rate applied to last year's total. Costs are built the same way: each physically distinct cost line (raw materials, imported energy, local wages, transport) gets its own driver and its own escalation path — a globally-traded input like imported fuel is escalated on its own commodity price, never lumped into one domestic-inflation number that happens to be convenient. Margins fall out of that construction as a result — they are never simply typed in — wherever the filings disclose enough to build the cost side properly, an assumed margin is a defect, not a shortcut.

The past is built exclusively from the company's own audited financial statements and official disclosures — never from a data vendor's restated numbers, and never from a broker's summary, for what the company itself reported. Vendor and sell-side data has a role — peer comparisons, industry context, an external cross-check on our own number — just never as the source for the subject company's own historical results. Where an official source is genuinely inaccessible, we say so rather than filling the gap with an unofficial one.

Two more disciplines run underneath the forecast: debt is studied in full and split between local- and foreign-currency tranches, since they carry different real costs; and the cash-conversion cycle (how long the company takes to collect from customers, hold inventory, and pay suppliers) is used to project the balance sheet and cash flow forward, rather than plugging working-capital changes as an unexplained residual.

Cost of capital

Every discount rate is built bottom-up, per stock, per market — never a flat "emerging market" haircut applied everywhere. Country risk is sourced fresh from that specific sovereign's own credit data (rating, CDS, default spread) and enters the discount rate exactly once — a common mistake is to use a country's raw bond yield and a country-risk-loaded equity premium, which counts the same risk twice; we normalize the risk-free rate to strip that out. Cost of debt is the company's own marginal, forward-looking borrowing cost, always priced above its own government's borrowing cost — no company borrows more cheaply than its own sovereign — and foreign-currency debt is translated to its local-currency-equivalent cost, not left at its face coupon, before it enters the discount rate.

Beta comes from the stock's own price history, regressed against the actual published index of the exchange it trades on — never a hand-picked basket of "similar" stocks, which changes every time a new name is added and quietly distorts the number. Where a stock is too newly listed or too thinly traded for its own regression to be reliable, the fallback is a same-country peer beta — never a foreign one, and never a flat assumption of 1.0 unless truly nothing better is available.

Stress-testing our own numbers

Every study is built by three independent analytical personas — genuinely different worldviews and methods, not the same model wearing three hats — who each produce a full worked valuation, state in advance what evidence would change their mind, then cross-examine each other's assumptions. The result is published as a divergence table: not an average of the three views, but a clear account of which specific assumption explains the gap between them. Where one judgment is both genuinely contested and material enough to move the whole valuation — an ownership stake, a country-risk call, an accounting treatment — it is computed both plausible ways and shown side by side, rather than quietly picked and hidden.

Technical read, in depthwhat's actually computed, and how

Every technical read is fully computed from the same cleaned daily price history the probability cone runs on — nothing here is hand-drawn from a chart. That matters in practice: a hand-drawn read goes stale the moment the price moves and nobody gets around to redrawing it. A computed one refreshes itself, automatically, in the same pass as every price update.

What gets computed

  • Trend — 20/50/200-day moving averages, each with a computed direction (rising, falling, or flat), not just where price sits relative to them.
  • Momentum — RSI(14), using Wilder's original smoothing method rather than a plain average, and MACD(12,26,9), read on both the line's own sign and its histogram's sign — "below zero but turning up" is a different fact from "above zero and rolling over," and both get said when true.
  • Volatility / tape character — Average True Range(14), Wilder-smoothed and gap-aware, so an overnight gap counts, not just the day's own high-low spread.
  • Regime change — 50/200-day moving-average crossovers ("golden" and "death" crosses), flagged only while still recent — an old cross is stale news, not a live signal.
  • Range context — the 52-week high and low, and exactly where the last close sits between them.

Support & resistance — computed, not drawn

Levels come from fractal pivots: a high or low that stands out over roughly a month of trading on either side of it. Nearby pivots are clustered into a single level, and every level is weighted by two things — how many times price actually turned there, and how recently. A level tested five times last month counts for more than one tested once two years ago; old structure fades rather than being treated as permanent forever. Moving averages and the 52-week extremes are admitted as candidate levels too, since price genuinely reacts to them, but they only win a published slot when swing structure doesn't fill one. Levels are always published nearest-to-price first, on both sides — so the first resistance and first support listed always mean "the next thing price actually has to deal with," never inconsistently ordered from one name to the next.

Reading momentum divergence (educational)

Price rising while RSI stalls or falls = bearish divergence, momentum dying into strength. Price and RSI rising together = healthy trend. Price falling while RSI rises = seller exhaustion worth watching. Both falling together = healthy downtrend, don't catch the knife. These are descriptive patterns for reading momentum, not signals to act on.

What this lens deliberately doesn't say

A computed technical read never makes a fundamental claim — it will not tell you a stock is "cheap versus its cost of equity," because a mechanical scan of price has no way to know that. That judgment belongs to the fundamental lens above, kept separate on purpose.

The probability cone, in depthhow the 50,000-path forecast is built

Lens 3 is one Monte Carlo model, applied the same way to every covered name — no stock gets a bespoke, hand-tuned version of it. Each forecast simulates 50,000 possible future price paths and reports the spread as percentiles: a median, and a range meant to contain the outcome 90% of the time.

Where it's centered

The path is centered on cost of carry — the risk-free interest rate minus the stock's dividend yield — the same neutral, driftless-in-expectation anchor a textbook option-pricing model uses. That's deliberate: the median is not a house view on whether the stock will rise or fall. On top of that neutral anchor, some markets carry a modest statistical tilt — a momentum or short-term reversal effect — but only where testing has actually shown, out of sample, that it helps; where it hasn't, none is applied, and it's never assumed either way.

How wide it is

Width comes from a near-term volatility forecast built from the stock's own recent trading pattern — blending how volatile it has been over the last day, the last week and the last month, since all three windows carry real information — rather than a single flat historical-volatility number frozen in time.

Why the tails are fat

Returns are modeled with a fat-tailed shape rather than a plain bell curve, because a bell curve badly understates how often real markets produce a big move. How fat the tails are is fitted per market from that market's own history — and it's a genuinely hard number to pin down precisely (a wide range of settings often fits the data almost equally well), so it should be read as "the cone allows for real fat-tail risk," never as a precise, confident dial.

Nothing new goes in without proving itself first

No new indicator, factor or statistical tweak — from us, or from the automated pipeline that keeps every forecast current as new prices arrive — enters this model without first beating the same out-of-sample test described below, on data it wasn't built on. An idea that looks better on the data used to build it, then loses once tested on fresh data, is rejected. That has happened, and it's on the record, not swept aside.

How we test ourselveshow the bands are graded, and what the record means

A probability forecast that always sounds confident and is never checked against reality is worthless. So every cone is graded — and the grading is published in public, forever, on the ledger.

Before a single forecast: cleaning the price history

Every price series is screened before it's trusted. Vendor price feeds carry real problems — flat placeholder rows from before a company was even listed, or a stock split that a raw feed reports as a fake 70% one-day crash. Each exchange enforces its own daily price-move limit (a circuit breaker), so a single-session move beyond what that exchange even allows can only be a data error or an unadjusted corporate action, never a real trade — that limit, not a guessed cutoff, is what tells the two apart, and it's set separately for every exchange rather than one global rule that would misfire on a market with a wider circuit breaker than most.

The test

We walk forward through five years of history in non-overlapping three-month windows. At each point, the model is only shown data up to that point — exactly what it would have known had the forecast actually been published live that day — then issues a forecast, and we check it against what actually happened next. This repeats across the full five years and across every covered name in a market.

The second half of the test: was the band worth having?

Coverage on its own can be gamed, and the way to game it is to be vague. A band running from zero to infinity contains the price every single time and tells you nothing. So the width is published beside the record: how wide our 90% band is compared with a simple no-forecast rule’s — one that just carries the price forward at the cash rate and assumes ordinary volatility. A ratio near 1.0 means we are as tight as that simple rule while staying honest; above it means we are paying for coverage with width.

Both halves are published, for every name, because they trade against each other and either one alone can be made to look good at the other’s expense. Neither is a hurdle we set ourselves and then clear: a wider band is not automatically wrong — Egyptian names run wider than American ones because Egyptian tail risk is genuinely larger, and pretending otherwise would be the dishonest choice. We show you the number and let you judge it.

Reading the record

The question that actually matters to you is simpler than any score: when we say there is a 90% chance the price lands inside a range, does it? That is what we publish for every name — the share of its resolved three-month forecasts that finished inside the 90% band, and how many forecasts that is. Both numbers are on the ledger and you can recount them yourself.

Two things follow from that, and nothing else needs explaining. The first is how long the record is: a name with sixty resolved forecasts behind it is telling you something; a name with eight is not, and we say so rather than dressing up a number that cannot bear the weight. The second is whether the record sits where it should. A band aiming at 90% that holds 90% of the time gets no flag at all — that is the ordinary case, and silence is the honest response to it. We flag only the two ways it can go wrong:

Ledger labelWhat it means
No flagThe bands held about as often as they promised. Nothing more is claimed, and nothing more needs to be.
⚠ Bands ran narrowThe range was drawn too tight for this stock: a 90% range should contain the close nine times in ten, and this one didn't manage that — price broke out more often than promised, meaning the forecast was more confident than its record justifies. Treat the published range as a floor on how far price can travel, not a ceiling. ("Narrow" is the bad direction, despite the sound of it: a tighter range is a bolder claim, not a safer one.)
◆ Bands ran wideThe range was drawn roomier than the stock needed: price stayed inside almost every time, more often than the 90% promised, so the realistic spread of outcomes is tighter than the picture shows. Over-caution rather than over-confidence — the safer direction to be wrong in, but still a miss, and still published.
◇ Market record onlyToo newly listed for its own record to mean anything yet, so no claim is made about this name specifically — the bands shown are its market's bands, judged across every name in that panel. Each cohort it matures adds a window to a record of its own.

A flag is only raised when the gap is bigger than chance would comfortably explain, so a name is never marked on one unlucky quarter. And a short record is never quietly upgraded into a long one: the count is printed beside the percentage every time, because the percentage without the count is exactly the kind of number that misleads.

Every graded forecast — right or wrong — is on the public ledger, permanently. Nothing is deleted, and nothing is re-written after the fact.

The weakest link, said plainly

Metals carry the least battle-tested calibration on the site. Gold's test is run only against its own history — a smaller, more self-referential check than the market-wide panel every stock is tested against — and silver doesn't yet have a calibration test of its own; it currently borrows gold's. Treat the metals cones as the least proven corner of the site until more history accumulates.

Who writes this

These studies are produced independently under the Testahil name as an educational project. The work is solo and self-funded: no firm, no clients, no outside money, no sponsor. The aim is to demonstrate a transparent valuation method and invite people to check it.

Found an error or a weak assumption? That's the point — write to info@testahil.com or attack the open model in the Library.

Where the numbers come from

We separate hard facts from our own estimates, and we label vendor data when we use it:

Audited figures are distinguished from estimates inside each model. When a number is a vendor figure or a best-effort reconstruction, we say so — and where an official source is genuinely inaccessible, we say that too, rather than filling the gap with an unofficial one.

Disclosure & Disclaimer — read in full

Nature of this content. Everything published on this site is an educational valuation exercise and an expression of personal analytical opinion, based exclusively on publicly available information and on assumptions stated in the text and accompanying models. It is published free of charge, on a pre-set periodic schedule, to demonstrate methodology and invite scrutiny of it.

No advice, no recommendation, no solicitation. Nothing here constitutes investment advice, financial consultancy, securities analysis services, a recommendation, a rating, a price target, an offer, or a solicitation or invitation to buy, sell, hold or subscribe for any security. Nothing is directed at, or calibrated to, any reader's circumstances, and nothing should be acted on without independent verification and licensed professional advice.

No licensed activity. The preparer is not licensed or registered with Egypt's Financial Regulatory Authority (FRA) or any other regulator; does not carry on financial consultancy, securities evaluation or analysis services, portfolio management, brokerage or promotion; manages no money; accepts no clients, fees, subscriptions or funds of any kind; and provides personalized advice to no one.

Position disclosure. The preparer holds a long position in PHDC, may hold positions in other instruments mentioned, and may increase, decrease or close any position at any time without notice. Content is prepared and published independently of any trading activity, on a pre-set schedule, and is not intended to — and must not be used to — influence the market price of any security.

Estimates and uncertainty. All valuations, scenarios, probabilities and levels are model outputs resting on explicit, subjective assumptions; they are illustrative, highly uncertain, and likely to prove wrong in material respects — which is exactly why they are presented as ranges and distributions: no single number should be relied on. Public and vendor data are believed reliable but not guaranteed; vendor-derived figures are flagged as such.

No liability. To the maximum extent permitted by law, the preparer accepts no liability for any decision made or not made, or any loss or damage of any kind, incurred by any person in reliance on any part of this site or its models.

Reader's responsibility. Anyone considering an investment decision should conduct their own independent assessment and consult a financial advisor licensed in their jurisdiction. If publication of material of this kind is restricted where you are reading it, do not rely on it.