gaparecido/apertus-8b-financial-reasoner-v1
1409
apertus-8b-financial-reasoner-v1
A fine-tune of swiss-ai/Apertus-8B-Instruct-2509 for two-stage financial analysis of a stock ticker:
- Task A – classify how the market reacted to a news item given the price move (
good,bad,neutral,overreaction_down,overreaction_up). - Task B – given that reaction, a valuation gap, and a deterministic BUY/SELL/HOLD recommendation, write the reasoning and answer as JSON.
The model never decides BUY/SELL/HOLD itself; that comes from a deterministic fusion of Task A's output and a scenario-DCF valuation gap.
Format
Full merged checkpoint in bfloat16 (~16 GB, 4 safetensors shards). It is not pre-quantized — load it in 4-bit at runtime if you need to fit a small GPU:
from unsloth import FastLanguageModel
model, tokenizer = FastLanguageModel.from_pretrained(
"gaparecido/apertus-8b-financial-reasoner-v1",
max_seq_length=2048,
load_in_4bit=True,
)
FastLanguageModel.for_inference(model)
model.config.use_cache = True
model.generation_config.use_cache = True
Serving notes
- Needs a bf16-capable GPU (L4 / A10G / A100 or better). Apertus is bf16-trained; in fp16 on a T4 the logits overflow to NaN and every generated token is <unk>.
- The upstream Apertus config ships use_cache: false and this repo has no generation_config.json to override it, so pin use_cache=True (as above) or generation recomputes attention over the full sequence per token.
- The CUDA-fused xIELU not available warning is harmless — the Python fallback costs ~10% throughput.
Training
Trained with Unsloth (https://github.com/unslothai/unsloth) (QLoRA, 4-bit) and Hugging Face TRL, loaded from Unsloth's unsloth/apertus-8b-instruct-2509-unsloth-bnb-4bit mirror of the base model, on an NVIDIA L4.