VIRCO MFG CORPORATION
VIRCdata completeness 100%17 fiscal years on fileVIRCO MFG CORPORATION earns about 12% on invested capital, comfortably above its ~9% cost of capital, with a roughly flat share count — a real edge showing up in the numbers. The estimate methods put fair value between $10.87 and $26.92 a share.Whether it’s worth owning at today’s price is the last question — and yours to answer, below.
| Figure | FY 2022 | FY 2023 | FY 2024 | FY 2025 | FY 2026 |
|---|---|---|---|---|---|
| Revenue | $184.8M1 | $231.1M2 | $269.1M3 | $266.2M4 | $199.7M4 |
| Net income | −$15.1M5 | $16.5M6 | $21.9M7 | $21.6M8 | $2.57M8 |
| Operating cash flow | −$401,0009 | −$3.79M10 | $27M11 | $33.1M12 | −$841,00012 |
| Capital expenditure | $3M13 | $3.33M14 | $5.25M15 | $6.3M16 | $5.85M16 |
| Free cash flow (derived) | −$3.4M9 | −$7.12M10 | $21.7M11 | $26.8M12 | −$6.7M12 |
| Total debt | $29M17 | $43.5M18 | $8.77M19 | $8.27M20 | $7.76M20 |
| Cash & equivalents | $1.36M21 | $1.06M22 | $5.3M23 | $26.9M24 | $14.4M25 |
| Diluted shares | 16.0M | 16.2M | 16.4M | 16.4M | 15.8M |
Superscripts are receipts. Each links to the SEC filing the number came from (full list at the bottom).
10 shares is a claim on $67.17 of net worth that earned you $1.63 and generated −$4.25 of cash last year, against $4.92 of debt.
It earned about 12% on invested capital against a ~9% cost of capital — comfortably above the cost of funding, a moderate advantage.
seeing a moat in the numbers →Share count is roughly flat over 5 years — little dilution, little buyback. Total debt has fallen 73% — deleveraging.
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 $10.87 and $26.92 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
- fcfGrowth5.0%
- fcfBase$21.7M
assumptions (10)
- riskFreeRate4.7%
- equityRiskPremium5.0%
- beta100.0%
- equityWeight85.0%
- costOfDebtSpread1.5%
- taxRate21.0%
- terminalGrowth2.5%
- projectionYears5
- fcfGrowth5.0%
- fcfBase$21.7M
assumptions (8)
- riskFreeRate4.7%
- equityRiskPremium5.0%
- beta100.0%
- equityWeight85.0%
- costOfDebtSpread1.5%
- taxRate21.0%
- normalizedEarnings$16.5M
- growthAssumed0.0%
assumptions (1)
- grahamMultiplier2250.0%
Different models answer different questions — which to trust when →
| Bear | 0.0% | $20.09 |
| Base | 5.0% | $24.85 |
| Bull | 10.0% | $30.55 |
Bear/base/bull growth = 0% / filed history / history + 5pp. Type a price to see the return each case implies.
Default growth 5.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.
- 10-K · period ending 2022-01-31 · accession 0001628280-23-014114 (RevenueFromContractWithCustomerExcludingAssessedTax)
- 10-K · period ending 2023-01-31 · accession 0001628280-24-016004 (RevenueFromContractWithCustomerExcludingAssessedTax)
- 10-K · period ending 2024-01-31 · accession 0001628280-25-017640 (RevenueFromContractWithCustomerExcludingAssessedTax)
- 10-K · period ending 2025-01-31 · accession 0001628280-26-024204 (RevenueFromContractWithCustomerExcludingAssessedTax)
- 10-K · period ending 2022-01-31 · accession 0001628280-23-014114 (NetIncomeLoss)
- 10-K · period ending 2023-01-31 · accession 0001628280-24-016004 (NetIncomeLoss)
- 10-K · period ending 2024-01-31 · accession 0001628280-25-017640 (NetIncomeLoss)
- 10-K · period ending 2025-01-31 · accession 0001628280-26-024204 (NetIncomeLoss)
- 10-K · period ending 2022-01-31 · accession 0001628280-23-014114 (NetCashProvidedByUsedInOperatingActivities)
- 10-K · period ending 2023-01-31 · accession 0001628280-24-016004 (NetCashProvidedByUsedInOperatingActivities)
- 10-K · period ending 2024-01-31 · accession 0001628280-25-017640 (NetCashProvidedByUsedInOperatingActivities)
- 10-K · period ending 2025-01-31 · accession 0001628280-26-024204 (NetCashProvidedByUsedInOperatingActivities)
- 10-K · period ending 2022-01-31 · accession 0001628280-23-014114 (PaymentsToAcquirePropertyPlantAndEquipment)
- 10-K · period ending 2023-01-31 · accession 0001628280-24-016004 (PaymentsToAcquirePropertyPlantAndEquipment)
- 10-K · period ending 2024-01-31 · accession 0001628280-25-017640 (PaymentsToAcquirePropertyPlantAndEquipment)
- 10-K · period ending 2025-01-31 · accession 0001628280-26-024204 (PaymentsToAcquirePropertyPlantAndEquipment)
- 10-K · period ending 2022-01-31 · accession 0001628280-23-014114 (LongTermDebtNoncurrent)
- 10-K · period ending 2023-01-31 · accession 0001628280-24-016004 (LongTermDebtNoncurrent)
- 10-K · period ending 2024-01-31 · accession 0001628280-25-017640 (LongTermDebtNoncurrent)
- 10-K · period ending 2025-01-31 · accession 0001628280-26-024204 (LongTermDebtNoncurrent)
- 10-K · period ending 2022-01-31 · accession 0001628280-24-016004 (CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents)
- 10-K · period ending 2023-01-31 · accession 0001628280-25-017640 (CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents)
- 10-K · period ending 2024-01-31 · accession 0001628280-24-016004 (CashAndCashEquivalentsAtCarryingValue)
- 10-K · period ending 2025-01-31 · accession 0001628280-26-024204 (CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents)
- 10-K · period ending 2026-01-31 · accession 0001628280-26-024204 (CashAndCashEquivalentsAtCarryingValue)