Vipshop Holdings Ltd
VIPSdata completeness 100%16 fiscal years on fileVipshop Holdings Ltd earns about 19% on equity, far above its ~9% cost of capital, and has bought back 26% of its shares over 5 years — the marks of a durable business run for its owners. The estimate methods put fair value between $104.82 and $146.41 a share.Whether it’s worth owning at today’s price is the last question — and yours to answer, below.
| Figure | FY 2021 | FY 2022 | FY 2023 | FY 2024 | FY 2025 |
|---|---|---|---|---|---|
| Revenue | $18.4B1 | $15B2 | $15.9B3 | $14.9B4 | $15.1B5 |
| Net income | $736.4M6 | $915.1M7 | $1.16B8 | $1.07B9 | $1.04B10 |
| Operating cash flow | $1.06B11 | $1.53B12 | $2.03B13 | $1.25B14 | $1.07B15 |
| Capital expenditure | $428.8M16 | $352.4M17 | $305.2M18 | $373.1M19 | $284M20 |
| Free cash flow (derived) | $629.6M11 | $1.17B12 | $1.73B13 | $877.6M14 | $782M15 |
| Total debt | $310M21 | $389.6M22 | $200.8M23 | $328.7M24 | $835.8M25 |
| Cash & equivalents | $2.56B26 | $3.18B27 | $3.58B28 | $3.61B29 | $3.29B30 |
| Diluted shares | 138.7M | 128.2M | 112.6M | 107.9M | 102.4M |
Superscripts are receipts. Each links to the SEC filing the number came from (full list at the bottom).
10 shares is a claim on $572.71 of net worth that earned you $101.15 and generated $76.38 of cash last year, against $81.63 of debt.
It earned about 19% on equity, year after year, against a ~9% cost of capital — the footprint of real pricing power. Competition usually drags returns like this back down; here it hasn't.
seeing a moat in the numbers →Share count is down 26% over 5 years — management has been buying back stock, quietly handing owners a bigger slice. Total debt has risen 170% over the same window.
reading capital allocation →Signals, not verdicts — read from the filings above. Numbers don’t prove a moat; they show its footprint. You decide.
The 3 estimate methods that apply put fair value between $104.82 and $146.41 a share. They rest on different assumptions, so where they diverge is the story; the Graham Number is a stricter floor, not a target.
assumptions (10)
- riskFreeRate4.7%
- equityRiskPremium5.0%
- beta100.0%
- equityWeight85.0%
- costOfDebtSpread1.5%
- taxRate21.0%
- terminalGrowth2.5%
- projectionYears10
- fcfGrowth0.0%
- fcfBase$877.6M
assumptions (10)
- riskFreeRate4.7%
- equityRiskPremium5.0%
- beta100.0%
- equityWeight85.0%
- costOfDebtSpread1.5%
- taxRate21.0%
- terminalGrowth2.5%
- projectionYears5
- fcfGrowth0.0%
- fcfBase$877.6M
assumptions (8)
- riskFreeRate4.7%
- equityRiskPremium5.0%
- beta100.0%
- equityWeight85.0%
- costOfDebtSpread1.5%
- taxRate21.0%
- normalizedEarnings$1.04B
- growthAssumed0.0%
assumptions (1)
- grahamMultiplier2250.0%
Different models answer different questions — which to trust when →
| Bear | 0.0% | $146.41 |
| Base | 0.0% | $146.41 |
| Bull | 5.0% | $176.06 |
Bear/base/bull growth = 0% / filed history / history + 5pp. Type a price to see the return each case implies.
Default growth 0.0%= this company’s own filed history (median-to-median FCF CAGR, clamped 0–20%). Your adjustments are recorded anonymously. They become the “what do owners actually believe” dataset.
- 20-F · period ending 2021-12-31 · accession 0001193125-22-123600 (RevenueFromContractWithCustomerIncludingAssessedTax)
- 20-F · period ending 2022-12-31 · accession 0001193125-23-106425 (RevenueFromContractWithCustomerIncludingAssessedTax)
- 20-F · period ending 2023-12-31 · accession 0001193125-24-100774 (RevenueFromContractWithCustomerIncludingAssessedTax)
- 20-F · period ending 2024-12-31 · accession 0001193125-25-083419 (RevenueFromContractWithCustomerIncludingAssessedTax)
- 20-F · period ending 2025-12-31 · accession 0001104659-26-044015 (RevenueFromContractWithCustomerExcludingAssessedTax)
- 20-F · period ending 2021-12-31 · accession 0001193125-22-123600 (ProfitLoss)
- 20-F · period ending 2022-12-31 · accession 0001193125-23-106425 (ProfitLoss)
- 20-F · period ending 2023-12-31 · accession 0001193125-24-100774 (ProfitLoss)
- 20-F · period ending 2024-12-31 · accession 0001193125-25-083419 (ProfitLoss)
- 20-F · period ending 2025-12-31 · accession 0001104659-26-044015 (NetIncomeLoss)
- 20-F · period ending 2021-12-31 · accession 0001193125-22-123600 (NetCashProvidedByUsedInOperatingActivities)
- 20-F · period ending 2022-12-31 · accession 0001193125-23-106425 (NetCashProvidedByUsedInOperatingActivities)
- 20-F · period ending 2023-12-31 · accession 0001193125-24-100774 (NetCashProvidedByUsedInOperatingActivities)
- 20-F · period ending 2024-12-31 · accession 0001193125-25-083419 (NetCashProvidedByUsedInOperatingActivities)
- 20-F · period ending 2025-12-31 · accession 0001104659-26-044015 (NetCashProvidedByUsedInOperatingActivities)
- 20-F · period ending 2021-12-31 · accession 0001193125-22-123600 (PaymentsToAcquirePropertyPlantAndEquipment)
- 20-F · period ending 2022-12-31 · accession 0001193125-23-106425 (PaymentsToAcquirePropertyPlantAndEquipment)
- 20-F · period ending 2023-12-31 · accession 0001193125-24-100774 (PaymentsToAcquirePropertyPlantAndEquipment)
- 20-F · period ending 2024-12-31 · accession 0001193125-25-083419 (PaymentsToAcquirePropertyPlantAndEquipment)
- 20-F · period ending 2025-12-31 · accession 0001104659-26-044015 (PaymentsToAcquirePropertyPlantAndEquipment)
- 20-F · period ending 2021-12-31 · accession 0001193125-22-123600 (ShortTermBorrowings)
- 20-F · period ending 2022-12-31 · accession 0001193125-23-106425 (ShortTermBorrowings)
- 20-F · period ending 2023-12-31 · accession 0001193125-24-100774 (ShortTermBorrowings)
- 20-F · period ending 2024-12-31 · accession 0001193125-25-083419 (ShortTermBorrowings)
- 20-F · period ending 2025-12-31 · accession 0001104659-26-044015 (ShortTermBorrowings)
- 20-F · period ending 2021-12-31 · accession 0001193125-22-123600 (CashAndCashEquivalentsAtCarryingValue)
- 20-F · period ending 2022-12-31 · accession 0001193125-23-106425 (CashAndCashEquivalentsAtCarryingValue)
- 20-F · period ending 2023-12-31 · accession 0001193125-24-100774 (CashAndCashEquivalentsAtCarryingValue)
- 20-F · period ending 2024-12-31 · accession 0001193125-25-083419 (CashAndCashEquivalentsAtCarryingValue)
- 20-F · period ending 2025-12-31 · accession 0001104659-26-044015 (CashAndCashEquivalentsAtCarryingValue)