Skip to content

Learn

Company Research and Valuation

Compare peer stocks using one forward earnings period

Compare peer stock valuations by rebuilding forward PE from prices on one declared valuation date and EPS forecasts for one comparable fiscal interval. Preserve the original peer set, block incompatible rows and calculate the target’s relative multiple against a clearly defined eligible-peer benchmark. A table of supplier PE labels without their price dates and earnings denominators cannot establish a clean comparison.

This guide executes a synthetic company comparison using externally supplied peers, prices and forecasts. It does not discover a peer universe, retrieve global analyst estimates or demonstrate an existing CoTrading comparable-company page. A-share report fields can be a source reference, while Hong Kong and US forecasts still need appropriate external inputs and acceptance checks.

Define the peer question before collecting multiples

Start with why the businesses belong together: products, revenue model, geography, growth, capital needs and risk can matter. Keep the user-selected peer list and the reason for inclusion. A shared industry label helps organize the task but does not prove economic comparability.

Damodaran’s earnings-multiples chapter explains PE and the consequences of different earnings definitions, growth and risk. It supports checking the comparison basis, not concluding that the company with the smallest number is undervalued. A low multiple can reflect materially different expectations or business risks.

The fixture uses one supplied software-peer group. A utility record is deliberately outside that accepted group and is excluded by its declared classification. This is a manual group contract, not an algorithmic determination that all remaining software companies are perfect comparables. A real research table should retain unresolved business differences alongside the numerical panel.

Fix the valuation date and forecast interval

Our valuation date is 26 October 2026, with a synthetic 15:00 UTC+08:00 cutoff. The requested earnings are 2027 diluted EPS for a fiscal year ending 31 December 2027. Record original start and end context in actual source material rather than assuming that every company’s label 2027 means the same duration.

Each price must refer to the stated observation type and date. Each forecast must have been available by the cutoff. A later EPS update cannot enter an earlier price comparison merely because it is now convenient to retrieve. Historical comparisons therefore require externally retained forecast timing, not just today’s estimate with a past price.

Our accepted input contract supplies those timestamps. The example blocks a forecast available on 27 October and a price from 23 October. It does not independently verify archive authenticity or exchange calendars. Those source checks belong before the numerical panel is accepted.

Match the per-share and currency basis

The IAS 33 overview explains basic and diluted EPS and the associated numerator and denominator context. Match the actual forecast basis and accounting adjustments across the chosen comparison. Splits, share issuance assumptions and different adjusted-earnings definitions can change the denominator even when every row is called forward EPS.

Within each company, price and EPS must use compatible currency and share units before division. The accepted fixture is in CNY. A CNY price divided by an HKD EPS is rejected; there is no FX layer here. A dimensionless resulting PE does not excuse a unit mismatch inside the calculation.

Negative or zero EPS is not assigned a bargain positive PE rank. Retain the loss-making company in the original table with a nonpositive-EPS reason, and use a separately justified valuation framework if needed. Missing EPS also stays unavailable instead of becoming zero or a guessed industry value.

Recalculate and classify every row

CompanyPriceComparable 2027 EPSForward PERole
AAA241.220target
BBB30215eligible peer
CCC40220eligible peer
DDD50225eligible peer
reasons = check_contract(item)
pe = item["price"] / item["eps"] if not reasons else None
eligible_peers = [row for row in output
                  if row["symbol"] != target and row["pe"] is not None]

The full example performs the checks explicitly rather than relying on an undefined data service. It preserves source identifiers and rejection reasons. The original twelve-company table includes eight additional rows covering negative EPS, wrong year and fiscal end, currency mismatch, basic EPS, stale price date, a different business group, missing EPS and a future forecast.

Download the complete example. Use Python 3.12+, the standard library and synthetic inputs; run python R544.py. The authoring source is docs/growth/research/round-5/examples/R544.py.

Actual output retains all twelve rows, computes PE only for AAA through DDD and leaves the other rows null with reasons. The eligible-peer order is BBB, CCC and DDD, generated from calculated positive multiples. No excluded company silently disappears from the table or contributes to the benchmark.

Calculate an explicit benchmark and relative multiple

The benchmark excludes target AAA. Eligible peer PEs are 15, 20 and 25, with median 20. Python’s statistics reference documents median calculation. Keep the contributing peer identities, not just the resulting number, because a changed sample can move the benchmark without any company’s own PE changing.

AAA’s relative multiple is 20 / 20 − 1 = 0, so it trades at the supplied peer median under these input assumptions. The script asserts the target multiple, eligible peer values, median and zero relative difference. Scientific notation 2E+1 in the raw decimal output means 20 and can be displayed as 20.00.

Call the result a relative multiple, not an automatic fair-value discount or a return forecast. BBB’s 15 is lower than DDD’s 25, but the table does not explain whether growth, risk, margins or capital structure justify that difference. Those operating questions remain research tasks, not conclusions supplied by division.

Test invalid denominators and unavailable information

The negative-EPS company is the primary different-mechanism counterexample. Dividing a positive price by −1 yields a negative number that a naive ascending sort could place first. The fixture withholds its PE and retains nonpositive_eps; it cannot become the cheapest positive-earnings peer.

The future forecast is different: it may be a perfectly valid numerical estimate but was not available at the valuation cutoff. Its row is blocked before division. A wrong fiscal end, basic instead of diluted measure or mismatched currency likewise requires source or definition repair, not a different rounding rule.

If eligible peers become empty, withhold the benchmark rather than inventing a market median. A very small set may still permit arithmetic but should retain its coverage limitation. This fixture’s three peers are an example, not a validated minimum for statistical or investment reliability.

Deliver a comparable-company calculation package

Keep the user-supplied group, source records, price dates, forecast availability, fiscal definitions, currency and dilution checks, computed PEs, exclusions and benchmark membership. Have a reviewer reconstruct AAA and one peer directly, then inspect a loss row and the future-data row. This tests both successful calculation and intended refusal.

When a price date or EPS revision changes, create a new panel and recalculate the benchmark if a contributing peer changes. Preserve the old version and identify whether the movement came from company inputs or peer composition. Business-group changes need a separate reason, not an unexplained numerical exclusion.

The result is a usable, same-period valuation comparison with visible noncomparable rows. It is not a universal peer-selection engine, a complete historical forecast service or evidence that the lowest multiple is the best investment. Its value comes from making each ratio and benchmark reproducible on a declared basis.

Review benchmark membership as part of the calculation

Keep an explicit list of peers contributing to each benchmark version. A median of three companies is not interchangeable with a median that also includes the target or a newly admitted business. When coverage changes, compare the two member lists before explaining a relative-multiple movement as a revaluation of AAA.

The business-group gate in this fixture checks supplied metadata. It does not independently inspect company operations. A reviewer should still examine why the selected peers are relevant and which differences remain. Numerical acceptance and economic comparability can therefore have separate review states without losing either the usable ratios or the unanswered research questions.

Preserve the provenance of price and EPS individually when adopting the method with real files. A source package identifier can link both in the synthetic example, but a production table should reach the actual price observation and forecast version. This makes a changed numerator distinguishable from a changed denominator and prevents a new forecast from silently updating an older valuation-date comparison. The resulting relative multiple is then a reproducible input to research, with its benchmark and temporal limits intact.

FAQ

Should the target company enter its own peer median?

Only under an explicitly chosen method. This fixture excludes AAA from its peer benchmark.

Is a negative PE the lowest valuation in the list?

Not in this positive-earnings comparison. Keep the loss row separately and select an appropriate framework.