VNEquity Research

UPCOM · Chemicals

XDH Hanoi Civil Construction Joint Stock Company

CTCP Đầu tư Xây dựng Dân dụng Hà Nội

Persisted research state: NONE. Research is shown only when it is backed by persisted evidence and calculations.

At a glance

Company at a glance

Persisted, canonical facts only. A value that is not recorded is shown as unavailable and is never estimated, substituted or shown as zero.

CompanyHanoi Civil Construction Joint Stock Company
TickerXDH
ExchangeUPCOM
IndustryChemicals
Research stateNo research available NO_RESEARCH
Research certificationNo certified research
Matched opportunity conditions3 of 5
Latest screening snapshot2026-09-25T12:02:11.197988+00:00
Latest market price2026-09-24T00:00:00+00:00
Latest fundamental period2026-06-30
Latest research reportUnavailable
Evidence records91
Source documents5

Certification reflects the repository's internal approval record on the latest persisted report. It describes publication status and provenance; it is not a rating, a forecast or investment advice.

Deterministic discovery

Opportunity signals

Browse opportunity signals

3 of 5 versioned P7D V1 conditions matched at evaluation time. Every condition is either matched, unmatched, or refused when the required evidence is missing, stale or not applicable. These are deterministic screening conditions, not investment recommendations.

Modeled history. Historical valuation availability is modeled from reporting-lag assumptions and is not point-in-time certified.

Full five-rule trace (P7D_RULES_V1)

Fundamental improvement FUNDAMENTAL_IMPROVEMENT

MATCHED

Revenue growth 4.53% and parent PAT growth 55.73% are both above 0%, and P/E 10.2554 confirms positive trailing parent earnings.

Magnitude: 4.53%

  • Growth compares the latest two compatible full years.
  • Growth is historical, not forecast growth.
  • Parent PAT growth uses the repository's existing denominator semantics: the latest full-year PARENT_PAT versus the prior full-year PARENT_PAT.
Observations (4)
InputValueStatusPeriod / freshness
market_price — OK — · CURRENT
revenue_growth 4.53% OK latest compatible full year
pat_growth 55.73% OK latest compatible full year
pe_ttm 10.2554x OK TTM 2026-06-30 · CURRENT
Thresholds
growth min percent
0
pe positive
yes
market current max hours
72.0

Cash-flow strength CASH_FLOW_STRENGTH

REFUSED

Required input fcf_proxy_yield is unavailable: TTM_OCF_OR_CAPEX_UNAVAILABLE.

Refused: TTM_OCF_OR_CAPEX_UNAVAILABLE

  • FCF Proxy Yield is a screening proxy: trailing-twelve-month operating cash flow less reported cash capital expenditure over market capitalization.
Observations (3)
InputValueStatusPeriod / freshness
market_price — OK — · CURRENT
fcf_proxy_yield — REFUSED · TTM_OCF_OR_CAPEX_UNAVAILABLE — · CURRENT
pe_ttm 10.2554x OK TTM 2026-06-30 · CURRENT
Thresholds
fcf proxy yield min percent
0
pe positive
yes
financial applicability
NON_FINANCIAL_ONLY
market current max hours
72.0

Quality at a reasonable valuation QUALITY_AT_REASONABLE_VALUATION

MATCHED

PAT margin 15.9397% is positive, operating margin 19.8890% is at least 5%, and P/E 10.2554 is within (0, 40].

Magnitude: 19.889%

  • Operating and PAT margins are not cross-sector comparable in this screening phase.
Observations (4)
InputValueStatusPeriod / freshness
market_price — OK — · CURRENT
pat_margin 15.9397% OK QUARTER 2026-06-30 · CURRENT
operating_margin 19.889% OK QUARTER 2026-06-30 · CURRENT
pe_ttm 10.2554x OK TTM 2026-06-30 · CURRENT
Thresholds
pat margin min percent
0
operating margin min percent
5
pe min exclusive
0
pe max inclusive
40
market current max hours
72.0

Valuation dislocation VALUATION_DISLOCATION

UNMATCHED

The below-history percentile, signal, negative premium/discount and positive P/E requirements are not all present.

Historical certification: NON_CERTIFIED_MODELED_AVAILABILITY — modeled, not point-in-time certified

  • Historical valuation availability is modeled from reporting-lag assumptions and is not point-in-time certified.
Observations (6)
InputValueStatusPeriod / freshness
market_price — OK — · CURRENT
historical_pe_percentile 31.4% OK — · CURRENT
historical_premium_discount -29.6% OK — · CURRENT
historical_signal NEAR_HISTORY OK — · CURRENT
pe_ttm 10.2554x OK TTM 2026-06-30 · CURRENT
historical_certification NON_CERTIFIED_MODELED_AVAILABILITY OK —
Thresholds
historical percentile max
25
historical signals
BELOW_HISTORY, DEEPLY_BELOW_HISTORY
historical premium discount max exclusive
0
pe positive
yes
market current max hours
72.0

Research gap RESEARCH_GAP

MATCHED

No meaningful persisted research exists while at least one quantitative signal matched (FUNDAMENTAL_IMPROVEMENT, QUALITY_AT_REASONABLE_VALUATION). This is a research-coverage observation, not a recommendation.

Observations (1)
InputValueStatusPeriod / freshness
research_state NONE OK — · MISSING
Thresholds
research gap states
NONE, INSUFFICIENT
requires quantitative signal
yes

Rules version P7D_RULES_V1 · snapshot built 2026-09-25 12:02:11.197988+00:00 · market freshness CURRENT · persisted research state NONE. These are deterministic screening conditions over persisted evidence, not investment recommendations, forecasts, ratings or advice.

Canonical snapshot

Screening metrics

Open screener

Values come from the persisted screening snapshot and are never recomputed in the browser. UNKNOWN or refused inputs show as “—” with their canonical reason and are never displayed as zero. OCF/PAT is expressed as a percentage of PAT (100 means 100% of PAT).

P/E (TTM, parent)10.2554x
P/B (parent equity)0.7801x
Revenue growth (latest compatible FY)4.53%
Parent PAT growth (latest compatible FY)55.73%
Operating margin (latest compatible period)19.889%
PAT margin (latest compatible period)15.9397%
FCF Proxy Yield (TTM)— TTM_OCF_OR_CAPEX_UNAVAILABLE
OCF / PAT (latest compatible period)— INSUFFICIENT_PERSISTED_EVIDENCE
Market freshnessCURRENT price 2026-09-24T00:00:00+00:00
Fundamental periodthrough 2026-06-30 freshness CURRENT
Snapshot built at2026-09-25T12:02:11.197988+00:00 01a09a7c-161b-727d-b17b-9d83caedceaf
Persisted research stateNONE MISSING
Historical valuation signalNEAR_HISTORY available

Snapshot refusal reasons: HISTORICAL_VALUATION_NOT_REQUESTED; INSUFFICIENT_PERSISTED_EVIDENCE; TTM_CAPEX_OR_REVENUE_UNAVAILABLE; TTM_DIVIDENDS_UNAVAILABLE; TTM_OCF_OR_CAPEX_UNAVAILABLE

Authenticated

Investor actions

Add this company to one of your existing portfolios. Actions are owner-scoped to your signed-in account. No portfolio, holding, alert or session data is rendered into this public page.

Sign in to add this company to a portfolio. Your portfolios and alerts remain private to your account.

Valuation snapshot

ssi-iboard · UPCOM · 2026-09-24T00:00:00+00:00 · retrieved 2026-09-24T11:57:12.043913+00:00 · share basis: unavailable

Price16200.000000000000 VND
Shares outstanding—
Market cap437835893400.000000000000
Market capitalization437835893400.0000
Earnings yield (TTM, parent)9.7510%
P/E (TTM, parent)10.2554x
P/B (parent equity)0.7801x
Dividend yield (trailing cash DPS)— DIVIDEND_PER_SHARE_UNAVAILABLE
Cash distribution yield (proxy)— TTM_DIVIDENDS_UNAVAILABLE
FCF Proxy Yield (TTM)— TTM_OCF_OR_CAPEX_UNAVAILABLE
Enterprise value— TOTAL_DEBT_UNAVAILABLE
EV/Sales (TTM)— TOTAL_DEBT_UNAVAILABLE
EV/EBIT (TTM)— TOTAL_DEBT_UNAVAILABLE
Net cash / (net debt)— TOTAL_DEBT_UNAVAILABLE
EV/EBITDA— EBITDA_NOT_REPORTED_OR_DEBT_INCOMPLETE
Historical P/E range— HISTORICAL_PRICE_HISTORY_UNAVAILABLE

Deterministic Bull / Base / Bear

CaseAssumptionsTarget multiple rationaleImplied value / shareUpside / downside
Bull
  • TTM revenue growth of 5.00%
  • TTM parent PAT margin of 19.74%
  • target P/E of 11.3x
ANALYST_ASSUMPTION
current TTM P/E +10% sensitivity, rounded to 0.1x
19740.306221.8537%
Base
  • TTM revenue growth of 0.00%
  • TTM parent PAT margin of 18.74%
  • target P/E of 10.3x
CURRENT_MULTIPLE
current TTM parent-attributable P/E, rounded to 0.1x
16268.43610.4224%
Bear
  • TTM revenue growth of -5.00%
  • TTM parent PAT margin of 17.74%
  • target P/E of 9.2x
ANALYST_ASSUMPTION
current TTM P/E -10% sensitivity, rounded to 0.1x
13067.8471-19.3343%

Historical valuation

Point-in-time P/E uses only periods available on each trade date (publication-dated or lag-modeled); no negative earnings produce an observation.

Current P/E10.26x
1Y median P/E— INSUFFICIENT_OBSERVATIONS (28 < 120)
3Y median P/E15.90x
5Y median P/E14.58x
25th / 75th percentile P/E6.57 / 18.72
Min / max P/E3.91 / 31.83 (raw 3.91 / 31.83)
Percentile rank31.4%
Premium / discount to median-29.6%
SignalNEAR_HISTORY percentile_rank 31.4 between 25 and 75
CertificationNON_CERTIFIED_MODELED_AVAILABILITY 18 observations use REPORT_LAG_MODEL; 208 observations use ANNUAL_PAT_FALLBACK
P/B history— PARENT_EQUITY_HISTORY_UNAVAILABLE
Dividend-yield history— DIVIDEND_PER_SHARE_HISTORY_UNAVAILABLE

P/E range 3.91x – 31.83x over stored observations.

Historical availability may be modeled from reporting-lag assumptions (NON_CERTIFIED_MODELED_AVAILABILITY). Modeled availability is labelled and is never point-in-time certified.

Notes: PROVIDER_SELECTED: dnse-chart ({'dnse-chart': 482} bars); MISSING_PERIODS: start=2021-07-13, end=2021-11-24, calendar_days=134; MISSING_PERIODS: start=2021-11-24, end=2022-03-28, calendar_days=124; MISSING_PERIODS: start=2022-03-28, end=2022-06-27, calendar_days=91; MISSING_PERIODS: start=2022-06-27, end=2022-08-05, calendar_days=39; MISSING_PERIODS: start=2022-08-05, end=2022-09-13, calendar_days=39; MISSING_PERIODS: start=2022-09-13, end=2022-11-01, calendar_days=49; MISSING_PERIODS: start=2022-11-18, end=2022-12-28, calendar_days=40; MISSING_PERIODS: start=2023-01-19, end=2023-01-30, calendar_days=11; MISSING_PERIODS: start=2023-02-17, end=2023-03-03, calendar_days=14; MISSING_PERIODS: start=2023-05-23, end=2023-06-05, calendar_days=13; MISSING_PERIODS: start=2023-08-21, end=2023-09-08, calendar_days=18; MISSING_PERIODS: start=2023-09-29, end=2023-10-10, calendar_days=11; MISSING_PERIODS: start=2023-10-10, end=2023-11-03, calendar_days=24; MISSING_PERIODS: start=2023-11-03, end=2023-11-29, calendar_days=26; MISSING_PERIODS: start=2023-11-29, end=2023-12-29, calendar_days=30; MISSING_PERIODS: start=2024-01-30, end=2024-02-26, calendar_days=27; MISSING_PERIODS: start=2024-03-27, end=2024-05-03, calendar_days=37; MISSING_PERIODS: start=2024-05-10, end=2024-05-21, calendar_days=11; MISSING_PERIODS: start=2024-05-31, end=2024-06-13, calendar_days=13; MISSING_PERIODS: start=2024-06-13, end=2024-08-06, calendar_days=54; MISSING_PERIODS: start=2024-08-06, end=2024-10-01, calendar_days=56; MISSING_PERIODS: start=2024-11-22, end=2024-12-04, calendar_days=12; MISSING_PERIODS: start=2024-12-31, end=2025-01-15, calendar_days=15; MISSING_PERIODS: start=2025-01-24, end=2025-02-05, calendar_days=12; MISSING_PERIODS: start=2025-06-19, end=2025-07-01, calendar_days=12; MISSING_PERIODS: start=2025-07-16, end=2025-07-30, calendar_days=14; MISSING_PERIODS: start=2025-08-11, end=2026-01-12, calendar_days=154; MISSING_PERIODS: start=2026-02-11, end=2026-03-03, calendar_days=20; MISSING_PERIODS: start=2026-03-03, end=2026-03-17, calendar_days=14; MISSING_PERIODS: start=2026-03-17, end=2026-03-30, calendar_days=13; MISSING_PERIODS: start=2026-04-21, end=2026-05-18, calendar_days=27; MISSING_PERIODS: start=2026-05-21, end=2026-06-10, calendar_days=20; MISSING_PERIODS: start=2026-06-10, end=2026-06-29, calendar_days=19; MISSING_PERIODS: start=2026-07-03, end=2026-08-05, calendar_days=33; SUSPICIOUS_DISCONTINUITY: trade_date=2021-02-08, previous_close=1.860000000000, close=2.590000000000, absolute_return=0.3924731182795698924731182796; SUSPICIOUS_DISCONTINUITY: trade_date=2021-11-24, previous_close=2.590000000000, close=3.630000000000, absolute_return=0.4015444015444015444015444015; SUSPICIOUS_DISCONTINUITY: trade_date=2022-03-28, previous_close=3.630000000000, close=5.060000000000, absolute_return=0.3939393939393939393939393939; SUSPICIOUS_DISCONTINUITY: trade_date=2022-06-27, previous_close=5.060000000000, close=7.130000000000, absolute_return=0.4090909090909090909090909091; SUSPICIOUS_DISCONTINUITY: trade_date=2022-11-01, previous_close=9.310000000000, close=12.990000000000, absolute_return=0.3952738990332975295381310419; SUSPICIOUS_DISCONTINUITY: trade_date=2022-12-28, previous_close=24.730000000000, close=14.870000000000, absolute_return=0.3987060250707642539425798625; SUSPICIOUS_DISCONTINUITY: trade_date=2023-06-21, previous_close=14.480000000000, close=17.610000000000, absolute_return=0.2161602209944751381215469613; SUSPICIOUS_DISCONTINUITY: trade_date=2023-08-08, previous_close=23.470000000000, close=29.500000000000, absolute_return=0.2569237324243715381337878142; SUSPICIOUS_DISCONTINUITY: trade_date=2023-09-08, previous_close=27.770000000000, close=21.470000000000, absolute_return=0.2268635217861001080302484696; SUSPICIOUS_DISCONTINUITY: trade_date=2025-01-17, previous_close=15.410000000000, close=10.400000000000, absolute_return=0.3251135626216742375081116158; SUSPICIOUS_DISCONTINUITY: trade_date=2025-01-20, previous_close=10.400000000000, close=13.970000000000, absolute_return=0.3432692307692307692307692308; SUSPICIOUS_DISCONTINUITY: trade_date=2025-05-28, previous_close=18.690000000000, close=22.920000000000, absolute_return=0.2263242375601926163723916533; STALE_SERIES: last_trade_date=2026-08-18, calendar_days=38; ADJUSTMENT_UNKNOWN: adjusted=False, adjustment_basis=UNKNOWN

Peer comparison

EXACT_INDUSTRY · Exact primary-industry and exchange match. · 15 compatible peer(s)

TickerPriceMarket capP/EP/BRevenue growthPAT growthMarginsFCF proxy yieldPremium / discount to peer median
AVG 7300.000000000000 VND 129063868600.000000000000 VND 6.69x 0.53x -2.00% 27.13% 2.40% — TTM_OCF_OR_CAPEX_UNAVAILABLE 58.5%
BT1 12000.000000000000 VND 120001272000.000000000000 VND — PARENT_PAT_TTM_UNAVAILABLE_OR_NON_POSITIVE — PARENT_EQUITY_UNAVAILABLE 13.88% 425.74% 2.54% — TTM_OCF_OR_CAPEX_UNAVAILABLE —
DDV 16400.000000000000 VND 2396202360000.000000000000 VND 4.06x — PARENT_EQUITY_UNAVAILABLE 5.79% 144.05% 5.00% 52.21% -3.8%
DHB 12500.000000000000 VND 3402500000000.000000000000 VND 4.24x 5.39x -2.45% 58.57% 0.25% — TTM_OCF_OR_CAPEX_UNAVAILABLE 0.5%
DOC 6800.000000000000 VND 68000000000.000000000000 VND — PARENT_PAT_TTM_UNAVAILABLE_OR_NON_POSITIVE 0.63x 5.20% 62.22% 2.76% — TTM_OCF_OR_CAPEX_UNAVAILABLE —
DVG ECONOMIC_SIZE_MISMATCH 700.000000000000 VND 19600000000.000000000000 VND — PARENT_PAT_TTM_UNAVAILABLE_OR_NON_POSITIVE 0.06x 19.63% -317.14% -1.22% — TTM_OCF_OR_CAPEX_UNAVAILABLE —
HNP 13300.000000000000 VND 66500000000.000000000000 VND — PARENT_PAT_TTM_UNAVAILABLE_OR_NON_POSITIVE 0.50x -3.63% 6.66% 1.97% — TTM_OCF_OR_CAPEX_UNAVAILABLE —
HPH 14100.000000000000 VND 118440000000.000000000000 VND — PARENT_PAT_TTM_UNAVAILABLE_OR_NON_POSITIVE 1.17x 249.33% 210.68% 1.39% — TTM_OCF_OR_CAPEX_UNAVAILABLE —
HPP 65700.000000000000 VND 604509576300.000000000000 VND — PARENT_PAT_TTM_UNAVAILABLE_OR_NON_POSITIVE 0.93x 9.96% 29.44% 8.77% — TTM_OCF_OR_CAPEX_UNAVAILABLE —
HSP 15900.000000000000 VND 191230667400.000000000000 VND 4.19x 0.97x 3.77% -1.12% 4.74% — TTM_OCF_OR_CAPEX_UNAVAILABLE -0.7%
LMH ECONOMIC_SIZE_MISMATCH 800.000000000000 VND 20503996000.000000000000 VND — PARENT_PAT_TTM_UNAVAILABLE_OR_NON_POSITIVE — PARENT_EQUITY_UNAVAILABLE 115.64% 91.64% -129.58% — TTM_OCF_OR_CAPEX_UNAVAILABLE —
PAT 73000.000000000000 VND 1825000000000.000000000000 VND 5.34x 3.11x 11.73% 29.54% 17.84% — TTM_OCF_OR_CAPEX_UNAVAILABLE 26.5%
QBS 500.000000000000 VND 34664964000.000000000000 VND — PARENT_PAT_TTM_UNAVAILABLE_OR_NON_POSITIVE — PARENT_EQUITY_UNAVAILABLE -87.75% -242.32% -252.90% — TTM_OCF_OR_CAPEX_UNAVAILABLE —
SIV 40000.000000000000 VND 138567120000.000000000000 VND — PARENT_PAT_TTM_UNAVAILABLE_OR_NON_POSITIVE 0.55x 14.01% 23.49% 12.00% — TTM_OCF_OR_CAPEX_UNAVAILABLE —
SVG 5600.000000000000 VND 164360000000.000000000000 VND — PARENT_PAT_TTM_UNAVAILABLE_OR_NON_POSITIVE 0.54x 17.39% 13.75% 0.29% — TTM_OCF_OR_CAPEX_UNAVAILABLE —
VAF 27000.000000000000 VND 1016964396000.000000000000 VND 3.34x 1.55x 32.26% 179.86% 10.56% — TTM_OCF_OR_CAPEX_UNAVAILABLE -20.9%
VNP 17000.000000000000 VND 330291521000.000000000000 VND — PARENT_PAT_TTM_UNAVAILABLE_OR_NON_POSITIVE 1.20x -46.43% 21.43% 42.37% — TTM_OCF_OR_CAPEX_UNAVAILABLE —

Peer median P/E: 4.22x (6 compatible observations · P25 4.09x / P75 5.06x) · target rank 7 · percentile 100.0% · target premium/discount 143.1%

Excluded: ADP (NO_COMPATIBLE_CLASSIFICATION); ALT (NO_COMPATIBLE_CLASSIFICATION); APH (NO_COMPATIBLE_CLASSIFICATION); HII (NO_COMPATIBLE_CLASSIFICATION); BFC (NO_COMPATIBLE_CLASSIFICATION); ABS (NO_COMPATIBLE_CLASSIFICATION); CPC (NO_COMPATIBLE_CLASSIFICATION); PCE (NO_COMPATIBLE_CLASSIFICATION); HDA (NO_COMPATIBLE_CLASSIFICATION); SDN (NO_COMPATIBLE_CLASSIFICATION); DGC (NO_COMPATIBLE_CLASSIFICATION); HCD (NO_COMPATIBLE_CLASSIFICATION); CET (NO_COMPATIBLE_CLASSIFICATION); NHH (NO_COMPATIBLE_CLASSIFICATION); LAS (NO_COMPATIBLE_CLASSIFICATION); NFC (NO_COMPATIBLE_CLASSIFICATION); PMB (NO_COMPATIBLE_CLASSIFICATION); DCM (NO_COMPATIBLE_CLASSIFICATION); DPM (NO_COMPATIBLE_CLASSIFICATION); PLP (NO_COMPATIBLE_CLASSIFICATION); PGN (NO_COMPATIBLE_CLASSIFICATION); SPC (NO_COMPATIBLE_CLASSIFICATION); SBV (NO_COMPATIBLE_CLASSIFICATION); CSV (NO_COMPATIBLE_CLASSIFICATION); PSW (NO_COMPATIBLE_CLASSIFICATION); PSE (NO_COMPATIBLE_CLASSIFICATION); SFG (NO_COMPATIBLE_CLASSIFICATION); VFG (NO_COMPATIBLE_CLASSIFICATION); VTZ (NO_COMPATIBLE_CLASSIFICATION); HVT (NO_COMPATIBLE_CLASSIFICATION); VPS (NO_COMPATIBLE_CLASSIFICATION); CAP (NO_COMPATIBLE_CLASSIFICATION)

comparison inputs, not causal conclusions: revenue_growth_percent, pat_growth_percent, net_margin_percent, price_to_book

NO RESEARCH YET

Start with the evidence.

This company is searchable, but no persisted report exists. Start a run to build one from the available source documents.

Operator tooling

Internal research operations, separate from investor actions. The operator watchlist is not a customer watchlist, and PDF export generation requires the internal operator key. Permissions are unchanged.

Research run

Operator watchlist