FinWorld Configuration Guide

Comprehensive guide to configuring FinWorld using Python-based configuration files

Configuration System Overview

FinWorld uses a Python-based configuration system built on mmengine. Each configuration file is a Python script that defines all necessary parameters for a specific task or component.

Key Features

  • Python-based: Full Python syntax support for complex configurations
  • mmengine Integration: Built on mmengine for unified experiment management
  • Registry Mechanism: Flexible component management with type parameters
  • Seven-Layer Architecture: Organized by hierarchical layer structure
  • Task-oriented: Separate configs for different financial tasks

Configuration Structure

# Basic configuration structure
task_type = "trading"           # Task type
symbol = "AAPL"                 # Asset symbol
workdir = "workdir"             # Working directory
method = "ppo"                  # Method name
tag = f"{symbol}_{task_type}_{method}"  # Experiment tag

# Dataset parameters
history_timestamps = 64
future_timestamps = 32
start_timestamp = "2015-05-01"
end_timestamp = "2025-05-01"

# Model parameters
embedding_dim = 256
num_heads = 4
depth = 4

# Configuration dictionaries
dataset = dict(...)
environment = dict(...)
agent = dict(...)
trainer = dict(...)
task = dict(...)

Seven-Layer Architecture Configuration

FinWorld's configuration system is organized around its seven-layer architecture. Each layer has specific configuration parameters:

1. Data Layer

Download & Storage

Download Configuration

downloader = dict(
    type="PriceDownloader",  # Specify downloader type
    source="fmp",
    assets_path="configs/_asset_list_/dj30.json",
    start_date="1995-05-01",
    end_date="2025-05-01"
)

Dataset Configuration

dataset = dict(
    type="SingleAssetDataset",  # Specify dataset type
    symbol="AAPL",
    data_path="datasets/exp",
    history_timestamps=64,
    future_timestamps=32
)

2. Process Layer

Data Processing

Processor Configuration

processor = dict(
    type="AggProcessor",  # Specify aggregator processor type
    procs_config=[
        dict(
            type="Processor",  # Specify processor type
            assets_name="dj30",
            data_type="price",
            feature_type="Alpha158"
        )
    ]
)

3. Model Layer

AI Models

Embedding Configuration

embed_config = dict(
    type="TradingPatchEmbed",  # Specify embedding layer type
    dense_input_dim=150,
    latent_dim=256,
    dropout=0.0
)

Encoder Configuration

encoder_config = dict(
    type="TransformerEncoder",  # Specify encoder type
    input_dim=256,
    depth=4,
    num_heads=4
)

4. Agent Layer

AI Agents

RL Agent

agent = dict(
    type="PPO",  # Specify PPO agent type
    task_type="trading",
    action_dim=3,
    actor_output_dim=3,
    critic_output_dim=1
)

LLM Agent

agent = dict(
    type="FinanceAgent",  # Specify finance agent type
    model="Qwen3-32B",
    max_steps=20
)

5. Environment Layer

Trading Environment

Trading Environment

environment = dict(
    type="EnvironmentPatchTrading",  # Specify trading environment type
    mode="train",
    initial_amount=1e5,
    transaction_cost_pct=1e-4
)

Portfolio Environment

environment = dict(
    type="EnvironmentPatchPortfolio",  # Specify portfolio environment type
    mode="train",
    initial_amount=1e5,
    num_assets=29
)

6. Trainer Layer

Training Logic

RL Trainer

trainer = dict(
    type="PPOTradingTrainer",  # Specify PPO trainer type
    policy_learning_rate=1e-5,
    total_steps=int(1e8),
    device="cuda"
)

ML Trainer

trainer = dict(
    type="MLTradingTrainer",  # Specify ML trainer type
    n_estimators=1000,
    learning_rate=0.05
)

7. Task Layer

Task Orchestration

Task Configuration

task = dict(
    type="Task",  # Specify task type
    trainer=None,
    task_type="trading"
)

Async Task

task = dict(
    type="AsyncTask",  # Specify async task type
    trainer=None,
    task_type="trading"
)

Task-Specific Configurations

FinWorld provides comprehensive configuration examples for different financial tasks. All configuration files are organized in the configs/ directory:

Trading Configurations

Configuration files for single-asset trading tasks using RL, ML, and rule-based approaches.

Portfolio Configurations

Configuration files for multi-asset portfolio management using various approaches.

Forecasting Configurations

Configuration files for time series forecasting using transformer-based models.

Agent Configurations

Configuration files for LLM-based financial agents and reasoning systems.

Data Configurations

Configuration files for data downloading, processing, and feature engineering.

Advanced Configurations

Configuration files for advanced models including VAE, Storm, and diffusion models.

Complete Configuration Examples

Explore complete configuration examples for different scenarios on GitHub:

Browse All Examples

Explore the complete collection of configuration examples:

View All Configuration Examples