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
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)$):
CachedFGNGeneratorfor real-time, online noise generation (Incremental Cholesky).
Quantitative Finance
- Rough Processes:
fractional_ou_process(Fractional Ornstein-Uhlenbeck) for volatility modeling. - Asset Pricing:
geometric_fbmfor simulating asset paths with long memory. - Constraints:
reflected_fbmandfractional_brownian_bridgefor boundary-constrained modeling and data imputation. - Stationarity:
fractional_diff(FracDiff) for making financial time series stationary while preserving memory.
Deep Learning & Diffusion
- Noisy Layers:
FBMNoisyLinearfor replacing standard weights with correlated noise. - Positional Embeddings:
FractionalPositionalEmbeddingfor Transformers on fractal data. - Diffusion Tools:
SpectralConsistencyLossto enforce $1/f^\beta$ statistics andHurstSchedulerfor annealing roughness during sampling. - Neural SDEs:
NeuralFSDEsolver 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. Usemethod='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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e1672183b4e718f2f97fcba89a5a3cb36388626518939e026c0cc9a8811c5a8f
|
|
| MD5 |
5baf44eaafd728003f91551bf71775db
|
|
| BLAKE2b-256 |
59c60f99a698112a31c73d0a8fbda4c5e00138227eab9f3ad6530928a3b28e2a
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
81e06671db07f471bbd2b5c02ef65a7628e66a90c418d4f974bce2f771c7a1c3
|
|
| MD5 |
8db56ed899798e8ec83a16f8b0deb10d
|
|
| BLAKE2b-256 |
4312f49fea886dd90c231c8e7660380daaa8fe3d74cf3982a62eb993a01bf19f
|