Paper | GitHub | HF Demo | PyPI | Docs | Citation | Quickstart
Compute valid lower and upper causal bounds under unmeasured confounding when point identification is not credible.
Point causal effects usually require strong assumptions such as no hidden confounding, valid instruments, or other auxiliary structure. When those assumptions are not credible, itbound returns causal intervals instead of fragile point estimates, without forcing bounded outcomes or sensitivity-parameter workflows.
- Point identification is powerful, but brittle when its assumptions are not believable.
- Causal intervals remain meaningful when strong identification assumptions fail.
- Older bound methods often relied on bounded outcomes, discrete settings, or other restrictive inputs that are awkward for modern ML-style datasets.
- Researchers who do not believe no-unmeasured-confounding but still want causal information.
- Users who need causal intervals rather than overconfident point estimates.
- People who want a CLI and Python package, not just a theorem.
python -m pip install itbound
itbound example --out /tmp/itbound_example.csv
itbound quick --data /tmp/itbound_example.csv --treatment a --outcome y --covariates x1,x2 --outdir /tmp/itbound_quickOutputs:
results.jsonclaims.mdplots/report.htmlbounds.csvandsummary.jsonin standard mode
- Lower and upper causal bounds under unmeasured confounding
- CLI plus Python API
- Claims and reporting artifacts for sharing results
- Support for practical observational CSV workflows
- Reproducible figure-generation paths for the paper
IHDP is one of the best-known personalized-effect benchmarks. In that setting, itbound tracks the true effect trend with lower and upper bounds even when outcomes are not restricted to [0, 1], which is exactly where many older causal-bound workflows become uncomfortable or unusable.
Paper: Data-Driven Information-Theoretic Causal Bounds under Unmeasured Confounding
Quick path:
itbound example --out /tmp/itbound_example.csv
itbound quick --data /tmp/itbound_example.csv --treatment a --outcome y --covariates x1,x2 --outdir /tmp/itbound_quickStandard mode:
itbound standard --csv /tmp/itbound_example.csv --y-col y --a-col a --x-cols x1,x2 --outdir /tmp/itbound_standard --divergences KL,JS,Hellinger,TV,Chi2 --aggregation-mode paper_adaptive_k --htmlPaper-figure dry run:
itbound reproduce --dry-runMore detail:
Software citation metadata is in CITATION.cff.
@article{jung2026itbound,
title = {Data-Driven Information-Theoretic Causal Bounds under Unmeasured Confounding},
author = {Jung, Yonghan and Kang, Bogyeong},
year = {2026},
url = {https://arxiv.org/abs/2601.17160}
}- Paper: https://arxiv.org/abs/2601.17160
- PyPI: https://pypi.org/project/itbound/
- Repository: https://github.com/yonghanjung/Information-Theretic-Bounds
- Hugging Face demo: https://huggingface.co/spaces/yonghanjung/itbound-demo
- Quickstart: docs/quickstart.md
- Artifact contract: docs/artifact_contract.md
Live demo preview:
To regenerate the GIF:
bash scripts/demo/make_quick_demo.shfrom itbound.standard import run_standard_bounds
result = run_standard_bounds(
csv_path="/tmp/itbound_toy.csv",
outcome_col="y",
treatment_col="a",
covariate_cols=["x1", "x2"],
divergences=["KL", "JS", "Hellinger", "TV", "Chi2"],
aggregation_mode="paper_adaptive_k",
outdir="/tmp/itbound_standard",
write_html=True,
)Legacy import remains supported:
import fboundRun from config:
itbound run --config docs/cli-config.example.yamlOverride output path:
itbound run --config docs/cli-config.example.yaml --out /tmp/itbound_bounds.csvArtifact contract mode:
itbound artifacts --csv /tmp/itbound_toy.csv --y-col y --a-col a --x-cols x1,x2 --outdir /tmp/itbound_artifacts --divergences KLresults.jsonis the schema-versioned artifact for quick and artifact-contract flows.claims.mdis the readable report for sharing robust claims.bounds.csvandsummary.jsonare produced in standard mode.report.htmlis optional and written when HTML output is enabled.
python -m pip install -e .[dev]
python -m pytest -q
python -m build- If plots do not render, install extras with
python -m pip install 'itbound[experiments]'. - If you only need a fast install check, run
itbound --help. - If you want the demo figures, run from the repo root so the bundled data paths resolve correctly.

