finrl_env-v2-1-0 / models.py
burtenshaw's picture
burtenshaw HF Staff
Upload folder using huggingface_hub
cd9dd20 verified
# Copyright (c) Meta Platforms, Inc. and affiliates.
# All rights reserved.
#
# This source code is licensed under the BSD-style license found in the
# LICENSE file in the root directory of this source tree.
"""
Data models for the FinRL Environment.
The FinRL environment wraps FinRL's StockTradingEnv for reinforcement learning
based stock trading.
"""
from pydantic import BaseModel, Field
class Action(BaseModel):
"""Minimal action base model for standalone FinRL deployments."""
class Observation(BaseModel):
"""Minimal observation base model compatible with OpenEnv HTTP server."""
done: bool = False
reward: float | None = None
class FinRLAction(Action):
"""
Action for the FinRL environment.
Represents trading actions for multiple stocks. Each value in the actions
array represents the number of shares to buy (positive) or sell (negative)
for each stock.
Attributes:
actions: Array of action values, one per stock. Values are normalized
between -1 and 1, where:
- Positive values indicate buying
- Negative values indicate selling
- Magnitude indicates relative size of trade
"""
actions: list[float]
class FinRLObservation(Observation):
"""
Observation from the FinRL environment.
Represents the current state of the trading environment including:
- Account balance
- Stock prices
- Stock holdings
- Technical indicators (MACD, RSI, etc.)
Attributes:
state: Flattened state vector containing all environment information.
Structure: [balance, prices..., holdings..., indicators...]
terminal: Whether the episode has ended
portfolio_value: Total value of portfolio (cash + holdings)
date: Current trading date
metadata: Additional information about the state
"""
state: list[float]
portfolio_value: float = 0.0
date: str = ""