Denarius-Analyst-9B v1

A 9B-class equity-analyst LoRA adapter on Qwen/Qwen3.5-9B.

Specialized for long-only stock selection and designed to complement Laya-Finance in a two-stage pipeline: Laya provides fast sentiment and news-signal scoring; Denarius-9B takes the resulting screened cohort and produces a strict line-1 JSON portfolio recommendation (ticker weights, trailing stops, profit targets, horizons) followed by a prose thesis.

Training

  • Base model: Qwen/Qwen3.5-9B
  • Method: LoRA (r=64, alpha=128, dropout=0.04), bf16, no quantization
  • Steps: 1,500 (epoch ~0.875 over 13,709 examples)
  • Final train loss: 0.9591 / accuracy: 0.7607

Recipe

{
  "_purpose": "Denarius-9B public release \u2014 well-rounded finance LLM complementary to Laya-Finance. Public-clean corpus only (no TASC, no iter-history, no idea-tracker). Augmented with Sonnet 5.5/Opus 5.5 synthetic examples targeting Laya weak spots (fomc_analysis, fiqa_sentiment, finance_review) and sparse tasks (macro_regime, interpret_bt, similarity, sector_analysis).",
  "model_name": "Denarius-9B",
  "base_model": "Qwen/Qwen3.5-9B",
  "_base_model_note": "Upgraded from Qwen2.5-7B to Qwen3.5-9B (Mar 2026). No -Instruct suffix \u2014 Qwen3+ models are instruct-capable without it. Outperforms much larger older models; hybrid/linear attention for better inference speed; built-in thinking/non-thinking modes \u2014 set enable_thinking=False in generation config during training and inference to keep structured JSON outputs clean. Apache 2.0 license, Qwen family LoRA compat. Requires transformers>=5.0.",
  "warm_start_from": null,
  "lora_r": 64,
  "lora_alpha": 128,
  "lora_dropout": 0.04,
  "lr": 0.0001,
  "epochs": 1,
  "max_steps": 1500,
  "save_steps": 100,
  "seq_len": 2048,
  "batch_size": 1,
  "grad_accum": 8,
  "generation_config": {
    "enable_thinking": false
  },
  "corpus_sources": {
    "denarius7b_public_clean": 0.7,
    "synth_denarius7b": 0.3
  },
  "_corpus_note": "70% public-clean HF datasets (numeric_qa capped 8K, sentiment capped 5K). 30% synthetic from Sonnet 5.5/Opus 5.5 targeting fomc_analysis, fiqa_sentiment, finance_review, interpret_bt, similarity, macro_regime, sector_analysis. No TASC, no iter-history-*, no idea-tracker-*, no plutus-v2.",
  "_design_rationale": "Complements Laya-Finance: Denarius-9B handles long-form reasoning, nuanced sentiment (FiQA-style), FOMC policy analysis, and synthesis tasks where Laya (421M encoder) is structurally limited. Laya handles fast classification at 5-32ms; Denarius handles the reasoning-heavy cases.",
  "_training_note": "9B base adds ~20% training time vs 7B gen_000 (est. ~27h on Strix Halo gfx1151). seq_len kept at 2048 for memory/speed; Qwen3.5 supports longer at inference time."
}

Holdout Performance (2023–2024 walk-forward, 21-day rebalance)

34 rebalance dates, 863 trades.

{
  "total_return": 0.2686741101625769,
  "ann_return": 0.12517457369335272,
  "ann_vol": 0.1334319405264814,
  "sharpe": 0.9381155156662815,
  "sortino": 0.8119167643571719,
  "max_drawdown": 0.12870819233946776,
  "calmar": 0.9725455032668385,
  "n_days": 550,
  "alpha_ann": -0.023007717271618724,
  "beta": 0.7032579600368803,
  "alpha_tstat": -0.35349598476883565,
  "n_obs": 550,
  "n_trades": 863,
  "hit_rate": 0.49710312862108924,
  "turnover": 27.71343283719263
}

Usage

from transformers import AutoModelForCausalLM, AutoTokenizer
from peft import PeftModel
import torch

base = AutoModelForCausalLM.from_pretrained(
    "Qwen/Qwen3.5-9B", torch_dtype=torch.bfloat16, device_map="auto"
)
model = PeftModel.from_pretrained(base, "hravi/denarius-9b-v1")
tokenizer = AutoTokenizer.from_pretrained("Qwen/Qwen3.5-9B")
Downloads last month
14
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for hravi/denarius-9b-v1

Finetuned
Qwen/Qwen3.5-9B
Adapter
(976)
this model