SkillAgentSearch skills...

AlphaSAGE

Official implementation of AlphaSAGE: Structure-Aware Alpha Mining via GFlowNets for Robust Exploration (https://arxiv.org/abs/2509.25055).

Install / Use

/learn @BerkinChen/AlphaSAGE
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

<p align="center"> AlphaSAGE: Structure-Aware Alpha Mining via GFlowNets for Robust Exploration</p>

<p align="center"> <img src="https://img.shields.io/badge/License-MIT-blue.svg" alt="License"> <img src="https://img.shields.io/badge/Python-3.11+-green.svg" alt="Python"> </p>
</div>

This repository contains the official implementation of AlphaSAGE (Structure-Aware Alpha Mining via Generative Flow Networks for Robust Exploration), a novel framework for automated mining of predictive signals (alphas) in quantitative finance.

🎯 Overview

The automated mining of predictive signals, or alphas, is a central challenge in quantitative finance. While Reinforcement Learning (RL) has emerged as a promising paradigm for generating formulaic alphas, existing frameworks are fundamentally hampered by three interconnected issues:

  1. Reward Sparsity: Meaningful feedback is only available upon completion of a full formula, leading to inefficient and unstable exploration
  2. Inadequate Representation: Sequential representations fail to capture the mathematical structure that determines an alpha's behavior
  3. Mode Collapse: Standard RL objectives drive policies towards single optimal modes, contradicting the need for diverse, non-correlated alpha portfolios

🚀 Key Innovations

AlphaSAGE addresses these challenges through three cornerstone innovations:

1. Structure-Aware Encoder

  • Relational Graph Convolutional Network (RGCN) based encoder that captures the inherent mathematical structure of alpha expressions
  • Preserves semantic relationships between operators and operands
  • Enables better understanding of formula behavior and properties

2. Generative Flow Networks (GFlowNets) Framework

  • Replaces traditional RL with GFlowNets for diverse exploration
  • Naturally supports multi-modal sampling for generating diverse alpha portfolios
  • Avoids mode collapse inherent in standard policy gradient methods

3. Dense Multi-Faceted Reward Structure

  • Provides rich, intermediate feedback throughout the generation process
  • Combines multiple evaluation criteria for comprehensive alpha assessment
  • Enables more stable and efficient learning compared to sparse reward signals

The overview of AlphaSAGE is shown in the following figure: overview

📊 Results

Empirical results demonstrate that AlphaSAGE significantly outperforms existing baselines in:

  • Diversity: Mining more diverse alpha portfolios
  • Novelty: Generating novel alpha expressions
  • Predictive Power: Achieving higher predictive performance
  • Robustness: Maintaining performance across different market conditions

The backtest results of AlphaSAGE is shown in the following figure: backtest

Detailed results and analysis can be found in our paper.

🛠 Installation

We use PDM to manage the dependencies. To install PDM, please refer to the official documentation.

git clone https://github.com/BerkinChen/AlphaSAGE.git
cd AlphaSAGE
pdm install

📁 Data Preparation

We use the data from Qlib to train the model. Please refer to the official documentation to download the data.

🚀 Quick Start

AlphaSAGE operates in two main stages:

Stage 1: Generate Alpha Pool with GFlowNets

Generate a diverse pool of alpha expressions using our structure-aware GFlowNets framework:

python train_gfn.py \
        --seed 0 \
        --instrument csi300 \
        --pool_capacity 50 \
        --log_freq 500 \
        --update_freq 64 \
        --n_episodes 10000 \
        --encoder_type gnn \
        --entropy_coef 0.01 \
        --entropy_temperature 1.0 \
        --mask_dropout_prob 1.0 \
        --ssl_weight 1.0 \
        --nov_weight 0.3 \
        --weight_decay_type linear \
        --final_weight_ratio 0.0

Key Parameters:

  • --encoder_type gnn: Uses our structure-aware RGCN encoder
  • --pool_capacity 50: Maximum number of alphas to maintain in the pool
  • --entropy_coef 0.01: Controls exploration vs exploitation balance
  • --ssl_weight 1.0: Self-supervised learning weight for structure awareness
  • --nov_weight 0.3: Novelty reward weight for diversity

Stage 2: Evaluate and Combine Alpha Pool

Following AlphaForge, we use adaptive combination to create the final alpha portfolio:

python run_adaptive_combination.py \
    --expressions_file results_dir\
    --instruments csi300 \
    --threshold_ric 0.015 \
    --threshold_ricir 0.15 \
    --chunk_size 400 \
    --window inf \
    --n_factors 20 \
    --cuda 2 \
    --train_end_year 2020 \
    --seed 0 \

🔬 Baselines and Comparisons

AlphaQCM and AlphaGen Baselines

For comparison with AlphaGen and AlphaQCM, run the following commands:

AlphaQCM:

# Train AlphaQCM
python train_qcm.py \
    --instruments csi300 \
    --pool 20 \
    --seed 0

# Evaluate AlphaQCM results
python run_adaptive_combination.py \
    --expressions_file results_dir \
    --instruments csi300 \
    --cuda 2 \
    --train_end_year 2020 \
    --seed 0 \
    --use_weights True

AlphaGen (PPO):

# Train AlphaGen with PPO
python train_ppo.py \
    --instruments csi300 \
    --pool 20 \
    --seed 0

# Evaluate AlphaGen results  
python run_adaptive_combination.py \
    --expressions_file results_dir \
    --instruments csi300 \
    --cuda 2 \
    --train_end_year 2020 \
    --seed 0 \
    --use_weights True

Other Baselines

For AlphaForge and other ML baselines, please refer to the AlphaForge documentation.

📄 License

This project is licensed under the MIT License - see the LICENSE file for details.

🤝 Contributing

We welcome contributions! Please feel free to submit a Pull Request.

View on GitHub
GitHub Stars88
CategoryDevelopment
Updated2d ago
Forks26

Languages

Python

Security Score

80/100

Audited on Mar 27, 2026

No findings