Scale-neutrality test and analysis code for "Two corporate environmental ratings reward firm size at constant emission intensity
Authors/Creators
Description
This record contains the code for the article "What do corporate environmental scores reward? Decomposing carbon performance into scale, efficiency and trajectory".
**Scale-neutrality test.** A firm's emissions satisfy E = Y × (E/Y), so ln E = ln(E/Y) + ln Y, a firm-level Kaya identity. At constant emission intensity, more revenue means more emissions, so no score that measures carbon performance should rise with revenue. The test regresses a rating score on log intensity and log revenue with industry fixed effects and tests whether the revenue coefficient is at most zero (H0: β_Y ≤ 0, one-sided). It needs only emissions, revenue and a score, so it can be applied to any ESG or climate rating. The folder `demo/` contains the test script and 2,000 simulated firms with three scores whose results are known in advance.
**Analysis code.** The folder `analysis/` contains the scripts that reproduce every table and figure in the article: sample construction, Shapley R² decomposition, benchmark tests, issue-level tests, the 2020–2024 panel, robustness checks, cross-checks against the national greenhouse gas registry, and SBTi target tests.
**Data.** The firm-level data come from the Taiwan Economic Journal (TEJ) database under licence and are not included. Users with TEJ access can rebuild all results from the original TEJ exports. Public inputs are the Ministry of Environment greenhouse gas registry, TWSE/TPEx ESG disclosure files and the SBTi Target Dashboard.
Requirements: Python 3.13, numpy, pandas, matplotlib, openpyxl. See README.md for usage.