# MacroVision 65 — Firm-data acquisition and estimand feasibility

26 October 2026. This stage acquired actual public files and audited whether their
fields can support the focused Korean/Slovenian tax designs. No causal estimator
or fiscal calibration was run. Results below distinguish observed files from a
catalogue, an access route, or a research application's possible scope.

## Concrete acquisition

### Korea: KoTaP firm accounting panel

Downloaded the CSV and README from the version-specific Zenodo record
[17149808](https://zenodo.org/api/records/17149808), linked by Na et al.'s paper
[arXiv:2511.04094](https://arxiv.org/abs/2511.04094). This is an author-constructed
panel of listed firms, not a release of administrative corporate tax returns.
The two file MD5 checksums match the record. SHA-256 hashes and byte lengths are
stored in `data/processed/firm_data_feasibility_v65.json`.

| Direct file check | Observed |
|---|---:|
| Firm-year rows | 12,653 |
| Columns | 65 |
| Distinct stock-code identifiers | 1,754 |
| Calendar-year coverage | 2011-2024 |
| Duplicate stock/year keys | 0 |
| Missing cells | 0 |
| Firms observed in all 14 years | 232 |
| Firm histories: minimum / maximum years | 1 / 14 |
| Firms with observations in 2016, 2018 and 2019 | 605 |
| Nonpositive accounting pre-tax-income rows | 1 |
| Non-December fiscal-year rows | 0 |

Identifiers are counted as supplied stock codes; no external legal-entity or
merger/ticker-change resolution has been performed. The 605-firm intersection is
a coverage diagnostic, not a chosen treated/control sample or an approved study
cohort. Selection into this already filtered listed-firm sample limits generalisation.
No row-level firm data is republished.

Annual coverage is retained separately in `kotap_year_coverage_v65.csv`. Absence of
missing cells within released rows does not imply a balanced longitudinal panel.
The record description explicitly acknowledges missing years; the paper's balanced
wording must not be taken as proof of complete histories. The single nonpositive
pre-tax-income observation is flagged for review, not silently deleted.

### Release/documentation discrepancies

- The downloaded CSV fails strict UTF-8 decoding and parses successfully with
  CP949, despite the README's UTF-8 claim.
- Record metadata labels the release v2; the bundled README calls it v1.0.
- Record metadata lists CC BY 4.0, whereas the README and paper list CC BY-NC 4.0.
  This needs clarification before redistribution or commercial integration.
- The README citation DOI differs from the acquired record. Pin the actual record
  ID and file checksums; do not silently merge versions or assume a citation fix.

The raw CSV, README and record response are held in the git-ignored external-input
folder. Only aggregate audit outputs, acquisition code and source provenance are
committed. This stage performs research inspection and makes no claim of a cleared
licence for republishing raw rows on the public MacroVision site.

### Slovenia: official AJPES workbook

Successfully downloaded the official 2017 company accounts workbook:
`https://www.ajpes.si/Doc/LP/Informacije/ENG/ENG_2017_companies.xlsx`.
Its size is 78,912 bytes, with SHA-256 recorded in the audit. The workbook contains
15 sheets (`contents`, `t1` through `t14`). Inspection identifies aggregate company
accounts, including company counts and amounts in thousand EUR. It is not an
individual firm's filed tax-return panel or proof of treatment/exposure fields.
The workbook is kept as a reproducible external input, not relabelled as microdata.

## Why the downloaded Korean file is not yet a threshold design

The release contains accounting `pti`, `tax`, `GETR`, `CETR`, financial statement
items and other derived indicators. The paper describes taxable income measures
as accounting-based approximations, including a construction from tax expense
divided by a statutory rate. That approximation is not a verified domestic filed
tax base. In particular, using the policy's tax rate to reconstruct taxable income
and then assign policy exposure could create a mechanical classification problem.

The following concepts still require independent evidence or linkage:

| Required concept | Why it is needed |
|---|---|
| Actual domestic taxable income and currency/unit | Identify exposure to the KRW 300 billion bracket |
| Predetermined exposure before the 2017 announcement | Reduce anticipation and endogenous reclassification concerns |
| Fiscal year, filing year, collection timing | Align the 2018 policy with the correct outcome period |
| Current tax, deferred tax and cash tax separately | Distinguish fiscal receipts from accounting revaluation |
| R&D credit and mutual-growth-policy exposure | Separate or explicitly define the bundled policy treatment |
| Domestic tax entity versus consolidated accounts | Avoid mapping a global group total to a domestic tax threshold |

The presence of an accounting pre-tax-profit value above KRW 300 billion is not
used as a treatment flag. No actual tax-base field is certified merely because
its name sounds similar. The observed 65-column schema is preserved in the audit;
variable units and the meanings of abbreviated monetary fields require validation.

## Access routes checked

The eight documented routes and their exact access status are in
`data/metadata/firm_data_sources_v65.json`.

| Route | Verified availability | Remaining issue |
|---|---|---|
| KoTaP | Actual CSV/README acquired and checksum-checked | Accounting measures, release/licence discrepancies, no certified tax exposure |
| NTS tax statistics centre | Official secure microdata research facility includes corporate tax | Eligibility, requested fields, period and permission unconfirmed |
| NTS/KOSIS aggregate statistics | Official filing-statistics documentation located | Bracket-level export not acquired; aggregated filing-year data cannot identify firms |
| OpenDART | Official financial-statement API documented, from 2015; key required | No key obtained; financial disclosure is not a tax return |
| SURS research microdata | Application, secure/remote modes and possible linkage documented | Availability/approval of the exact FURS tax linkage unconfirmed |
| SURS public-use files | Public EU-SILC/LFS files documented | Household/labour samples do not supply corporate tax exposure |
| AJPES aggregates | Actual official 2017 workbook acquired | Aggregate accounts only |
| AJPES company reports / LP API | Public viewing and machine-readable access route documented | Historical 2017 extraction and reuse conditions not verified |

NTS's official filing-statistics explanation distinguishes filing year from the
underlying income year, which is often the previous year. It also distinguishes
assessed burden after deductions/credits from a simple rate-times-base calculation.
These dates and measures must be aligned explicitly rather than shifted blindly.

For Slovenia, AJPES says free JOLP viewing covers the last five business years;
older reports require an archival request, and reuse/ordering can carry fees.
Its existence does not establish that 2017 firm-tax data are freely downloadable.
No order, account registration, purchase or application was made in this stage.
SURS's general access procedure does not confirm that every requested tax-return
field is available to this project. No confidential data has been accessed.

## Decision and useful next work (66)

A **descriptive listed-firm pilot is feasible** using the downloaded Korean panel,
after resolving field definitions. A rate-threshold causal study is not yet ready.
Slovenian firm tax exposure likewise remains unverified. Keep
`calibration_allowed=false` and `causal_identification_allowed=false`.

The next feasible stage is to validate the accounting identities and variable
units against source definitions, reconcile annual coverage/attrition, and test
whether year-to-year accounting-tax movements can be described reliably. Freeze
any proposed cohort using pre-announcement information and report coverage losses.
Do not use this exercise as an estimate of a tax-rate effect.

In parallel, prepare a specific NTS/SURS data specification for the concepts above
and determine project eligibility and available fields. Submitting requests or
creating accounts is a separate concrete action; none is implied by an access
catalogue. For a rate-only estimand, actual pre-policy taxable-income exposure and
concurrent-policy fields remain necessary. For a bundled-package estimand, specify
a new design explicitly. The benefits-financing model remains scenario-based.

## Reproduction

`python scripts/inspect_firm_data_v65.py --download`

This reacquires the specific public files, validates release checksums, records
encoding/provenance and writes aggregate audit outputs. It does not run downloaded
source code. Existing local copies are checked before reuse. Any changed checksum
stops the process rather than mixing versions. Network downloads are optional;
CI does not fetch external inputs.

`python -m unittest discover -s calibration -p 'test_*v6*.py'`

Six new offline tests check cohort coverage, balance, duplicate/missing keys,
nonfinite fields, fiscal-year flags, Korean decoding and identifier preservation.
The combined v62-v65 suite has 26 passing tests locally.
