수치 특징 대신 차트 PNG를 직접 읽는 모델을 만들려면 이미지와 행동 정답이 짝을 이뤄야 한다. 이 파이프라인은 과거 가격의 미래 경로에서 매수·매도·유지 라벨을 만들고 Qwen2.5-VL에 LoRA를 적용한다.

Qwen2.5-VL 차트 LoRA: PNG로 매수·매도·유지 학습하기 핵심 도식
그림. 과거 가격으로 행동 라벨을 만들고 차트 이미지와 답변 토큰만 LoRA로 학습한다.

라벨 생성

각 시점 뒤의 제한된 horizon을 본다. 수수료를 포함한 목표 수익에 먼저 닿으면 현재 봉을 매수, 목표 봉을 매도로 표시한다. 그 전에 손절 가격에 닿으면 해당 진입은 만들지 않는다. 나머지는 유지다.

이 라벨은 미래 정보를 사용하므로 실시간 입력 특징으로 넣을 수 없고 오직 학습 정답으로만 써야 한다. train과 validation을 무작위 이미지로 섞으면 인접 봉이 누출될 수 있어 날짜 구간으로 나누는 편이 안전하다.

불균형 처리

시계열 대부분은 유지이므로 그대로 뽑으면 모델이 항상 유지라고 답해도 loss가 낮아진다. 소스는 매수 0.4, 매도 0.4, 유지 0.2 비중으로 행동별 pool을 샘플링한다. 평가는 원래 분포와 균형 분포를 둘 다 봐야 한다.

LoRA 학습

Qwen의 `q_proj`, `k_proj`, `v_proj`, `o_proj`에 저랭크 어댑터를 붙인다. 프롬프트 토큰과 padding은 label에서 `-100`으로 가려 답변 토큰만 손실에 반영한다. gradient checkpointing과 gradient clipping으로 메모리와 폭주를 관리한다.

관련 소스

  • `train_qwen_chart_lora.py`: 샘플 생성과 LoRA 학습
  • `evaluate_qwen_chart_lora.py`: 어댑터 평가
  • `lib/chart_png.py`: 봉 번호와 PNG 경로 관리