Classic Offline RL vs Diffusion Policy
TD3+BC, ReBRAC, CQL, IQL, Decision Transformer와 Diffusion-QL 계열을 trading policy 연구 관점에서 비교합니다.
요약
Offline RL은 고정된 transition dataset에서 policy를 학습한다. Trading에서는 이 조건이 자연스럽다. 실제 시장에서 새 action을 마음대로 탐험하면 비용과 리스크가 생기고, 대부분의 학습 재료는 과거 OHLC, 체결, 포지션, reward 로그로 남는다.
문제는 dataset 밖 action이다. 어떤 상태에서 dataset은 flat과 small long만 보여줬는데, 학습된 actor가 max long을 내면 critic은 그 action의 결과를 본 적이 없다. Deep Q-learning은 이런 구간에서 Q-value를 과대평가하기 쉽다. Levine et al.의 Offline RL tutorial은 이 문제를 distribution shift와 out-of-distribution action 문제로 정리한다.
Classic offline RL은 이 위험을 줄이기 위해 policy와 value objective를 보수적으로 만든다. Diffusion 기반 offline RL은 다른 방향에서 접근한다. policy를 더 표현력 있는 generative model로 바꿔서 dataset 안의 복수 행동 모드를 더 잘 표현한다.
JeTech 관점의 결론은 단순하다.
| 축 | 당장 기준선 | 연구 후보 |
|---|---|---|
| 안정 baseline | IQL, ReBRAC | CQL, TD3+BC |
| multi-modal action | Gaussian actor 한계 확인 | Diffusion-QL, EDP, DTQL |
| 운영 배포 | one-step actor 선호 | diffusion은 candidate generator 또는 teacher로 먼저 사용 |
| 평가 기준 | real 5Y gate | synthetic-real transfer gap, flat ratio, turnover, drawdown |
Diffusion policy가 항상 더 좋은 algorithm이라는 뜻은 아니다. Trading에서는 inference latency, action smoothness, turnover, regime transfer가 같이 중요하다. 우선 classic baseline을 CORL 수준으로 맞춘 뒤 diffusion을 붙여야 비교가 의미를 가진다.
Offline RL의 기본 문제
Online RL에서는 agent가 환경과 상호작용하면서 데이터를 새로 모은다. Offline RL에서는 dataset이 고정되어 있다.
D = (observation, action, reward, next_observation, done)
policy update는 D만 사용
새 market interaction 없음Trading에서는 이 제한이 장점이 된다. agent가 실험 삼아 레버리지를 높이거나, 특정 종목에서 위험한 action을 시도하지 않아도 된다. 대신 과거 데이터가 보여준 action support 안에서만 믿을 수 있다.
Offline RL의 실패는 보통 아래 흐름으로 생긴다.
1. Dataset이 특정 action 구간을 충분히 포함하지 않는다. 2. Actor가 reward를 높이기 위해 dataset 밖 action으로 이동한다. 3. Critic이 그 action의 Q-value를 부정확하게 높게 추정한다. 4. Actor가 더 멀리 이동한다. 5. Backtest에서는 좋아 보이지만 real gate에서 무너진다.
Trading에서는 이 실패가 flat collapse와 반대 방향으로도 나타난다. Conservative penalty가 너무 강하면 actor가 아무것도 하지 않는다. Dataset support를 벗어나면 위험하지만, 너무 붙잡으면 수익 기회를 버린다. 따라서 offline RL 연구의 핵심은 “얼마나 멀리 개선할 것인가”를 정하는 일이다.
Classic Offline RL 계열
TD3+BC
TD3+BC는 offline RL을 복잡하게 만들지 않는다. TD3 actor loss에 behavior cloning term을 붙인다.
actor objective = Q(s, pi(s)) 최대화 + dataset action과 거리 최소화이 방식은 구현이 작고 빠르다. Trading 연구에서는 baseline으로 좋다. 같은 synthetic dataset에서 TD3+BC가 전혀 못 이기면 dataset 자체가 빈약하거나 reward가 깨졌을 가능성이 크다.
한계도 분명하다. TD3+BC는 deterministic actor를 쓴다. 같은 state에서 long, flat, short가 모두 그럴듯한 dataset에서는 평균적인 action으로 끌릴 수 있다. 예를 들어 regime이 애매한 구간에서 실제 좋은 행동은 “변동성 축소까지 기다린다”와 “돌파 시 작게 진입한다”의 두 모드일 수 있다. Deterministic actor는 둘 사이의 애매한 exposure를 낼 수 있다.
ReBRAC
ReBRAC은 TD3+BC 계열을 다시 정리한 algorithm이다. 논문은 core algorithm보다 작은 design choice가 성능을 크게 바꾼다고 보여준다. normalization, actor/critic regularization, layer norm, critic update, target update 같은 구현 세부가 중요하다.
JeTech에서는 ReBRAC을 classic actor-critic 기준선으로 두는 편이 맞다. 이유는 세 가지다.
| 이유 | 설명 |
|---|---|
| 비교 가능성 | CORL 구현과 직접 대조할 수 있다 |
| 비용 | diffusion보다 학습과 추론이 싸다 |
| 실무성 | one-step actor라 live inference 경로에 넣기 쉽다 |
ReBRAC은 “새로운 거대한 모델”보다 “잘 튜닝된 기본기”에 가깝다. Trading dataset이 아직 불안정한 단계에서는 이런 baseline이 필요하다.
CQL
CQL은 unsupported action의 Q-value를 낮게 만든다. Actor가 dataset 밖 action으로 나가도 critic이 높은 값을 쉽게 주지 않는다.
Trading에서는 CQL이 매력적으로 보인다. 위험한 action을 억제하는 구조이기 때문이다. 다만 penalty가 강하면 수익 action까지 같이 눌린다. Crypto나 single-symbol training처럼 action support가 좁고 reward noise가 큰 환경에서는 CQL이 “거래하지 않는 정책”으로 수렴할 수 있다.
CQL은 다음 상황에서 우선 실험할 만하다.
| 상황 | CQL을 보는 이유 |
|---|---|
| synthetic Sharpe는 높은데 real Sharpe가 낮음 | over-optimistic critic 가능성 |
| one-sided exposure가 심함 | unsupported directional bet 억제 |
| tail event에서 손실이 큼 | conservative value learning이 drawdown을 줄일 가능성 |
IQL
IQL은 dataset 밖 action을 직접 평가하지 않는 방향으로 간다. Value를 expectile regression으로 학습하고, 좋은 dataset action을 advantage-weighted behavior cloning으로 추출한다.
이 구조는 trading에 잘 맞는다. 시장 데이터는 noisy하고, action label도 사람이 직접 만든 “정답”이 아니다. IQL은 policy improvement를 dataset 안쪽에서 수행하므로 value extrapolation 위험이 작다.
JeTech의 synthetic action labeler 기반 dataset에서는 IQL이 특히 중요하다. 우리가 만든 labeler는 oracle trader가 아니다. Trend following, mean reversion, random mix는 action support를 만들기 위한 장치다. IQL은 그 안에서 reward가 좋았던 action을 더 강하게 복제한다.
한계는 있다. Dataset 안에 좋은 action이 충분히 없으면 IQL도 꺼낼 것이 없다. World model이 다양한 market path를 만들고, action labeler가 다양한 exposure를 남겨야 IQL이 힘을 쓴다.
Decision Transformer
Decision Transformer는 RL 문제를 sequence modeling으로 바꾼다. Return-to-go, state, action sequence를 넣고 다음 action을 예측한다.
Trading에서는 sequence model이 자연스러워 보인다. 시장은 path-dependent이고, 최근 drawdown, realized volatility, position history가 중요하다. 하지만 classic Decision Transformer를 그대로 쓰면 두 문제가 생긴다.
| 문제 | Trading에서의 의미 |
|---|---|
| return-to-go conditioning | 미래 목표 수익률을 어떤 값으로 줄지 애매하다 |
| dataset quality dependency | 좋은 trajectory가 적으면 model은 좋은 sequence를 배우기 어렵다 |
따라서 JeTech의 현재 decision_transformer 계열은 classic DT라기보다 window-only sequence policy에 가깝다고 봐야 한다. 제대로 DT를 연구하려면 trajectory return target, risk-adjusted return target, drawdown-conditioned target을 명시해야 한다.
Diffusion 기반 Offline RL
Diffusion-QL은 policy를 conditional diffusion model로 표현한다. State를 condition으로 두고 action을 denoising process로 생성한다. Training loss에는 behavior cloning 성격과 Q-value maximization 성격이 같이 들어간다.
이 접근의 강점은 multi-modal action distribution이다.
state: 최근 224일 OHLC, 변동성 확대, 추세 약화
dataset action modes:
- flat 유지
- small short
- volatility breakout 대기 후 longGaussian actor나 deterministic actor는 이런 분포를 하나의 평균 action으로 줄이기 쉽다. Diffusion policy는 여러 action mode를 남길 수 있다. Trading에서 “같은 state처럼 보이지만 다른 regime으로 이어질 수 있는 구간”을 다룰 때 이 표현력이 도움이 될 수 있다.
비용이 문제다. Diffusion policy는 denoising step을 반복한다. 학습도 무겁고 inference도 느리다. Efficient Diffusion Policy는 sampling chain 비용을 줄이려 했고, DTQL은 diffusion policy를 trust region으로 쓰고 실제 actor는 one-step policy로 두는 방향을 제안한다.
JeTech에서는 diffusion을 곧바로 live policy로 쓰기보다 세 단계로 실험하는 편이 낫다.
| 단계 | 용도 | 이유 |
|---|---|---|
| 1 | action candidate generator | 같은 state에서 가능한 exposure 후보를 뽑는다 |
| 2 | behavior prior 또는 trust region | one-step actor가 dataset support 밖으로 나가는 것을 막는다 |
| 3 | live policy | latency와 turnover 검증 후 배포 후보로 올린다 |
학계 랭킹은 있는가
학계에 단일 랭킹은 없다. D4RL 점수표만 보고 “A가 B보다 항상 우수하다”고 말하면 안 된다. Algorithm 성능은 dataset 종류, action support, reward density, terminal handling, normalization, hyperparameter budget에 크게 의존한다. A Clean Slate for Offline RL도 algorithm 전체를 비교하기보다 구현 차이와 component ablation을 분리해야 한다고 지적한다.
그래도 실험 우선순위는 잡을 수 있다.
| 우선순위 | 알고리즘 | JeTech 판단 |
|---|---|---|
| 1 | IQL | dataset 밖 action 평가를 피해서 trading baseline으로 안전하다 |
| 2 | ReBRAC | CORL 기준으로 맞추기 좋고 actor-critic 성능이 강하다 |
| 3 | CQL | overestimation 억제용으로 필요하지만 penalty tuning이 민감하다 |
| 4 | TD3+BC | 가장 단순한 baseline으로 계속 유지한다 |
| 5 | Diffusion-QL 계열 | action multi-modality 확인 뒤 붙인다 |
| 6 | Decision Transformer | return conditioning 설계를 다시 해야 한다 |
이 순위는 “학계 최종 순위”가 아니라 JeTech 연구 운영 순서다. 금융 시계열에서는 benchmark 점수보다 real gate survival이 우선이다.
구현 기준
CORL은 JeTech의 offline RL 구현 바이블로 둔다. CORL은 CQL, IQL, TD3+BC, Decision Transformer, ReBRAC 등을 single-file 구현으로 제공하고 D4RL 기준 실험을 붙인다. 우리 구현이 CORL과 달라질 수는 있지만, 달라지는 이유를 명시해야 한다.
체크리스트는 아래와 같다.
| 항목 | 확인할 것 |
|---|---|
| Dataset normalization | observation, action, reward scaling이 algorithm마다 다르게 섞이지 않는가 |
| Critic target | twin Q의 min을 쓰는가, target network update가 맞는가 |
| Actor regularization | BC weight가 Q scale에 따라 과하거나 약하지 않은가 |
| IQL value update | expectile, advantage temperature, target critic이 분리되는가 |
| CQL penalty | random action, policy action, dataset action sampling이 명확한가 |
| DT sequence | return target이 trading objective와 연결되는가 |
Diffusion policy는 이 baseline들이 정리된 뒤 붙이는 편이 맞다. Diffusion을 먼저 넣으면 성능 개선이 policy class 때문인지, dataset generation 때문인지, reward leak 때문인지 분리하기 어렵다.
JeTech 실험 결론
다음 실험은 “diffusion이 멋져 보이니까 붙인다”가 아니라 아래 질문에 답해야 한다.
1. 같은 generated dataset에서 IQL과 ReBRAC이 real gate를 얼마나 통과하는가 2. CQL은 synthetic-real gap과 drawdown을 줄이는가 3. 같은 state에서 reward가 좋은 action mode가 여러 개 존재하는가 4. Diffusion policy가 그 mode를 실제로 분리해서 생성하는가 5. Diffusion candidate를 one-step actor로 distill해도 성능이 유지되는가
이 질문에 답하면 diffusion 기반 offline RL은 연구 축이 된다. 답하지 못하면 무거운 actor 하나를 추가한 것에 그친다.