{"about":{"site":"https://codewithpapers.app","non_affiliation":"Code with Papers and Syntology are not affiliated with, endorsed by, or sponsored by Papers with Code, Meta, or the pwc-archive mirror.","licence":"CC BY-SA 4.0","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","attribution":"https://codewithpapers.app/attribution","modified":"archive material modified by Syntology; see the attribution page"},"url":"/paper/arxiv-2609-12639","title":"Explaining Time Series Forecasting with Horizon-Resolved Attribution","arxiv_id":"2609.12639","date":"2026-09-11","proceeding":null,"authors":["Seunghan Lee","Jun Seo","Jaehoon Lee","Junhyeok Kang","Sangjun Han","Sungdong Yoo","Minjae Kim","Tae Yoon Lim","Dongwan Kang","Hwanil Choi","Soonyoung Lee","Wonbin Ahn"],"abstract":"Recent advances in explaining time series (TS) models have produced methods that identify which past values a prediction depends on. However, most existing methods return a single importance vector, assuming that every predicted step depends on the same past values. In this paper, we show that this assumption does not hold, as different forecast steps depend on different past values. Motivated by this observation, we propose Horizon-Resolved eXplanation (HRX), which adds a horizon axis to the explanation, so that every forecast step receives its own importance map. HRX is a simple yet effective plug-in framework with three components: 1) an estimator that reads these maps out of any differentiable forecaster without modifying the TS backbone, 2) an evaluation protocol that validates the horizon axis by measuring how much a single forecast step changes when the inputs an importance map ranks highest are removed, and 3) a rank criterion that predicts in advance whether the axis is worth resolving on a given TS. We further show that this step-wise dependence is low-dimensional, as the explanations of all steps are built from a few shared maps whose number does not grow with the forecast length. Extensive experiments across various backbones and datasets show that the improvement comes from the horizon axis and holds for estimators of previous explanation methods. Code is available at https://github.com/seunghan96/HRX.","url_abs":"https://arxiv.org/abs/2609.12639","url_pdf":"https://arxiv.org/pdf/2609.12639","source":{"archive":null,"snapshot":"2025-07-28","note":"not in the Papers with Code archive (frozen at the snapshot)","row_kind":"graph","title_abstract_authors_date":"arXiv metadata, CC0 1.0 (https://info.arxiv.org/help/license)"},"code_links":[],"tasks":[],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2609.12639","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2609.12639"}},"developers":"https://syntology.ai/developers","read_at":"2026-09-24T18:15:14+00:00","read_at_is":"when the build read Syntology's graph, not when any sample ran","claim":"Per-sample execution status on synthesized fixtures; not a correctness claim about the paper. Samples come from repositories linked to the paper, official or community; repo_kind says which.","repos":[{"mentioned_in_github":null,"is_official":null,"provenance":"deterministic:regex_extraction","mentioned_in_paper":null,"url":"https://github.com/seunghan96/HRX","reach":{"status":"ok","spdx":"MIT"}}],"summary":{"unverified":12},"by_repo_kind":{"found_in_text":{"samples":12,"ran":0,"repositories":1}},"repo_kind_vocabulary":{"official":"The archive marks this repository official for the paper","named_in_paper":"The archive records that the paper mentions this repository; it is not marked official","listed":"In the archive's code links for this paper, not marked official and not recorded as mentioned in the paper","found_in_text":"Syntology found this repository in the paper's own text; whether it is the authors' implementation is not asserted","community":"Not in the archive's code links for this paper; a community repository Syntology harvested"},"n_pointer_only_for_licence":0,"samples":[{"code_sha256_prefix":"82a2fa3ecc410805","entry":"backbone_key","repo":"seunghan96/HRX","repo_kind":"found_in_text","path":"experiments/backbone_order.py","file_url":"https://github.com/seunghan96/HRX/blob/HEAD/experiments/backbone_order.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"82a2fa3ecc410805"}},{"code_sha256_prefix":"b77128af597b8e9f","entry":"dataset_stats","repo":"seunghan96/HRX","repo_kind":"found_in_text","path":"experiments/run_compare.py","file_url":"https://github.com/seunghan96/HRX/blob/HEAD/experiments/run_compare.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"b77128af597b8e9f"}},{"code_sha256_prefix":"ae93b6f647ae6cfc","entry":"explain_taps","repo":"seunghan96/HRX","repo_kind":"found_in_text","path":"experiments/run_exp.py","file_url":"https://github.com/seunghan96/HRX/blob/HEAD/experiments/run_exp.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"ae93b6f647ae6cfc"}},{"code_sha256_prefix":"207690a3bab541bc","entry":"hrx_metrics","repo":"seunghan96/HRX","repo_kind":"found_in_text","path":"tsxai/methods/hrx.py","file_url":"https://github.com/seunghan96/HRX/blob/HEAD/tsxai/methods/hrx.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"207690a3bab541bc"}},{"code_sha256_prefix":"fe9de43cafa96a17","entry":"jsonable","repo":"seunghan96/HRX","repo_kind":"found_in_text","path":"experiments/run_exp.py","file_url":"https://github.com/seunghan96/HRX/blob/HEAD/experiments/run_exp.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"fe9de43cafa96a17"}},{"code_sha256_prefix":"5a768915128f9a4f","entry":"make_config","repo":"seunghan96/HRX","repo_kind":"found_in_text","path":"tsxai/config.py","file_url":"https://github.com/seunghan96/HRX/blob/HEAD/tsxai/config.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"5a768915128f9a4f"}},{"code_sha256_prefix":"b1f7ccd7a206fe1f","entry":"needs_gradsafe","repo":"seunghan96/HRX","repo_kind":"found_in_text","path":"tsxai/gradsafe.py","file_url":"https://github.com/seunghan96/HRX/blob/HEAD/tsxai/gradsafe.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"b1f7ccd7a206fe1f"}},{"code_sha256_prefix":"78670e51621bf431","entry":"rich_stats","repo":"seunghan96/HRX","repo_kind":"found_in_text","path":"experiments/run_mech.py","file_url":"https://github.com/seunghan96/HRX/blob/HEAD/experiments/run_mech.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"78670e51621bf431"}},{"code_sha256_prefix":"4a2c90d93974461b","entry":"scan","repo":"seunghan96/HRX","repo_kind":"found_in_text","path":"experiments/exp_registry.py","file_url":"https://github.com/seunghan96/HRX/blob/HEAD/experiments/exp_registry.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"4a2c90d93974461b"}},{"code_sha256_prefix":"ca5de74417b12a6c","entry":"timed","repo":"seunghan96/HRX","repo_kind":"found_in_text","path":"experiments/run_cost.py","file_url":"https://github.com/seunghan96/HRX/blob/HEAD/experiments/run_cost.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"ca5de74417b12a6c"}},{"code_sha256_prefix":"66349101727149ae","entry":"verify_equivalence","repo":"seunghan96/HRX","repo_kind":"found_in_text","path":"tsxai/gradsafe.py","file_url":"https://github.com/seunghan96/HRX/blob/HEAD/tsxai/gradsafe.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"66349101727149ae"}},{"code_sha256_prefix":"6df2a85dfb47e1a2","entry":"zero_shot_error","repo":"seunghan96/HRX","repo_kind":"found_in_text","path":"experiments/run_fm.py","file_url":"https://github.com/seunghan96/HRX/blob/HEAD/experiments/run_fm.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"6df2a85dfb47e1a2"}}]},"arxiv_metadata":{"licence":"arXiv metadata, CC0 1.0 (https://info.arxiv.org/help/license)","fields":["title","abstract","authors","date"],"primary_category":"cs.LG","source":"arxiv_backlog_21d_20260915.json"},"syntology_extracted_results":null}