PPG INDUSTRIES INC: operating income or loss
Operating income or loss for PPG INDUSTRIES INC. Inspect selected reporting periods, original units and SEC filing links; download the financial history.
All PPG INDUSTRIES INC financial histories
What this measure means
Operating revenue less operating expenses for the reporting period. It excludes items outside the reported operating result and is not free cash flow.
Exact concept: us-gaap:OperatingIncomeLoss. Each value covers an annual-duration reporting interval, shown with both start and end dates. Different units remain separate; no currency conversion or interpolation is applied.
Coverage of this history
Selected reporting periods run from 2009-01-01 to 2023-12-31. The SEC response was captured on 2026-09-19.
This selected history ends more than two years before capture. Do not treat its final value as a current balance or current annual result. More recent filings may use another accounting tag; inspect the filings before drawing conclusions about the company.
Selected filing history
| Period start | Period end | Value | Unit | Filed | Source filing |
|---|---|---|---|---|---|
| 2023-01-01 | 2023-12-31 | 2,675,000,000 | USD | 2024-02-15 | 10-K · 0000079879-24-000040 |
| 2022-01-01 | 2022-12-31 | 2,042,000,000 | USD | 2024-02-15 | 10-K · 0000079879-24-000040 |
| 2021-01-01 | 2021-12-31 | 2,171,000,000 | USD | 2024-02-15 | 10-K · 0000079879-24-000040 |
| 2020-01-01 | 2020-12-31 | 2,109,000,000 | USD | 2023-02-16 | 10-K · 0000079879-23-000007 |
| 2019-01-01 | 2019-12-31 | 2,271,000,000 | USD | 2022-02-17 | 10-K · 0000079879-22-000009 |
| 2018-01-01 | 2018-12-31 | 2,118,000,000 | USD | 2021-02-18 | 10-K · 0000079879-21-000008 |
| 2017-01-01 | 2017-12-31 | 2,292,000,000 | USD | 2020-02-20 | 10-K · 0000079879-20-000008 |
| 2016-01-01 | 2016-12-31 | 2,382,000,000 | USD | 2019-02-21 | 10-K · 0000079879-19-000008 |
| 2015-01-01 | 2015-12-31 | 2,287,000,000 | USD | 2018-06-28 | 10-K/A · 0000079879-18-000039 |
| 2014-01-01 | 2014-12-31 | 2,191,000,000 | USD | 2017-02-16 | 10-K · 0000079879-17-000009 |
| 2013-01-01 | 2013-12-31 | 1,923,000,000 | USD | 2016-02-18 | 10-K · 0000079879-16-000065 |
| 2012-01-01 | 2012-12-31 | 1,629,000,000 | USD | 2015-02-19 | 10-K · 0000079879-15-000009 |
| 2011-01-01 | 2011-12-31 | 1,657,000,000 | USD | 2014-02-20 | 10-K · 0000079879-14-000010 |
| 2010-01-01 | 2010-12-31 | 1,722,000,000 | USD | 2013-02-21 | 10-K · 0000079879-13-000016 |
| 2009-01-01 | 2009-12-31 | 1,186,000,000 | USD | 2012-02-16 | 10-K · 0001193125-12-064763 |
Related financial histories
- PPG INDUSTRIES INC: total assets
- PPG INDUSTRIES INC: total liabilities
- PPG INDUSTRIES INC: stockholders equity
- PPG INDUSTRIES INC: cash and cash equivalents
- PPG INDUSTRIES INC: net income or loss
- PPG INDUSTRIES INC: operating cash flow
- PPG INDUSTRIES INC: capital expenditure payments
- PPG INDUSTRIES INC: revenue
- PPG INDUSTRIES INC: contract revenue excluding tax
- PPG INDUSTRIES INC: financing cash flow
- PPG INDUSTRIES INC: investing cash flow
- PPG INDUSTRIES INC: retained earnings or deficit
- PPG INDUSTRIES INC: basic weighted-average shares
- PPG INDUSTRIES INC: diluted weighted-average shares
- PPG INDUSTRIES INC: basic earnings per share
- PPG INDUSTRIES INC: diluted earnings per share
- PPG INDUSTRIES INC: income tax expense or benefit
- PPG INDUSTRIES INC: net property, plant and equipment
- PPG INDUSTRIES INC: share-based compensation expense
- PPG INDUSTRIES INC: current assets
- PPG INDUSTRIES INC: interest expense
- PPG INDUSTRIES INC: current liabilities
- PPG INDUSTRIES INC: goodwill carrying amount
- PPG INDUSTRIES INC: net finite-lived intangible assets
- PPG INDUSTRIES INC: net current accounts receivable
- PPG INDUSTRIES INC: common-stock repurchase payments
- PPG INDUSTRIES INC: net inventory
- PPG INDUSTRIES INC: selling, general and administrative expense
- PPG INDUSTRIES INC: research and development expense
Inspect the source
- Entity
- PPG INDUSTRIES INC / CIK 0000079879
- Captured
- 2026-09-19T14:51:22.035Z
- SEC response SHA-256
d2115215c7b5332e873631ef48ba58e08b126192b275c4f6043c31c439948a74
Current SEC company facts · Download the original response snapshot (gzip) · Download the selected JSON
Latest-filed annual-report facts per unit and reporting period at capture time. Duration facts cover 300 to 400 days. This selection can include restatements and is not a point-in-time backtest dataset. Missing concepts are omitted, never zero-filled. Values retain original units and are not currency converted. Extended concepts require compatible unit shapes and at least three reporting ends with changing values within one unit. Constant or incompatible added histories are omitted.
Public company accounting reference, not market prices, returns, an investment recommendation, or ALPHAC performance. Validate a separately constructed return series with the validation API; accounting values are not returns.
Use this in research
A financial period ends before its results become public. Use the filing date as a minimum availability boundary, inspect amendments, and retain the original filing vintage when testing historical signals. This latest-filed selection can contain information unavailable at the time.
These pages do not supply prices, total-return histories, corporate-action adjustments or a tradable universe. Build those inputs separately before evaluating a strategy. A profitable backtest can still reflect selection bias or costs that were left out.
Research methodology · Execution and cost assumptions · Check backtest overfitting
Build with the open-source tools
Use these accounting records as inspectable inputs. When you have constructed a return series, the validation tools can help test its statistical evidence and preserve the result with its limitations.
- Get an API key and run your first validation
- Connect the MCP server to your coding assistant
- Inspect the ALPHAC engine on GitHub
- Read the MCP server source and integration examples
Read the published dataset with Python
import json
from urllib.request import urlopen
with urlopen("https://canlicapital.com/company-data/0000079879.json") as response:
record = json.load(response)
print(record["fetched_at"])
print(record["policy"])
for concept in record["concepts"]:
print(concept["tag"], next(iter(concept["observations"])))