Fiduciary — Qwen3-4B (Senior Personal Financial Advisor)

Fiduciary is a fine-tuned Qwen3-4B-Instruct-2507 that acts as a senior personal financial advisor: it reviews your portfolio, checks the latest news, and reasons about how it affects your holdings — running entirely locally on Apple Silicon via MLX.

This is the fused, standalone 4-bit model (2.3GB) — runnable with one command, no adapter needed. The LoRA adapter alone (56MB) is at albertobarnabo/fiduciary-qwen3-4b-lora.

Quick start

pip install mlx-lm

python -m mlx_lm generate \
  --model albertobarnabo/fiduciary-qwen3-4b \
  --prompt "How's my portfolio doing?"

How it works

The split is deliberate: the model owns behavior, live tools own facts — because no fine-tune can know today's prices or this morning's headlines.

  • Senior-advisor voice — leads with the answer, exact per-position P&L, risk-first framing (sizing, concentration, time horizon), a "Bottom line" closer.
  • Disciplined tool use — emits <tool_call>{"name": ..., "arguments": ...}</tool_call> for get_portfolio, get_quotes, search_news, analyze_portfolio, reads the <tool_response>, and grounds every figure in it.
  • Knows when not to call tools — answers knowledge questions directly.
  • Guardrails — refuses "guaranteed winners", insider-trading bait, declines to execute trades (advice-only).

To use it as an agent, run a small loop: generate → parse the <tool_call> → execute the tool → append the <tool_response> → generate again. A reference runtime with live quote/news/portfolio tools (stdlib-only, no API keys) — plus the dataset generator and training config — is on GitHub: github.com/albertobarnabo/fiduciary.

Example (agent loop, live data)

you  Any news today that could affect my holdings?

Fiduciary
  → analyze_portfolio()  → search_news(query='market news', limit=6)

  Yes — there's news worth connecting to your holdings. ...
  **Impact on your portfolio:**
  - **Technology (51.6% of your equity — NVDA, AAPL, MSFT):** ...
  **Bottom line:** None of this justifies reactive trading. ...

Training

LoRA (rank 16) on ~1,200 fully synthetic advisor conversations, fused back into 4-bit weights (group size 64). Data is expanded one example per assistant turn so multi-turn tool calls are learned (mlx-lm's mask_prompt only trains the final assistant message). Every number in every answer is computed from the tool response in the same conversation. 1,200 iters, cosine LR 5e-5 → 5e-6, validation loss 0.046. Trained on an Apple M5 (16GB).

Limitations

Educational guidance, not individualized investment advice. Strong tool reflexes occasionally fire on a prompt that should be refused outright. News→impact mapping is sector-heuristic. Quote/news endpoints in the reference runtime are unofficial and degrade gracefully.

Downloads last month
8,248
Safetensors
Model size
0.6B params
Tensor type
BF16
·
U32
·
MLX
Hardware compatibility
Log In to add your hardware

4-bit

Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for albertobarnabo/fiduciary-qwen3-4b

Finetuned
(2)
this model