Overview
This codebook defines the 28 core variables used to record sustainability disclosure practices by SGX-listed issuers. The tracker records what companies disclose, not how well they perform. No scores or rankings are computed.
Unit of observation: One issuer-year (a single company’s sustainability report for one fiscal year).
Variables
Identification
| Variable | Type | Description |
|---|---|---|
| issuer_name | string | Full legal name of the reporting entity as stated on the cover page |
| sgx_ticker | string | SGX stock code (e.g., "D05" for DBS). If not stated in the report, leave as empty string and flag in ambiguities. |
| fiscal_year_end | string (YYYY-MM-DD) | End date of the fiscal year covered |
| report_url | string | URL to the original sustainability report. Populated after coding from public sources. |
| report_type | enum | standalone_sustainability | integrated_report | annual_report_section | none_found |
Framework references
Each variable is "yes" if the report explicitly names the framework. A report that follows the structure of a framework without naming it does NOT count. A report that mentions the framework only in a forward-looking statement (e.g., "we plan to adopt ISSB standards") counts as "no" but should be noted in the ambiguities array.
| Variable | Type | Values | Description |
|---|---|---|---|
| gri_mentioned | string | "yes" | "no" | Report explicitly names the GRI Standards as a framework used, or includes a GRI content index |
| issb_s1_mentioned | string | "yes" | "no" | Report explicitly references IFRS S1 or ISSB S1 by name |
| issb_s2_mentioned | string | "yes" | "no" | Report explicitly references IFRS S2 or ISSB S2 by name |
| tcfd_mentioned | string | "yes" | "no" | Report explicitly references TCFD, or is structured around the four TCFD pillars and explicitly labels them as TCFD-aligned |
| tnfd_mentioned | string | "yes" | "no" | Report explicitly references TNFD. General biodiversity discussion without naming TNFD counts as "no" |
| sdg_mentioned | string | "yes" | "no" | Report explicitly references UN SDGs or specific SDG numbers/icons |
Climate disclosures
| Variable | Type | Values | Description |
|---|---|---|---|
| scope1_disclosed | enum | "yes_quantitative" | "yes_qualitative" | "no" | yes_quantitative = specific numerical figure provided; yes_qualitative = discussed but no number; no = not mentioned. A chart showing emissions counts as quantitative if a number can be read from it. |
| scope2_disclosed | enum | "yes_quantitative" | "yes_qualitative" | "no" | Same rules as scope1 |
| scope3_disclosed | enum | "yes_quantitative" | "yes_qualitative" | "no" | Same rules as scope1. Selected Scope 3 categories with numbers count as yes_quantitative. Note which categories are covered in ambiguities. |
| emissions_methodology_stated | enum | "yes" | "no" | "not_applicable" | yes = names a specific methodology (e.g., GHG Protocol, ISO 14064) or describes organizational boundary approach; no = figures reported without methodology; not_applicable = no emissions disclosed |
| climate_targets_set | enum | "yes" | "no" | yes = at least one quantitative climate target with a target year; no = no quantitative targets with timelines |
| transition_plan_present | enum | "yes" | "no" | yes = describes HOW the company intends to achieve climate targets with specific actions, milestones, or investments; no = only targets stated without a plan |
Assurance
| Variable | Type | Values | Description |
|---|---|---|---|
| external_assurance | enum | "yes" | "no" | yes = independent third-party assurance statement included or referenced with named provider. Internal audit and board sign-off do NOT count. |
| assurance_provider_name | string | provider name | "not_applicable" | Name exactly as stated in report; "not_applicable" if no external assurance |
| assurance_standard | enum | "isae_3000" | "isae_3410" | "aa1000" | "other" | "not_stated" | "not_applicable" | Standard used; "not_applicable" if no external assurance. If "other", specify in ambiguities. |
| assurance_scope | enum | "emissions_only" | "selected_indicators" | "full_report" | "not_stated" | "not_applicable" | "other" | Scope of engagement; "not_applicable" if no external assurance |
Governance
| Variable | Type | Values | Description |
|---|---|---|---|
| board_sustainability_statement | enum | "yes" | "no" | yes = substantive statement (at least one full paragraph) from board/chair/CEO on sustainability. A single sentence in a general letter does NOT count. |
| board_sustainability_committee | enum | "yes" | "no" | yes = a board-level committee with explicit sustainability oversight responsibility. Management-level committees do NOT count. |
| sustainability_linked_compensation | enum | "yes" | "no" | yes = ESG/sustainability KPIs are explicitly part of executive compensation, bonus structures, or incentive plans |
Nature and biodiversity
| Variable | Type | Values | Description |
|---|---|---|---|
| nature_biodiversity_discussion | enum | "yes" | "no" | yes = at least one full paragraph discussing biodiversity, ecosystem services, deforestation, land use, water-related ecological impacts, or nature-related risks. A single sentence mention does NOT count. |
| tnfd_aligned_disclosure | enum | "yes" | "no" | yes = nature-related disclosures explicitly described as TNFD-aligned, or TNFD LEAP approach applied and described |
Verification metadata
| Variable | Type | Description |
|---|---|---|
| coded_by | enum | "llm" | "human" | "llm_verified" |
| verification_date | string (YYYY-MM-DD) | Date the coding was last verified. Empty string for initial LLM coding. |
Source-file notes
The source coding JSONs also store two supporting fields used for verification and dispute resolution. These notes are retained in the source files and schema, but are not displayed in the public dashboard export or counted among the 28 core variables.
| Field | Type | Description |
|---|---|---|
| evidence | object | Field-level page references and short supporting quotes used to justify each coded value |
| ambiguities | array of strings | Free-text notes on borderline cases, visual evidence, or coding judgments for that issuer-year |
Evidence object
Every coded variable must have a corresponding entry in the evidence object with:
- pages: Array of integer page numbers where evidence was found. Empty array
[]if not found. - quote: Short verbatim excerpt (max 30 words) supporting the coding. Use
"Not found in report"if coded as"no". Use"[FROM VISUAL: description]"for evidence from charts or infographics.
Ambiguities array (source files only)
An array of strings documenting edge cases, borderline decisions, or coding ambiguities. Each string should identify the variable and explain the decision. Empty array [] if no ambiguities. This field is retained in the source coding files for auditability and is not shown in the public tracker table.
Coding rules
- Base every answer on the attached report only. Do not use training data, prior knowledge, or external sources.
- Use only controlled vocabulary values. Do not create new categories or paraphrase allowed values.
- When in doubt, code conservatively. Prefer
"yes_qualitative"over"yes_quantitative"if unclear; prefer"no"if the mention is too vague. Explain in ambiguities. - Handle visuals carefully. Tag evidence from charts/infographics as
[FROM VISUAL: ...]and flag in ambiguities for human verification. - Read the entire report including appendices, assurance statements, GRI indexes, and data tables before coding.
Citation
APA:
Law, K. K. F. (2026). Singapore Sustainability Disclosure Tracker [Dataset]. https://kelvinlaw.me/tracker/tracker-live.html
BibTeX:
@misc{law2026sgtracker,
author = {Law, Kelvin K. F.},
title = {Singapore Sustainability Disclosure Tracker},
year = {2026},
url = {https://kelvinlaw.me/tracker/tracker-live.html}
}
Disclaimer
This tracker is for research and educational purposes only. It is not legal advice, investment advice, or a definitive compliance determination. Users should verify information against the original reports.
Access
The live tracker and codebook are free for academic and educational use. For raw data access, contact klaw@ntu.edu.sg.