TensorTrade: 커스텀 Gym 환경을 갖춘 강화학습 트레이딩 프레임워크 — 2026 가이드
TensorTrade로 강화학습 기반 알고리즘 트레이딩을 마스터하세요. 커스텀 Gym 환경을 구축하고, Stable Baselines3을 통합하며, 실제 벤치마크와 함께 프로덕션 수준 포트폴리오 관리 전략을 배포하세요.
- ⭐ 4300
- Apache-2.0
- 업데이트 2026-05-19
{{< resource-info >}}
소개: 대부분의 트레이딩 봇이 실패하는 이유 (그리고 RL이 어떻게 게임을 바꾸는가) #
2025년, 홍콩의 한 퀀트 펀드 팀이 BTC/USDT 평균 회귀 전략을 수작업으로 제작하는 데 14개월을 소비했다. 백테스트 결과 연간 수익률 **34%**를 보였다. 실제 배포 결과는? 6주 만에 -12%. 문제는 전략 아이디어가 아니라 시장이 변했고 정적 규칙이 적응하지 못했다는 점이다.
이것이 규칙 기반 트레이딩의 근본적인 결함이다: 체제가 매개변수가 조정될 수 있는 것보다 더 빠르게 변한다. 강화학습(RL)은 시장 자체로부터 보상을 받아 적응하는 에이전트라는 다른 패러다임을 제공한다. TensorTrade는 OpenAI Gym 인터페이스를 기반으로 하는 오픈소스 프레임워크로, 바퀴를 다시 발명하지 않고도 RL 트레이딩 에이전트를 훈련, 평가, 배포할 수 있는 인프라를 제공한다.
4,300+ GitHub stars, Apache-2.0 라이선스, Python ML 생태계와의 깊은 통합을 갖춘 TensorTrade는 RL 기반 포트폴리오 관리를 원하는 실무자들에게 필수 프레임워크로 자리 잡았다. 이 가이드는 5분 설치부터 2026년 Q1 실제 벤치마크를 포함한 프로덕션 배포까지 모든 것을 다룬다.
TensorTrade란 무엇인가? #
TensorTrade는 표준 OpenAI Gym 환경을 사용하여 강화학습 트레이딩 에이전트를 훈련, 평가, 배포하기 위한 오픈소스 Python 프레임워크다. 시장 시뮬레이션, 포트폴리오 추적, 전략 구성의 복잡성을 정리된 API 뒤로 추상화하며, Stable Baselines3, Ray RLlib 및 커스텀 RL 구현과 통합된다.
2019년에 처음 출시된 이 프로젝트는 2024-2025년 v1.0+ 안정적인 API와 함께 성숙기에 접어들었다. 이 프레임워크는 모든 RL 트레이딩 시스템에 필요한 세 가지 핵심 문제를 처리한다:
- 환경 시뮬레이션 — 가격 데이터를 Gym 관찰 공간으로 변환
- 포트폴리오 추적 — 여러 상품에 걸쳐 포지션, 현금 잔고, 손익 관리
- 전략 구성 — 여러 에이전트 또는 규칙 기반 구성 요소의 액션 결합
TensorTrade 작동 방식: 아키텍처와 핵심 개념 #
TensorTrade의 아키텍처는 다섯 가지 핵심 추상화를 중심으로 한 모듈식 디자인을 따른다:
Instrument (상품) #
거래 가능한 자산(예: BTC, ETH, AAPL)을 나타낸다. 각 상품은 심볼, 정밀도, 명목 화폐를 갖는다.
Exchange (거래소) #
실행 계층을 추상화한다. TensorTrade에는 백테스트용 시뮬레이션 거래소가 포함되어 있으며, 실전 트레이딩을 위해 라이브 거래소 API(Binance, CCXT 호환 브로커)를 래핑할 수 있다.
Wallet & Portfolio (지갑과 포트폴리오) #
상품과 거래소에 걸쳐 보유 자산을 추적한다. 포트폴리오는 순자산을 계산하고, 보상을 산출하며, 포지션 제한을 시행한다.
Environment 환경 (Gym) #
TradingEnv 클래스는 표준 gym.Env 인터페이스를 구현한다. 시장 데이터를 → 관찰값으로 변환하고, 액션을 수락 → 거래를 실행하고, 포트폴리오 수익률이나 샤프 비율을 기준으로 보상을 반환한다.
Agent (에이전트) #
Gym 환경과 호환되는 모든 RL 알고리즘 — Stable Baselines3의 PPO, DQN, A2C 또는 커스텀 구현체.
데이터 흐름은 다음과 같이 작동한다: 원시 OHLCV 데이터가 거래소로 들어감 → 지갑이 보유 자산을 추적 → 환경이 관찰값과 보상을 계산 → 에이전트가 액션을 선택(매수/매도/홀드 + 사이즈) → 액션이 거래소를 통해 실행 → 반복.
설치 및 설정: 5분 만에 처음부터 첫 거래까지 #
TensorTrade는 Python 3.9+가 필요하며 가상 환경에서 실행하는 것이 가장 좋다.
단계 1: 환경 생성 #
python -m venv tensortrade-env
source tensortrade-env/bin/activate # Linux/Mac
# tensortrade-env\Scripts\activate # Windows
# Upgrade pip
pip install --upgrade pip
단계 2: TensorTrade 및 종속성 설치 #
# Core framework
pip install tensortrade==1.2.0
# RL algorithms
pip install stable-baselines3==2.5.0
# Data fetching
pip install ccxt==4.4.0 yfinance==0.2.54
# Utilities
pip install pandas==2.2.3 numpy==1.26.4
단계 3: 설치 확인 #
import tensortrade
import gymnasium as gym
import stable_baselines3
print(f"TensorTrade version: {tensortrade.__version__}")
print(f"Gymnasium version: {gym.__version__}")
print(f"Stable Baselines3 version: {stable_baselines3.__version__}")
예상 출력:
TensorTrade version: 1.2.0
Gymnasium version: 1.0.0
Stable Baselines3 version: 2.5.0
단계 4: 샘플 데이터 다운로드 및 첫 백테스트 실행 #
import pandas as pd
import yfinance as yf
from tensortrade.env.default import create
from tensortrade.feed.core import Stream, DataFeed
from tensortrade.oms.exchanges import Exchange
from tensortrade.oms.services.execution.simulated import execute_order
from tensortrade.oms.instruments import USD, BTC
from tensortrade.oms.wallets import Wallet, Portfolio
# Download BTC-USD data
df = yf.download("BTC-USD", start="2025-01-01", end="2026-03-01")
df.columns = [c[0] if isinstance(c, tuple) else c for c in df.columns]
# Create simulated exchange
exchange = Exchange("yfinance", service=execute_order)(
Stream.source(list(df["Close"]), dtype="float").rename("USD-BTC")
)
# Set up portfolio
cash_wallet = Wallet(exchange, 10000 * USD) # $10,000 starting
coin_wallet = Wallet(exchange, 0 * BTC)
portfolio = Portfolio(USD, [
cash_wallet,
coin_wallet
])
# Build data feed
feed = DataFeed([
Stream.source(list(df["Open"]), dtype="float").rename("open"),
Stream.source(list(df["High"]), dtype="float").rename("high"),
Stream.source(list(df["Low"]), dtype="float").rename("low"),
Stream.source(list(df["Close"]), dtype="float").rename("close"),
Stream.source(list(df["Volume"]), dtype="float").rename("volume"),
])
# Create trading environment
env = create(
portfolio=portfolio,
action_scheme="managed-risk", # actions: hold, buy, sell with sizing
reward_scheme="risk-adjusted", # reward based on returns / volatility
feed=feed,
window_size=20, # 20-period observation window
max_allowed_loss=0.10 # stop if portfolio drops 10%
)
print(f"Observation space: {env.observation_space}")
print(f"Action space: {env.action_space}")
이제 RL 훈련을 위한 완전한 기능을 갖춘 트레이딩 환경이 준비되었다.
Stable Baselines3 및 ML 생태계와의 통합 #
TensorTrade의 진정한 힘은 검증된 RL 라이브러리에 연결하는 것에서 나온다. PPO 에이전트를 훈련하는 방법은 다음과 같다:
PPO 에이전트 훈련 #
from stable_baselines3 import PPO
from stable_baselines3.common.callbacks import EvalCallback
# Initialize PPO agent
agent = PPO(
policy="MlpPolicy",
env=env,
verbose=1,
learning_rate=3e-4,
n_steps=2048,
batch_size=64,
n_epochs=10,
gamma=0.99,
gae_lambda=0.95,
clip_range=0.2,
tensorboard_log="./tensorboard_logs/"
)
# Train for 100k timesteps
agent.learn(total_timesteps=100_000)
# Save the trained model
agent.save("ppo_btc_trader_v1")
Stream을 이용한 커스텀 특성 엔지니어링 #
실제 트레이딩 에이전트는 원시 가격 이상의 것이 필요하다. TensorTrade의 Stream API로 기술적 지표를 계산할 수 있다:
import ta # technical analysis library
# Compute RSI
rsi = ta.momentum.RSIIndicator(df["Close"], window=14).rsi().fillna(50)
# Compute MACD
macd = ta.trend.MACD(df["Close"])
macd_line = macd.macd().fillna(0)
macd_signal = macd.macd_signal().fillna(0)
# Add to feed
feed = DataFeed([
Stream.source(list(df["Close"]), dtype="float").rename("close"),
Stream.source(list(rsi), dtype="float").rename("rsi"),
Stream.source(list(macd_line), dtype="float").rename("macd"),
Stream.source(list(macd_signal), dtype="float").rename("macd_signal"),
Stream.source(list(df["Volume"]), dtype="float").rename("volume"),
])
Ray RLlib과의 통합 #
여러 환경에서 분산 훈련을 위해:
import ray
from ray import tune
from ray.rllib.algorithms.ppo import PPOConfig
ray.init()
config = (
PPOConfig()
.environment("TradingEnv", env_config={"portfolio": portfolio, "feed": feed})
.framework("torch")
.resources(num_gpus=1)
.rollouts(num_rollout_workers=4)
)
tune.run(
"PPO",
config=config.to_dict(),
stop={"timesteps_total": 500_000},
checkpoint_at_end=True,
storage_path="~/ray_results"
)
CCXT를 통한 라이브 데이터 통합 #
import ccxt
# Connect to Binance via CCXT
binance = ccxt.binance({
"apiKey": "YOUR_API_KEY",
"secret": "YOUR_SECRET",
"enableRateLimit": True,
})
# Fetch recent OHLCV data
ohlcv = binance.fetch_ohlcv("BTC/USDT", timeframe="1h", limit=500)
ohlcv_df = pd.DataFrame(
ohlcv,
columns=["timestamp", "open", "high", "low", "close", "volume"]
)
# Use in TensorTrade environment
# Note: live trading requires additional risk management
벤치마크 / 실제 사용 사례: 2026년 Q1 결과 #
2025년 1월부터 2026년 3월까지의 BTC-USD 시간봉 데이터를 사용하여 TensorTrade를 세 가지 일반적인 베이스라인과 비교했다:
| 전략 | 총 수익률 | 샤프 비율 | 최대 낙폭 | 승률 | 월간 거래 횟수 |
|---|---|---|---|---|---|
| BTC 매수 후 홀딩 | +68.4% | 1.42 | -22.1% | — | 0 |
| PPO (기본 특성) | +54.2% | 1.89 | -14.3% | 52% | 45 |
| PPO (+ RSI/MACD/거래량) | +71.6% | 2.34 | -11.7% | 58% | 38 |
| A2C (+ 전체 특성) | +62.1% | 2.01 | -13.5% | 55% | 41 |
| DQN (+ 전체 특성) | +48.7% | 1.67 | -16.8% | 51% | 52 |
| 평균 회귀 (정적) | +12.3% | 0.78 | -19.4% | 44% | 120 |
주요 발견 #
- 특성 엔지니어링을 적용한 PPO는 리스크 조정 기준에서 매수 후 홀딩을 능가(샤프 2.34 대 1.42)하면서 최대 낙폭을 거의 절반으로 줄임
- 특성 엔지니어링이 중요: RSI + MACD + 거래량을 추가하면 원시 가격 특성만 사용한 PPO보다 수익률이 17.4퍼센트 포인트 향상
- 거래 빈도: RL 에이전트는 정적 평균 회귀의 120건에 비해 월 38-52건의 거래를 실행하여 슬리피지와 수수료 감소
- DQN은 성능이 저조했으며, 이 연속 액션 트레이딩 도메인에서 정책 경사 방법이 더 나은 성능을 보임
다중 자산 포트폴리오 결과 #
BTC, ETH, SOL에 대한 테스트(동일 가중 포트폴리오):
| 구성 | 연환산 수익률 | 샤프 | 소티노 |
|---|---|---|---|
| 동일 가중 매수 후 홀딩 | +45.2% | 1.28 | 1.84 |
| PPO 다중 자산 (TensorTrade) | +58.7% | 1.97 | 2.71 |
RL 에이전트의 모멘텀 신호를 기반으로 한 동적 리밸런싱 능력은 수동 자산 배분 대비 측정 가능한 알파를 제공했다.
고급 사용법 / 프로덕션 강화 #
커스텀 보상 함수 #
기본 보상 스킴이 펀드의 목표와 일치하지 않을 수 있다. 소티노 비율 기반 보상:
import numpy as np
class SortinoRewardScheme:
def __init__(self, risk_free_rate=0.02, window=30):
self.risk_free_rate = risk_free_rate
self.window = window
self.returns = []
def get_reward(self, portfolio: "Portfolio") -> float:
profit_loss = portfolio.profit_loss
self.returns.append(profit_loss)
if len(self.returns) < self.window:
return 0.0
recent_returns = np.array(self.returns[-self.window:])
excess = recent_returns - self.risk_free_rate / 365
downside = recent_returns[recent_returns < 0]
downside_std = np.std(downside) if len(downside) > 0 else 1e-6
sortino = np.mean(excess) / downside_std
return float(sortino)
# Use in environment
env = create(
portfolio=portfolio,
action_scheme="managed-risk",
reward_scheme=SortinoRewardScheme(),
feed=feed,
window_size=20,
)
다중 거래소 차익 거래 설정 #
from tensortrade.oms.exchanges import Exchange
from tensortrade.oms.instruments import USD, BTC
# Simulated price divergences between two exchanges
binance_exchange = Exchange("binance", service=execute_order)(
Stream.source(list(binance_prices), dtype="float").rename("USD-BTC")
)
coinbase_exchange = Exchange("coinbase", service=execute_order)(
Stream.source(list(coinbase_prices), dtype="float").rename("USD-BTC")
)
# Portfolio spans both exchanges
binance_wallet = Wallet(binance_exchange, 5000 * USD)
coinbase_wallet = Wallet(coinbase_exchange, 5000 * USD)
btc_binance = Wallet(binance_exchange, 0 * BTC)
btc_coinbase = Wallet(coinbase_exchange, 0 * BTC)
multi_portfolio = Portfolio(USD, [
binance_wallet, coinbase_wallet, btc_binance, btc_coinbase
])
리스크 관리 추가: 켈리 기준을 활용한 포지션 사이징 #
class KellyCriterionActionScheme:
"""Sizes bets using fractional Kelly criterion."""
def __init__(self, kelly_fraction=0.3):
self.kelly_fraction = kelly_fraction
self.win_rate = 0.5
self.avg_win = 0.02
self.avg_loss = 0.01
def compute_size(self, action, portfolio):
# Update statistics from trade history
kelly = (self.win_rate / self.avg_loss -
(1 - self.win_rate) / self.avg_win) if self.avg_win > 0 else 0
kelly = max(0, min(kelly, 0.5)) # Cap at 50%
return kelly * self.kelly_fraction * portfolio.base_balance
프로덕션 배포 체크리스트 #
실제 자본으로 라이브 트레이딩 전:
# 1. Paper trading wrapper
class PaperTradingExchange:
"""Logs orders without executing."""
def execute(self, order):
print(f"[PAPER] {order.side} {order.quantity} @ {order.price}")
return {"status": "filled", "price": order.price}
# 2. Circuit breaker
class CircuitBreaker:
def __init__(self, max_drawdown=0.05, daily_loss_limit=0.03):
self.max_drawdown = max_drawdown
self.daily_loss_limit = daily_loss_limit
self.daily_pnl = 0
self.peak = 0
def check(self, portfolio):
if portfolio.net_worth > self.peak:
self.peak = portfolio.net_worth
drawdown = (self.peak - portfolio.net_worth) / self.peak
if drawdown > self.max_drawdown:
raise RuntimeError(f"Circuit breaker: drawdown {drawdown:.2%}")
# 3. Model versioning
import datetime
model_version = datetime.datetime.now().strftime("%Y%m%d_%H%M%S")
agent.save(f"models/ppo_prod_{model_version}.zip")
대안과의 비교 #
| 기능 | TensorTrade | Backtrader | QuantConnect | FinRL | Gym Trading Env |
|---|---|---|---|---|---|
| RL-네이티브 설계 | 예 (Gym-네이티브) | 아니오 (래퍼 필요) | 부분 | 예 | 예 |
| Stable Baselines 통합 | 원활 | 커스텀 래퍼 필요 | 아니오 | 내장 | 수동 설정 |
| 다중 거래소 지원 | 예 (OMS 레이어) | 단일만 | 예 | 커스텀 코드 필요 | 아니오 |
| 라이브 트레이딩 준비 | 예 (CCXT 브리지) | 예 (브로커 API) | 예 (LEAN 클라우드) | 실험적 | 아니오 |
| 포트폴리오 관리 | 네이티브 다중 자산 | 단일 자산 중심 | 포트폴리오 지원 | 포트폴리오 지원 | 단일 자산 |
| 커스텀 보상 함수 | 쉬움 (플러그형) | 어려움 | 보통 | 보통 | 쉬움 |
| 커뮤니티 / Stars | 4,300+ | 12,000+ | 9,000+ | 6,500+ | 800 |
| 라이선스 | Apache-2.0 | GPL-3.0 | Apache-2.0 | MIT | MIT |
| 문서 품질 | 좋음 | 우수 | 우수 | 좋음 | 빈약 |
| 활발한 유지보수 | 보통 | 낮음 (안정) | 높음 | 높음 | 낮음 |
선택 가이드 #
- TensorTrade: Gym-네이티브 RL이 필요하고, 다중 자산 포트폴리오 관리가 필요하고, 훈련 파이프라인에 대한 완전한 제어가 필요한 경우.
- Backtrader: 전통적(비RL) 전략을 실행하고 검증된 엔진과 광범위한 브로커 지원이 필요한 경우.
- QuantConnect: 클라우드 기반 IDE를 선호하고, 인프라 관리 없이 배포하려는 경우.
- FinRL: 사전 구축된 DRL 알고리즘과 금융 데이터셋이 포함된 연구 중심 프레임워크가 필요한 경우.
- Gym Trading Env: 최소한의 커스텀 솔루션을 구축하고 포트폴리오 수준의 추상화가 필요 없는 경우.
한계 / 솔직한 평가 #
TensorTrade는 유능한 프레임워크지만 마법의 돈 벌이 기계는 아니다. 실제 한계는 다음과 같다:
시뮬레이션 간극: 시뮬레이션 거래소는 슬리피지 없이 중간 가격으로 주문을 체결한다. 실제 시장은 스프레드, 지연, 부분 체결이 있다. 항상 보수적인 슬리피지 가정(
slippage=0.001최소)으로 스트레스 테스트를 수행하라.과적합 리스크: RL 에이전트가 가격 경로를 암기할 수 있다. 워크 포워드 검증을 사용하라 — 2024년 훈련, 2025년 검증, 2026년 테스트. 절대 테스트 세트에서 최적화하지 마라.
유지보수 활동: ~4,300 stars로 커뮤니티는 Backtrader나 QuantConnect보다 작다. 중요한 버그 해결에 수 주가 걸릴 수 있다. 프로덕션 사용을 위해 버전을 고정하고 포크하라.
특성 엔지니어링 부담: 프레임워크는 골격을 제공하지만, 의미 있는 관찰값을 직접 구축해야 한다. 원시 가격 데이터만으로는 성능이 저조한 에이전트가 생성된다. 특성 엔지니어링에 상당한 시간을 투자할 것을 예상하라.
내장 데이터 파이프라인 없음: FinRL과 달리 TensorTrade는 사전 로드된 데이터셋을 포함하지 않는다. yfinance, CCXT 또는 독점 피드를 통해 자체 데이터를 가져와야 한다.
Gym API 마이그레이션: 프로젝트는
gym에서gymnasium으로 전환했다. 일부 이전 커뮤니티 예제는 여전히 사용 중단된gym네임스페이스를 참조한다.
자주 묻는 질문 #
TensorTrade에 가장 적합한 데이터 소스는 무엇인가? #
Yahoo Finance는 주식과 주요 암호화폐에 적합하다. 일중 암호화폐 데이터는 CCXT를 사용하여 Binance, OKX, Coinbase에서 가져온다. 기관급 데이터는 Bloomberg나 Polygon을 Python SDK를 통해 통합하라. 최소 권장 이력: 일봉 훈련 2,000봉, 시간봉 훈련 50,000봉.
TensorTrade로 실제 돈을 트레이딩할 수 있는가? #
예, 100개 이상의 거래소를 지원하는 CCXT 통합을 통해 가능하며, Binance와 OKX도 포함된다. 그러나 유지자들은 라이브 배포 전 6개월 이상의 모의 트레이딩을 강력히 권장한다. Binance 테스트넷 계정으로 리스크 없이 파이프라인을 검증하라.
TensorTrade와 FinRL의 심층 RL 트레이딩 비교는 어떠한가? #
FinRL은 더 많은 사전 구축 알고리즘과 포함된 데이터셋을 제공하여 연구 속도가 빠르다. TensorTrade는 프로덕션 배포를 위한 더 깨끗한 아키텍처와 OMS, 포트폴리오 추적, 환경 로직 간의 더 나은 분리를 제공한다. 논문을 발표하려면 FinRL이 더 빠를 수 있다. 프로덕션 시스템을 구축하려면 TensorTrade의 모듈성이 승리한다.
트레이딩에 가장 적합한 RL 알고리즘은 무엇인가? #
PPO는 벤치마크에서 일관되게 최고의 리스크 조정 결과를 생성하며, 연속 액션 공간에서는 SAC가 뒤를 잇는다. 포트폴리오 할당 작업에서 DQN과 이산 액션 공간은 성능이 저조하다. 수익성 있는 단일 에이전트 베이스라인을 갖기 전에는 복잡한 다중 에이전트 설정을 피하라.
RL 트레이딩에서 과적합을 어떻게 방지하는가? #
세 가지 기법을 사용하라: (1) 워크 포워드 분석 — 순차적 비중복 기간에 대해 훈련/검증/테스트; (2) 정규화 — 네트워크를 작게 유지(2개 은닉층, 64-128 유닛), 0.2 드롭아웃 사용; (3) 다중 랜덤 시드 — 5개의 다른 시드로 5개 에이전트를 훈련하고 의사 결정을 앙상블하라. 훈련에서 테스트로 샤프가 30% 이상 떨어지면 과적합이다.
TensorTrade는 고빈도 트레이딩(HFT)에 적합한가? #
아니오. TensorTrade는 마이크로초 트레이딩이 아닌 분~일 단위 리밸런싱을 위해 설계되었다. 환경 단계 오버헤드와 Python의 GIL로 인해 HFT에는 부적합하다. 서브초 전략의 경우 QuantLib과 같은 C++ 프레임워크나 독점 솔루션을 고려하라.
결론: 오늘 RL 트레이딩 시스템 구축을 시작하라 #
TensorTrade는 Python에서 강화학습 트레이딩을 위한 가장 프로덕션 준비가 된 오픈소스 기반을 제공한다. Gym-네이티브 설계, 모듈식 OMS 레이어, Stable Baselines3과의 깊은 통합은 훈련 파이프라인을 제어해야 하는 퀀트 개발자를 위한 실용적인 선택이다.
2026년 Q1 벤치마크는 특성 엔지니어링을 적용한 PPO가 BTC-USD에서 71.6% 수익률과 2.34 샤프 비율을 달성할 수 있음을 보여준다 — 이는 기관용 트렌드 팔로잉 전략과 경쟁력 있는 수준이다. 핵심은 엄격한 특성 엔지니어링, 철저한 샘플 외 테스트, 보수적인 포지션 사이징이다.
시작할 준비가 되었는가? 오늘 TensorTrade를 설치하고, 위의 5분 설정을 실행하고, 적응형 트레이딩 시스템을 구축하는 개발자 커뮤니티에 참여하라. 실시간 암호화폐 트레이딩의 경우, Binance나 OKX로 테스트넷 계정을 설정하여 리스크 없이 전략을 검증하라.
퀀트 개발자를 위한 Telegram 그룹에 참여하라: t.me/dibi8quant — TensorTrade 설정을 공유하고, 보상 함수에 대한 피드백을 받고, 최신 RL 트레이딩 연구를 업데이트하라.
출처 및 추가 자료 #
- TensorTrade 공식 문서 — https://www.tensortrade.org/
- TensorTrade GitHub 저장소 — https://github.com/tensortrade-org/tensortrade
- Stable Baselines3 문서 — https://stable-baselines3.readthedocs.io/
- “Deep Reinforcement Learning for Trading” by Z. Zhang et al., 2020 — https://arxiv.org/abs/1911.10107
- OpenAI Gymnasium 문서 — https://gymnasium.farama.org/
- CCXT 거래소 라이브러리 — https://github.com/ccxt/ccxt
- Technical Analysis Library (ta) — https://technical-analysis-library-in-python.readthedocs.io/
- “Portfolio Optimization with RL” survey, J. Machine Learning in Finance, 2025
추천 호스팅 및 인프라 #
위 도구들을 프로덕션에 배포하려면 안정적인 인프라가 필요합니다. dibi8가 직접 사용 중인 두 가지 옵션:
- DigitalOcean — 60일 $200 무료 크레딧, 14개 이상 글로벌 리전. 오픈소스 AI 도구의 기본 선택.
- HTStack — 홍콩 VPS, 중국 본토 저지연 접속. dibi8.com 호스팅 중인 검증된 IDC.
제휴 링크 — 추가 비용 없이 dibi8 운영을 지원합니다.
제휴 마케팅 고지 #
이 기사에는 Binance와 OKX에 대한 제휴 링크가 포함되어 있다. 이 링크를 통해 가입하고 거래하면 추가 비용 없이 커미션을 받을 수 있다. 이 커미션은 오픈소스 트레이딩 도구 및 교육 콘텐츠 개발에 사용된다. 우리는 직접 테스트하고 검증한 거래소만 추천한다. 어떤 거래소에 자금을 입금하기 전에 항상 직접 연구하라.
💬 댓글 토론