EMNLP 2026 · Main Conference

Inference-time bias mitigation for financial LLMs

Summoning the Oracle
to Slay It.

Mitigating Look-Ahead Bias in Financial Backtesting with Large Language Models

Weixian Waylon Li·Mengyu Wang·Tiejun Ma

University of Edinburgh

No retrainingModel-specific discoveryEntity/date adaptive
FinCAD wizard, oracle and sword emblem
01Summon
parametric recall
02Measure
memorisation
03Suppress
biased logits
News

Accepted to EMNLP 2026 Main Conference. Code, discovery profiles and reproducibility tools are public.

Explore the release

The problem

A backtest can look forward
without seeing future data.

Historical context may be clean while the model itself already remembers what happened next. FinCAD targets this parametric look-ahead bias at inference time.

Abstract

Backtesting LLMs on historical financial data is unreliable when pre-training postdates the evaluated events. FinCAD learns a model-specific prior prompt that activates memorised outcomes, estimates whether that memory is present for each entity and date, and subtracts the prior from context-conditioned logits. The result is a targeted correction that requires no model retraining and is designed to decay when date-specific memorisation is absent.

Read the full abstract

The method

Discover. Calibrate. Decode.

FinCAD separates useful historical context from a model's recalled future outcomes through three linked stages.

01
T*

Adversarial bias discovery

Optimise a task-agnostic instruction that reliably elicits each model's parametric memory.

02
α(s,t)

Adaptive calibration

Use entropy and date variance to estimate memorisation for a specific entity and decision date.

03
Ṽ(y)

Context-aware decoding

Downweight memory-heavy tokens while retaining evidence from information available at the backtest date.

Animated method trace Illustrative next-token scores
Historical context Evidence available at t

Prices, fundamentals and signals through 2018-06-29

Oracle prior · T* Model's recalled outcome

“What I remember about this entity after date t…”

Adaptive penalty α(s,t)
fires only when memory is detected
Adjusted logitsFinCAD decode
UP
memory-heavy
DOWN
context-supported
HOLD
context-supported
BeforeAfter FinCAD
At each decoding step Ṽ(y) = (1 + α) V(y | xctx) − α V(y | xprior) No weight updates

System overview

The complete FinCAD pipeline

Open full resolution
FinCAD pipeline: adversarial bias discovery, entity-adaptive penalty and context-aware decoding
FinCAD first discovers a reusable memory activator, then calibrates the penalty per entity and date before correcting token logits during generation.

Empirical evidence

Bias mitigation without indiscriminate suppression.

The experiments separate memorised in-sample dates from strict post-cutoff evaluation and test whether model rankings become more predictive.

Reasoning preservation ≤ 1.7 pts

Mean accuracy change for four of the five core models across general benchmarks.

Model coverage 11 LLMs

A cross-family leaderboard audit, with five models evaluated in the full benchmark sweep.

Interpretation

FinCAD is a mitigation—not a guarantee that all training-data leakage has been removed. Its correction is intended to be strongest where the calibration probe detects date-specific memory.

Open-source release

Try FinCAD in five minutes.

Pre-computed discovery profiles let you apply FinCAD directly. The public CLI handles the context branch, oracle prior and adjusted decoding.

  • Reusable discovery JSONs
  • CLI and Python API
  • Paper reproduction runners
Read the full documentation
FinCAD · quick start
# Install the research release
git clone https://github.com/waylonli/FinCAD.git
cd FinCAD
pip install -e .

# Run with a released discovery profile
fincad \
  --model-name Qwen/Qwen2.5-7B-Instruct \
  --discovery-file \
    results/discovery/qwen2.5-7b-instruct.json \
  --context-file examples/nvda_2018_context.txt \
  --task-file examples/forecast_task.txt \
  --entity NVDA --date 2018-06-29 \
  --alpha 1.0 --max-new-tokens 64

Citation

Build on FinCAD.

If this work supports your research, please cite the paper and link to the public implementation.

@misc{li2026summoningoracleslayit,
  title   = {Summoning the Oracle to Slay It: Mitigating
             Look-Ahead Bias in Financial Backtesting with
             Large Language Models},
  author  = {Li, Weixian Waylon and Wang, Mengyu and Ma, Tiejun},
  year    = {2026},
  eprint  = {2605.24564},
  archivePrefix = {arXiv},
  primaryClass  = {cs.AI}
}