NWPX · XBRL financial data
NWPX Infrastructure financial statements, every fiscal year
The same tables from 6 filings, lined up. Matched by XBRL tag: renamed lines keep their history.
How these numbers work
- Every number comes from the company's XBRL financial data filed with the SEC, and each one links to its filing.
- Lines are matched by XBRL tag, so a line renamed between filings keeps its history.
- * marks a quarter worked out from the filing totals: the 10-K year minus the first three quarters, or a year-to-date total minus the earlier one. Fourth-quarter earnings per share is fourth-quarter net income over the fourth-quarter weighted shares.
- 0 means a filing states zero; a dash (—) means no filing states that number.
- “year only” means the 10-K gives the full year but not the quarters needed to work out the fourth. A worked-out quarter of revenue, cost of revenue or operating cash flow more than twice the company's largest quarter of the two years before is shown this way too.
- Gross profit is shown as the company reports it; a worked-out quarter must equal revenue less cost of revenue for that quarter, or it is a dash.
- Operating income can be above gross profit when the company books other operating income between the two, shown on its own line.
- Shares outstanding come from each filing's cover page, as of the date printed there.
- Quarters are fiscal: Q2 FY27 is the second quarter of the company's fiscal 2027.
Income statement
CSVFiscal years (NWPX's year ends in late December)
| In thousands of dollars | Dec 31, 2020 | Dec 31, 2021 | Dec 31, 2022 | Dec 31, 2023 | Dec 31, 2024 | Dec 31, 2025 |
|---|---|---|---|---|---|---|
| Cost of goods and services sold | 235,388 | 289,059 | 371,810 | 366,713 | 397,143 | 422,366 |
| Gross profit | 50,519 | 44,254 | 85,855 | 77,642 | 95,405 | 103,637 |
| Selling, general and administrative | 24,954 | 28,222 | 41,034 | 43,784 | 47,161 | 52,767 |
| Operating income (loss) | 25,565 | 16,032 | 44,821 | 33,858 | 48,244 | 50,870 |
| Interest expense | 933 | 1,202 | 3,568 | 4,855 | 5,660 | 2,609 |
| Other income (expense) | 953 | 328 | 97 | 276 | (213) | (1,783) |
| Income tax expense (benefit) | 6,584 | 3,635 | 10,201 | 8,207 | 8,165 | 11,067 |
| Net income (loss) | 19,050 | 11,523 | 31,149 | 21,072 | 34,206 | 35,411 |
| Earnings per share, basic USD per share | 1.95 | 1.17 | 3.14 | 2.11 | 3.45 | 3.62 |
| Earnings per share, diluted USD per share | 1.93 | 1.16 | 3.11 | 2.09 | 3.40 | 3.56 |
| Weighted average shares, basic thousands of shares | 9,788 | 9,854 | 9,914 | 9,991 | 9,916 | 9,774 |
| Weighted average shares, diluted thousands of shares | 9,873 | 9,928 | 10,012 | 10,081 | 10,066 | 9,937 |
Balance sheet
CSVFiscal years (NWPX's year ends in late December)
Cash flows
CSVFiscal years (NWPX's year ends in late December)
| In thousands of dollars | Dec 31, 2020 | Dec 31, 2021 | Dec 31, 2022 | Dec 31, 2023 | Dec 31, 2024 | Dec 31, 2025 |
|---|---|---|---|---|---|---|
| Net income (loss) | 19,050 | 11,523 | 31,149 | 21,072 | 34,206 | 35,411 |
| Stock-based compensation | 3,088 | 3,216 | 3,702 | 3,672 | 5,061 | 5,564 |
| Net cash from operating activities | 56,087 | (5,811) | 17,540 | 53,455 | 55,051 | 67,283 |
| Purchases of property and equipment | 14,013 | 13,262 | 22,829 | 18,291 | 20,799 | 20,177 |
| Net cash from investing activities | (61,433) | (100,152) | (23,050) | (20,372) | (20,736) | (20,146) |
| Share repurchases | — | 0 | 0 | 707 | 4,429 | 18,351 |
| Proceeds from long-term debt | 15,879 | 0 | 10,756 | 0 | 4,244 | 0 |
| Repayments of long-term debt | 2,117 | 13,762 | 0 | 0 | 500 | 3,000 |
| Net cash from financing activities | 12,259 | 71,033 | 6,194 | (32,696) | (33,376) | (49,871) |
| Net change in cash | 6,913 | (34,930) | 684 | 387 | 939 | (2,734) |
Compare with peers
SIC 3317 and related industry codes, similar size. Each row is the latest quarter reported.
How peers are chosen
- SIC 3317 and related industry codes with public float (or, where float is missing, quarterly revenue) between 0.2x and 5x the company's.
- Each row is the latest quarter the company has reported, named in the Quarter column; when that filing is a 10-K, it is the fourth quarter, never the full year.
- * marks a quarter worked out from the filing totals: for a 10-K, the year less the first three quarters; for a 10-Q, the year-to-date total less the earlier one.
- A cell reading “not reported” means the filings give no figure for that quarter alone.
| Company | Cash ($K) | Revenue, quarter ($K) | Operating cash flow, quarter ($K) | Shares outstanding | Quarter |
|---|---|---|---|---|---|
| NWPX Infrastructure | 6,058 | 179,392 | 27,381* | 9.6M | 10-QSep 30, 2026 |
| Friedman Industries | 5,028 | not reported | 7,311 | 7.2M | 10-QJun 30, 2026 |
| Titan International | 172,787 | 335,177 | 17,135* | 64.6M | 10-QSep 30, 2026 |
| Insteel Industries | 37,480 | 209,278* | 18,599* | 19.4M | 10-KOct 3, 2026 |
| Metallus | 98,600 | 337,200 | 6,800* | 41.3M | 10-QSep 30, 2026 |
| SunCoke Energy | 57,600 | 485,900 | 94,800* | 84.9M | 10-QSep 30, 2026 |
| Worthington Steel | 248,200 | 2,726,600 | (6,000) | 51.2M | 10-QAug 31, 2026 |
| Gibraltar Industries | 15,147 | 509,547 | 3,765* | 29.7M | 10-QJun 30, 2026 |
Not investment advice. Not affiliated with the U.S. SEC.
