LQ-Qwen3-VL-4B-ChartSignal

BTC 15๋ถ„๋ด‰ ์ฐจํŠธ ์ด๋ฏธ์ง€๋ฅผ ๋ถ„์„ํ•˜์—ฌ ๋งค๋งค ์‹ ํ˜ธ์™€ ์ƒ์„ธํ•œ ๋ถ„์„ ๊ทผ๊ฑฐ๋ฅผ JSON์œผ๋กœ ์ถœ๋ ฅํ•˜๋Š” Qwen3-VL-4B LoRA adapter.

Quick Start

import torch
from transformers import Qwen3VLForConditionalGeneration, AutoProcessor
from peft import PeftModel

# Load model
base_model = "Qwen/Qwen3-VL-4B-Instruct"
processor = AutoProcessor.from_pretrained(base_model)
model = Qwen3VLForConditionalGeneration.from_pretrained(
    base_model, torch_dtype=torch.bfloat16, device_map="auto",
)
model = PeftModel.from_pretrained(model, "LangQuant/LQ-Qwen3-VL-4B-ChartSignal")
model.eval()

# Predict
messages = [
    {"role": "system", "content": [
        {"type": "text", "text": "You are a professional Bitcoin futures trader. Analyze 15-minute candlestick charts to predict the direction over the next 4 hours."},
    ]},
    {"role": "user", "content": [
        {"type": "image", "image": "chart.png"},
        {"type": "text", "text": "BTCUSDT 15m chart. Predict the direction for the next 4 hours (16 candles).\nRespond in JSON."},
    ]},
]
inputs = processor.apply_chat_template(
    messages, tokenize=True, add_generation_prompt=True,
    return_dict=True, return_tensors="pt",
).to(model.device)

with torch.no_grad():
    generated_ids = model.generate(**inputs, max_new_tokens=512)

trimmed = [out[len(inp):] for inp, out in zip(inputs.input_ids, generated_ids)]
print(processor.batch_decode(trimmed, skip_special_tokens=True)[0])

Example

Input:

example

Output:

{
  "signal": "NEUTRAL",
  "confidence": 75,
  "stop_loss_pct": -0.5,
  "take_profit_pct": 0.5,
  "reasoning": {
    "market_context": "The price is consolidating around a narrow range near $89,000 to $90,000, with no clear trend established over the 16 candles.",
    "price_action": "Candlesticks show alternating small-bodied bullish and bearish candles without strong directional wicks, indicating indecision and sideways movement.",
    "volume_oi": "Volume is low and stable, not supporting strong buying or selling pressure. Open Interest shows a slight upward trend but remains relatively flat, suggesting no significant new positions being opened to drive direction.",
    "risk_assessment": "The main risk is a breakout in either direction, which could lead to a move beyond the consolidation range. However, the lack of strong momentum and volume reduces the probability of a sustained move."
  },
  "risk_level": "MEDIUM"
}

Evaluation (Best: checkpoint-200)

ํ…Œ์ŠคํŠธ์…‹ 600๊ฐœ (LONG 214 / SHORT 259 / NEUTRAL 127)

Accuracy: 42.7% | Macro F1: 42.4%

Confusion Matrix

Confusion Matrix

Pred LONG Pred SHORT Pred NEUTRAL Recall
LONG 71 60 83 33.2%
SHORT 55 102 102 39.4%
NEUTRAL 16 28 83 65.4%

Classification Report

Class Precision Recall F1 Support
LONG 50.0% 33.2% 39.9% 214
SHORT 53.7% 39.4% 45.4% 259
NEUTRAL 31.0% 65.4% 42.0% 127
Macro Avg 44.9% 46.0% 42.4%

F1 by Class & Checkpoint

F1 Comparison

Input

BTC/USDT 15๋ถ„๋ด‰ ์ฐจํŠธ ์ด๋ฏธ์ง€ (24์‹œ๊ฐ„ ๋ถ„๋Ÿ‰). ์ฐจํŠธ์—๋Š” ์บ”๋“ค์Šคํ‹ฑ, ๊ฑฐ๋ž˜๋Ÿ‰, ํŽ€๋”ฉ๋น„, ๋ฏธ๊ฒฐ์ œ์•ฝ์ •์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

Disclaimer

์ด ๋ชจ๋ธ์€ ์—ฐ๊ตฌ ๋ฐ ๊ต์œก ๋ชฉ์ ์œผ๋กœ ๋งŒ๋“ค์–ด์กŒ์Šต๋‹ˆ๋‹ค. ์‹ค์ œ ๋งค๋งค์— ์‚ฌ์šฉํ•˜์—ฌ ๋ฐœ์ƒํ•˜๋Š” ์†์‹ค์— ๋Œ€ํ•ด ์ฑ…์ž„์ง€์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

Downloads last month
4
Inference Providers NEW
This model isn't deployed by any Inference Provider. ๐Ÿ™‹ Ask for provider support

Model tree for LangQuant/LQ-Qwen3-VL-4B-ChartSignal

Adapter
(22)
this model