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.2.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.2-py3-none-any.whl (24.4 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: torchfbm-0.1.2.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.2.tar.gz
Algorithm Hash digest
SHA256 7aa30c522db9921cd62c9a56579e7c9951b954454c1f7839530145d9eb403313
MD5 6bd62fd2db62da801b93920652773b8d
BLAKE2b-256 025b654e079e18a0fbd110bb6225b73594e087c01ed4b1f5184e3ef1d7affe80

See more details on using hashes here.

File details

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

File metadata

  • Download URL: torchfbm-0.1.2-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.2-py3-none-any.whl
Algorithm Hash digest
SHA256 c01d63d1c9c74a4c2f92ddf3948d9c71fc79f13117829cf9481e2f5ec716434b
MD5 23c8f200477d9992e382a8ac3d220f7d
BLAKE2b-256 da9e2d1e8b4a969b789796b4585dfdf6de28b28cdaf62f4146af5007bebd583f

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