예제 소스
암호화폐 자동매매를 위한 CNN 시각 정책망과 VLM · 파일 59개
llm_rl_train.py
"""
RL 학습·뷰어 공통 실행 파라미터 (argparse 없음).
"""
from __future__ import annotations
# 대용량 데이터면 12~20 정도로 줄여도 됨 (40은 수십 분 이상 걸릴 수 있음)
EPISODES = 20
LEARNING_RATE = 0.001
HIDDEN_DIM = 64
WEIGHT_DECAY = 1e-5
# 에피소드 보상: 매도 승률 가중 + 누적 수익률
REWARD_WIN_RATE_WEIGHT = 2.0
REWARD_PROFIT_SCALE = 5.0
# -----------------------------
# policy.md → 규칙 teacher + 학습 메타
# -----------------------------
# 프로젝트 루트에서 실행한다는 전제의 상대 경로 (내용은 lib/rl_policy_teacher 의 휴리스틱으로 근사)
POLICY_DOC_PATH = "config/policy.md"
# REINFORCE 손실에 더함: KL(teacher||policy) 평균 × 계수 (0 이면 비활성)
RL_TEACHER_KL_COEF = 0.12
RL_TEACHER_TEMPERATURE = 1.15
# teacher 행동으로 궤적을 굴리며 KL만 줄이는 워밍업 에피소드 수 (0 이면 생략)
RL_TEACHER_PRETRAIN_EPISODES = 2
# 온라인 뷰어: 비전 LLM 의견(매수/매도/유지)과 정책 출력 정렬 — NLL 계수 (0 이면 비활성)
RL_LLM_ALIGN_WEIGHT = 0.06
# True면 policy.md 전문을 비전 프롬프트에 포함 (참고 해설만; 체결은 RL)
RL_INCLUDE_POLICY_DOC_IN_VISION_PROMPT = True
# 체크포인트 저장 시 policy 문서 지문·학습 하이퍼를 *.train_meta.json 에 기록
SAVE_POLICY_META_WITH_CHECKPOINT = True
# 라벨 특징(7차원) 포함 정책 — 이전 10차원만의 ckpt 와 호환되지 않음
RL_CHECKPOINT_PATH = "cache/rl_chart_policy_with_labels.pt"
# build_market_extreme_labels.py 출력과 동일 경로 권장
LABELS_CSV_PATH = "cache/market_extreme_labels.csv"
MIN_BARS = 100
BAR_STEP = 3
# None 이면 전체 행으로 학습·뷰어. tail 만 쓰려면 정수(예: 25_000)로 제한.
RL_MAX_BARS: int | None = None
INITIAL_KRW = 5_000_000.0
MIN_TRADE_BARS = 5
DRY_RUN = False
AUTO_INTERVAL_SEC = 3.0
CHART_MAX_WIDTH = 900
WINDOW_TITLE = "RL 차트 학습 뷰어 (매도 승률 피드백 · LLM 참고)"
# 학습 직후 Tk 뷰어 실행 (먼저 RL만 돌릴 때는 False)
OPEN_VIEWER_AFTER_TRAIN = True
# -----------------------------
# 온라인(뷰어 기반) 무한 학습
# -----------------------------
# True: 뷰어를 먼저 띄우고, bar 진행(자동/수동)으로 한 에피소드를 끝까지 수행한 뒤
# (매도 승률 + 수익률) 보상으로 정책을 업데이트하고 다시 처음부터 재도전(무한 루프 가능).
ONLINE_TRAIN = False
# None: 무한 에피소드, 정수: 해당 에피소드만 학습 후 자동 종료
ONLINE_MAX_EPISODES: int | None = None
# True면 정책에서 행동을 샘플링(탐험)하고 log_prob를 쌓아 학습, False면 argmax(결정론)만 수행(학습 거의 안 됨)
ONLINE_SAMPLE_ACTION = True
# n 에피소드마다 체크포인트 저장
ONLINE_SAVE_EVERY_EP = 1
# 에피소드가 끝날 때 화면 텍스트를 초기화할지 (False면 누적 로그)
ONLINE_CLEAR_TEXT_EACH_EP = False
# 뷰어 실행 시 자동 진행을 기본으로 켤지
ONLINE_AUTOSTART = True
# -----------------------------
# PngToStatus(차트 PNG → 액션) 정책 옵션
# -----------------------------
# 캡쳐된 차트 이미지를 그대로 보고 매수/매도/유지를 결정하는 CNN 정책.
# main_llm_db_rl_viewer.py 가 이 옵션을 사용한다.
PNG_STATUS_CHECKPOINT_PATH = "cache/png_status_policy.pt"
# True면 ``train_png_policy_from_action_csv.py`` 로 만든 체크포인트를 대신 로드한다.
USE_PNG_STATUS_ACTION_SUPERVISED = True
PNG_STATUS_ACTION_SUPERVISED_CKPT = "cache/png_status_policy_action_repaired.pt"
# 학습 스크립트 기본 입력 (문서·일관성용; 뷰어는 직접 읽지 않음)
ACTION_CSV_FOR_SUPERVISED_TRAIN = "cache/ACTION_repaired.CSV"
# 뷰어에서 정책 vs 액션 CSV 일치율 표시 (학습 검증용). True 이면 아래 CSV 경로 로드.
PNG_STATUS_SHOW_VS_ACTION_CSV_EVAL = True
PNG_STATUS_EVAL_ACTION_CSV_PATH = "cache/ACTION_repaired.CSV"
# 모델 입력 해상도 (작을수록 학습/추론 빠름, 클수록 디테일 보존)
PNG_STATUS_INPUT_H = 96
PNG_STATUS_INPUT_W = 192
# FC hidden dim
PNG_STATUS_HIDDEN = 256
# 별도 학습률을 쓰고 싶으면 지정 (없으면 LEARNING_RATE 사용)
PNG_STATUS_LR = 5e-4
PNG_STATUS_WINDOW_TITLE = "PNG→Status RL 차트 학습 뷰어 (캡쳐 이미지 기반)"