ChronoGPT-Instruct (replication) β€” vintage 2005 (cutoff 2005-12-31)

Independent replication β€” not an official release. This model was fine-tuned by Huanyu Zhang as a from-scratch reconstruction of the training pipeline in He, Lv, Manela & Wu (2025). It is not produced or endorsed by the paper's authors (manelalab). The base weights and the SFT dataset are theirs; the instruction-tuning code and these fine-tuned weights are this replication's. Absolute numbers are not expected to match the paper to the decimal (see Limitations).

Model description

chrono-instruct-v1-20051231 is an instruction-tuned language model built by supervised fine-tuning (SFT) of the base model manelalab/chrono-gpt-v1-20051231 β€” a ~1.55B-parameter, 52-layer modded-nanoGPT U-net (26 encoder + 26 decoder layers with skip connections and value embeddings; model_dim 1536, 12 heads, vocab 50304, context 1792; RMSNorm, rotary position embeddings, QK-norm, ReLUΒ² MLP, and logit softcap). The tokenizer is tiktoken GPT-2.

Chronological-consistency guarantee (the point). The base ChronoGPT vintage was pretrained only on timestamped text available before its knowledge cutoff Ο„ = 2005-12-31, and this replication fine-tunes it on an instruction set that is screened to contain only pre-2000 instruction/response pairs (see Training data). Because pre-2000 βŠ† pre-Ο„ for every vintage Ο„ β‰₯ 1999, the fine-tuned model never saw any text created after 2005-12-31. This eliminates look-ahead bias / training leakage: the model is a point-in-time artifact that "knows" only what was knowable at its cutoff.

Why that matters. A model contaminated with future information silently inflates backtests of any text-conditioned prediction (return prediction, sentiment, event studies). A chronologically consistent model is safe to run as of its cutoff date, so a signal it produces on a 2005-12-31-or-earlier document could genuinely have been produced at that time.

Intended use

  • Point-in-time (PIT) backtesting. Use the vintage whose cutoff precedes the timestamp of each document you score, so no evaluation ever uses a model that saw the future. The six released vintages (1999, 2005, 2010, 2015, 2020, 2024) let you assemble a leakage-free panel across time.
  • Instruction following on pre-cutoff tasks (Alpaca-style single-turn instruction/response), and hidden-state embedding extraction for downstream text-as-data / asset-pricing research.
  • Research into chronological consistency, temporal knowledge cutoffs, and instruction tuning of small time-stamped LLMs.

Out of scope

  • Current-events or factual QA about anything after 2005-12-31. The cutoff blindness is intentional; the model cannot know post-cutoff facts and will answer as if they do not exist.
  • Production chat / assistant deployment. This is a small (~1.55B) research model, not safety-tuned or RLHF-aligned; it can hallucinate and loop under greedy decoding.
  • Multilingual, multi-turn, or long-context (>1792 token) use.
  • Any high-stakes decision without independent validation.

How to load and generate

These repos store pytorch_model.bin + config.pt/config.json written by this replication's ChronoGPT.save_pretrained. Loading therefore uses the replication package's own ChronoGPT class (a lightly adapted, numerically bit-identical vendor of the authors' ChronoGPT_inference.py) β€” not transformers.AutoModel, and trust_remote_code is not required.

# Install the replication package (provides the ChronoGPT class + infer helpers)
pip install "git+https://github.com/zhanghuanyu0619/chrono-instruct-replication.git"
# or: git clone ... && cd chrono-instruct-replication && pip install -e .
import torch
from chrono_instruct import infer

# Loads weights from the Hub, moves to CUDA if available, sets eval mode.
model, device = infer.load("HZ0619/chrono-instruct-v1-20051231")

# The models were fine-tuned on the Stanford Alpaca prompt template
# (with a trailing newline after "### Response:"). Match it at inference time:
def alpaca_prompt(instruction: str, inp: str = "") -> str:
    if inp:
        return (
            "Below is an instruction that describes a task, paired with an input "
            "that provides further context. Write a response that appropriately "
            "completes the request.\n\n"
            f"### Instruction:\n{instruction}\n\n### Input:\n{inp}\n\n### Response:\n"
        )
    return (
        "Below is an instruction that describes a task. Write a response that "
        "appropriately completes the request.\n\n"
        f"### Instruction:\n{instruction}\n\n### Response:\n"
    )

prompt = alpaca_prompt("Name the President of the United States.")

# Greedy decoding by default (temperature=0.0, top_k=None) β€” matches the authors'
# ChronoGPT_instruct.py. A ~1.5B model can loop under pure greedy; for readable
# text turn on the anti-repetition guards (they change decoding, so leave them OFF
# to reproduce the paper's exact greedy output).
completion = infer.generate(
    model, device, prompt,
    max_new_tokens=128,
    temperature=0.0,          # 0.0 == greedy (argmax); set >0 to sample
    top_k=None,               # e.g. 50 to restrict sampling
    return_completion=True,   # return only the newly generated tokens
    # repetition_penalty=1.3, no_repeat_ngram_size=3,  # optional readability guards
)
print(completion)

For hidden-state embeddings (e.g. mean-pooled last-layer features for text-as-data):

vec = infer.embed(model, device, "Some pre-cutoff document text.", layer=-1, pool="mean")
print(vec.shape)  # (1536,)

Training data

  • Dataset: manelalab/ChronoInstruct-SFT β€” Alpaca-format instruction/response triples from three sources (LLMs-from-scratch simple tasks β†’ GPT-3 self-instruct β†’ AllenAI Tulu-3 mixture), 647,944 rows as released.
  • Temporal screen (the leakage guard). Only pairs the authors' GPT-4.1 temporal classifier labeled 0 ("knowledge available pre-2000") with confidence == 10 are kept β€” a deliberately strict double filter. This replication reproduces the paper's counts exactly: 647,944 β†’ 425,119 retained pairs (1,097 / 67,136 / 356,886 across the three curriculum stages). A single pre-2000 screen is reused across all vintages because pre-2000 βŠ† pre-Ο„ for every Ο„ β‰₯ 1999.
  • Loss masking. Response-only masked cross-entropy: prompt tokens are set to -100 so the loss scores only the response tokens.

Training procedure

  • Full fine-tuning of all ~1.55B parameters with AdamW (no LoRA/PEFT).
  • 3-stage curriculum, each stage resuming from the previous stage's weights:
    1. stage1_scratch (LLMs-from-scratch simple tasks) β€” 3 epochs
    2. stage2_self_instruct (GPT-3 self-instruct) β€” 2 epochs
    3. stage3_tulu (Tulu-3 mixture) β€” 2 epochs
  • Hyperparameters: learning rate 3e-4 (all stages, per-stage cosine schedule, warmup 0.03, floor 0.1Β·lr); block size 1792; batch size 8 Γ— grad-accum 4 (effective 32); gradient checkpointing on; global seed 123 (drives the train/val split, shuffle, and sampling).
  • Compute: ~19.4 h wall-clock on a single 80 GB card (peak ~50.4 GB GPU) per vintage.
  • Fidelity note: the paper releases the SFT data and weights but not the training code; the LR schedule and epoch counts here are this replication's tuning against the shape of the paper's Figure 1, not paper-exact values.

Evaluation

The intended evaluations follow the paper and are documented in this replication's report β€” see results/replication-report/README.md in the repository:

  • SFT loss curves (Figures 1–2). βœ… Reproduced. Stage-3 validation cross-entropy falls monotonically as the cutoff advances (0.8691 at 1999 β†’ 0.7855 at 2024), the paper's "later vintage = better language model, not leakage" structure.
  • Chronological-consistency tests (Tables 2–3). U.S. president prediction and major-world-events tests: correct on pre-cutoff items, blind (0/N) on post-cutoff items. Coded and staged; run per vintage with chrono eval --repo HZ0619/chrono-instruct-v1-20051231 --cutoff 2005.
  • AlpacaEval LC win-rate (Figure 3) vs Qwen-1.5-1.8B-Chat (paper reports ~54–62%). Coded; needs a judge API key.

Limitations & bias

  • Small model (~1.55B). Limited reasoning/factual coverage; greedy decoding can loop (use the anti-repetition guards for readable output).
  • Cutoff blindness is intentional, not a bug. The model has zero knowledge of anything after 2005-12-31 β€” that is the whole design. Do not use it as a general knowledge base.
  • Not paper-exact. LR schedule and epoch counts are tuned to the shape of the paper's curves; absolute losses differ from the paper. The replication claim is qualitative structure (data-count match, clean curriculum chaining, monotone improvement with cutoff), not decimal parity.
  • Packing. Examples are packed into 1792-token blocks; ~5.1% of Tulu examples are split across a block boundary (no response tokens dropped, but such examples are never seen whole in one forward).
  • Inherits any biases of the base ChronoGPT pretraining corpus and the ChronoInstruct-SFT data. Not safety-tuned.

Citation

The paper this replicates:

@article{he2025instructchronogpt,
  title   = {Instruction Tuning Chronologically Consistent Language Models},
  author  = {He, Songrun and Lv, Linying and Manela, Asaf and Wu, Jimmy},
  year    = {2025},
  note    = {arXiv:2510.11677; SSRN 5348747}
}

Base models and SFT data (please cite the authors for both):

@article{he2025chronogpt,
  title   = {Chronologically Consistent Large Language Models},
  author  = {He, Songrun and Lv, Linying and Manela, Asaf and Wu, Jimmy},
  journal = {Working Paper},
  year    = {2025}
}

Model card authors

Replication and card by Huanyu Zhang. License MIT, inherited from the base model; the ChronoInstruct-SFT dataset is subject to its own terms β€” consult the dataset page before redistribution. This is an independent replication and is not an official manelalab release.

Downloads last month
151
Inference Providers NEW
This model isn't deployed by any Inference Provider. πŸ™‹ Ask for provider support

Model tree for HZ0619/chrono-instruct-v1-20051231

Finetuned
(1)
this model

Dataset used to train HZ0619/chrono-instruct-v1-20051231

Paper for HZ0619/chrono-instruct-v1-20051231