Skip to main content

High-performance Fractional Brownian Motion toolkit for PyTorch with generators, processes, neural layers, and RL support

Project description

torch-fbm

Differentiable Fractional Brownian Motion & Rough Volatility for PyTorch

License: MIT PyTorch Python arXiv Build

torch-fbm is a high-performance, GPU-accelerated library for generating and analyzing Fractional Brownian Motion (fBm) and Fractional Gaussian Noise (fGn).

Designed for Quantitative Finance (Rough Volatility, Real-Time Streaming), Deep Reinforcement Learning (Regime-Aware Exploration), and Generative Modeling (Rough Diffusion), it provides differentiable generators and layers that seamlessly integrate into the PyTorch ecosystem.


Features

Core Generators

  • Fast Generation: Davies–Harte algorithm (FFT-based) for $O(N \log N)$ complexity.
  • Exact Generation: Cholesky decomposition for $O(N^3)$ ground-truth validation.
  • Streaming ($O(N^2)$): CachedFGNGenerator for real-time, online noise generation (Incremental Cholesky).

Quantitative Finance

  • Rough Processes: fractional_ou_process (Fractional Ornstein-Uhlenbeck) for volatility modeling.
  • Asset Pricing: geometric_fbm for simulating asset paths with long memory.
  • Constraints: reflected_fbm and fractional_brownian_bridge for boundary-constrained modeling and data imputation.
  • Stationarity: fractional_diff (FracDiff) for making financial time series stationary while preserving memory.

Deep Learning & Diffusion

  • Noisy Layers: FBMNoisyLinear for replacing standard weights with correlated noise.
  • Positional Embeddings: FractionalPositionalEmbedding for Transformers on fractal data.
  • Diffusion Tools: SpectralConsistencyLoss to enforce $1/f^\beta$ statistics and HurstScheduler for annealing roughness during sampling.
  • Neural SDEs: NeuralFSDE solver with learnable Hurst parameters.

Install

From PyPI:

pip install torch-fbm

For Development:

git clone https://github.com/Coder9872/torch-fbm.git
cd torch-fbm
pip install -e .

Quick Usage

1. Generate Rough Paths (Batch)

Generate fractional noise on CUDA using the fast Davies-Harte method.

import torch
from torchfbm import fbm

device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')

# Generate 4 paths of length 1024 with H=0.7 (Trending/Smooth)
path = fbm(n=1024, H=0.7, size=(4,), method='davies_harte', device=device)

2. Real-Time Streaming (Online)

Use CachedFGNGenerator for tick-by-tick simulation (e.g., Live Trading Environment).

from torchfbm.online import CachedFGNGenerator

stream = CachedFGNGenerator(H=0.3, device=device) # H=0.3 (Rough/Mean Reverting)

for i in range(100):
    val = stream.step() # Returns next point in O(N^2)
    print(f"Tick {i}: {val.item():.4f}")

3. Deep Learning (Regime-Aware Layers)

Replace standard nn.Linear with FBMNoisyLinear.

from torchfbm import FBMNoisyLinear

# Initialize layer with H=0.5 (Standard)
layer = FBMNoisyLinear(32, 10, H=0.5, device=device)

# Dynamic Regime Switching
layer.H = 0.2  # Switch to Rough/Anti-correlated noise
layer.refresh_noise_stream()
y = layer(torch.randn(8, 32, device=device))

4. Generative Diffusion (Hurst Scheduling)

Anneal the roughness of noise during the diffusion reverse process.

from torchfbm.schedulers import get_hurst_schedule

# Start rough (exploration), end smooth (refinement)
hs = get_hurst_schedule(n_steps=1000, start_H=0.3, end_H=0.7, type='cosine')

for t in reversed(range(1000)):
    current_H = hs[t]
    # Use current_H for sampling noise...

5. Financial Processes

Simulate Geometric fBm (Stock Prices) and Fractional OU (Volatility).

from torchfbm import geometric_fbm, fractional_ou_process

# Stock Price Simulation
s = geometric_fbm(n=1000, H=0.7, mu=0.05, sigma=0.2, s0=100.0, device=device)

Analysis Tools

from torchfbm import estimate_hurst, fractional_diff

# Differentiable Hurst Estimation
H_est = estimate_hurst(path.unsqueeze(0), min_lag=4, max_lag=64)

# Fractional Differentiation (Stationarity + Memory)
stationary_ts = fractional_diff(path, d=0.4)

Notes

  • Methods: Use method='davies_harte' for large simulations. Use method='cholesky' for exact validation.
  • Stability: $H$ is clamped to $[0.01, 0.99]$.
  • License: MIT License.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

torchfbm-0.1.1.tar.gz (22.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

torchfbm-0.1.1-py3-none-any.whl (24.4 kB view details)

Uploaded Python 3

File details

Details for the file torchfbm-0.1.1.tar.gz.

File metadata

  • Download URL: torchfbm-0.1.1.tar.gz
  • Upload date:
  • Size: 22.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.13

File hashes

Hashes for torchfbm-0.1.1.tar.gz
Algorithm Hash digest
SHA256 e1672183b4e718f2f97fcba89a5a3cb36388626518939e026c0cc9a8811c5a8f
MD5 5baf44eaafd728003f91551bf71775db
BLAKE2b-256 59c60f99a698112a31c73d0a8fbda4c5e00138227eab9f3ad6530928a3b28e2a

See more details on using hashes here.

File details

Details for the file torchfbm-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: torchfbm-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 24.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.13

File hashes

Hashes for torchfbm-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 81e06671db07f471bbd2b5c02ef65a7628e66a90c418d4f974bce2f771c7a1c3
MD5 8db56ed899798e8ec83a16f8b0deb10d
BLAKE2b-256 4312f49fea886dd90c231c8e7660380daaa8fe3d74cf3982a62eb993a01bf19f

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page