- exact tool-call success, unit-normalized prompts
- 94.8%
- routing accuracy, tool vs. no tool
- 97.5%
- false-positive tool calls after selective SFT
- 85% → 5%
The question
The target is a structured call such as bs(S=100, K=110, T=0.5, r=0.05, sigma=0.2, type="call"). Getting the format right is the easy part. The hard parts are converting "5%", "six months", or "90 days" into the right arguments, and not reaching for the tool when the question has nothing to do with option pricing.
Approach
- Two synthetic data layers. Layer 1 teaches format and argument extraction with standard units. Layer 2 mixes rates, volatilities, and maturities across decimals, percent signs, percent words, years, months, and days, a full 3×3×3 grid of 27 unit combinations.
- Leakage control. Train, validation, and test are split at the level of the underlying scenario, so the same option never appears in two splits under different wording.
- Dense, interpretable reward. A restricted AST parser grades format, parseability, function name, required arguments, safe values, numeric correctness, and option type separately.
- Training. LoRA supervised fine-tuning, then GRPO, with a DPO ablation and a comparison against the 360M model.
- Over-tooling. A separate benchmark of prompts that should not trigger the tool, and a mixed selective SFT set to fix it. Paired bootstrap intervals guard against over-reading small differences.
Results
| Stage | Avg reward | Exact success |
|---|---|---|
| Layer 1 model on Layer 2 prompts | 0.803 | 3.7% |
| Layer 2 SFT (135M) | 0.988 | 94.8% |
| Layer 2 GRPO (135M) | 0.981 | 90.4% |
| Layer 2 SFT (360M) | 0.998 | 98.8% |
What I learned
- Supervised fine-tuning does most of the work of teaching an interface; reinforcement learning on top of a nearly saturated checkpoint did not improve it here.
- A model that has just learned a tool wants to use it everywhere. Over-tooling was the most practical failure, and targeted SFT fixed it better than mixed GRPO.
- Some remaining errors are about capacity: the 360M model closes most of the gap.