File size: 5,931 Bytes
015bb9c
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
f2b2cb2
 
 
 
 
 
 
 
 
 
 
 
015bb9c
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
---
license: gemma
base_model: mlx-community/gemma-4-12B-it-bf16
base_model_relation: finetune
library_name: mlx
pipeline_tag: text-generation
inference: false
language:
- en
metrics:
- accuracy
tags:
- mlx
- gemma
- gemma4
- finance
- financial-reasoning
- crypto
- grpo
- fin-r1
- reasoning
model-index:
- name: gemma-4-12b-fin-grpo-v4
  results:
  - task:
      type: text-generation
      name: Financial Reasoning (FinQA)
    dataset:
      type: ChanceFocus/flare-finqa
      name: FinQA  FLARE test (N=100)
    metrics:
    - type: accuracy
      value: 64.0
      name: accuracy
  - task:
      type: text-generation
      name: Conversational Financial Reasoning (ConvFinQA)
    dataset:
      type: ChanceFocus/flare-convfinqa
      name: ConvFinQA  FLARE test (N=100)
    metrics:
    - type: accuracy
      value: 60.0
      name: accuracy
---

# gemma-4-12b-fin-grpo-v4

A **financial-reasoning + crypto** model that reproduces the **Fin-R1** recipe
(*[Fin-R1](https://arxiv.org/abs/2503.16252)*: SFT → GRPO on financial chain-of-thought data)
on a **larger base****Gemma 4 12B-it** — trained **locally on Apple Silicon** with
[`mlx-lm-lora`](https://github.com/Goekdeniz-Guelmez/mlx-lm-lora).

It reasons step-by-step inside `<think> </think>` tags, then gives a clear final answer.
Coverage spans the whole investment sector — fiat markets, equities, derivatives, macro,
accounting, and **crypto / DeFi / trading (SMC, ICT, FVG, etc.)**.

- **Base model:** [`mlx-community/gemma-4-12B-it-bf16`](https://huggingface.co/mlx-community/gemma-4-12B-it-bf16) (← `google/gemma-4-12b-it`)
- **Method:** LoRA SFT (rank 16) → GRPO (Fin-R1 stage 2), then fused to full bf16 weights
- **Params / dtype:** ~12B, bf16 (~22 GB)
- **Framework:** MLX (`mlx-lm`). `model_type: gemma4`.

## Training recipe

| Stage | Data | Notes |
|-------|------|-------|
| **SFT (v4)** | ~30k examples: financial CoT (Fino1 FinQA+CoT, fin-alpaca-r1, Finance-Instruct, TAT-QA CoT), crypto trading, an industry/security corpus, and FalseReject de-refusal | broad + balanced |
| **GRPO** | 12k verifiable items (FinQA-style numerics + crypto BUY/HOLD/SELL labels) | rewards: `think_format` + `numeric_or_label_accuracy`, 200 iters |

## Evaluation

FinQA / ConvFinQA accuracy (N=100, FLARE test split):

| Model | FinQA | ConvFinQA |
|-------|:-----:|:---------:|
| base `gemma-4-12B-it` | 27.5% | — (often refuses) |
| SFT v4 | 61% | 59% |
| **this model (SFT→GRPO v4)** | **64%** | **60%** |
| *Fin-R1 (paper reference)* | *76%* | *85%* |

GRPO added **+3 / +1** over SFT, matching the paper's reported lift. De-refusal eval:
100% of legitimate finance/investment questions answered, illegitimate ones still refused.

> The model is intentionally **broad** rather than benchmark-maximized: it trades a few
> FinQA points versus a narrow FinQA-tuned model (Fin-R1) for crypto/trading coverage that
> Fin-R1 does not have (e.g. Fin-R1 does not know SMC/ICT terms like *Fair Value Gap*).

## Usage (MLX)

```python
from mlx_lm import load, generate

model, tokenizer = load("z0n3x/gemma-4-12b-fin-grpo-v4")

system = ("You are a financial reasoning assistant covering the whole investment "
          "sector — fiat markets, equities, derivatives, macro, accounting, and "
          "crypto/DeFi. Reason step by step inside <think> </think> tags, then give "
          "a clear, correct final answer.")
messages = [
    {"role": "system", "content": system},
    {"role": "user", "content": "What is a Fair Value Gap (FVG) and how do traders use it?"},
]
prompt = tokenizer.apply_chat_template(messages, add_generation_prompt=True)
print(generate(model, tokenizer, prompt=prompt, max_tokens=800))
```

### Thinking / reasoning

The chat template **defaults to a reasoning system prompt**, so the model produces
`<think> … </think>` then the answer **out of the box** — you don't need to pass a system
message (pass your own to override it). The reasoning markers are `<think>` / `</think>`
(this model was trained on those tags, not Gemma's native `<|channel>thought` format).

- **LM Studio:** set the reasoning / "thinking" section tags to `<think>` (start) and
  `</think>` (end) to fold the chain-of-thought into a collapsible block.
- **Text-only:** the base Gemma 4 vision/audio weights were dropped during fine-tuning, so
  this checkpoint is **not multimodal** — by design (Fin-R1 is a text recipe).

> **Note on loading:** these are brand-new Gemma 4 "unified" weights. With some `mlx-lm`
> versions you may need a small load-time shim that (a) resolves `model_type: gemma4` and
> (b) drops unused multimodal tensors. This is a **text-only** checkpoint.

## Limitations & disclosures

- **Not financial advice.** Outputs are model-generated and can be wrong; verify numbers
  and do your own research before acting on any market view.
- **De-refusal calibration.** Trained (with the FalseReject dataset) to answer legitimate
  finance/investment questions candidly instead of over-refusing. The boundary kept during
  training was **not** optimizing for fraud, money-laundering, or market-manipulation use.
- **Includes a private corpus.** Part of the SFT mix is the author's own industry/security
  ("OAK") corpus; outputs may reflect its style/content.
- **MLX checkpoint.** Built and tested with `mlx-lm`; not validated under `transformers`.

## License

This is a derivative of Google **Gemma** and is distributed under the
[**Gemma Terms of Use**](https://ai.google.dev/gemma/terms). By using these weights you
agree to those terms and to Google's
[Prohibited Use Policy](https://ai.google.dev/gemma/prohibited_use_policy).

## Citation

Built following the Fin-R1 recipe:

```bibtex
@article{liu2025finr1,
  title={Fin-R1: A Large Language Model for Financial Reasoning through Reinforcement Learning},
  author={Liu, Zhaowei and others},
  journal={arXiv preprint arXiv:2503.16252},
  year={2025}
}
```