Sagan High Frequency Trading Engine with Hawkes & Bates Jump-Diffusion
Project description
Sagan Trade
High-fidelity symbolic mathematical engine and quantitative architecture for institutional alpha generation.
Sagan Trade replaces black-box neural networks with transparent, human-readable mathematical equations discovered via FunctionGemma. It combines the precision of Symbolic Regression with the robustness of Asymmetric Convexity risk management and cutting-edge limit order book simulations.
As of v0.8.4+, the library natively incorporates mathematical discoveries autonomously generated by the Autonomous Intelligence Network (AIN), including Hawkes Trade Arrivals and Bates Jump-Diffusion dynamics.
🏛️ Institutional Benchmarking
Sagan Trade has been rigorously tested across 5 years of historical market regimes, accounting for institutional trading fees and liquidity constraints.
Long-Term Resilience (5-Year Rolling Audit)
Benchmark: 20-Ticker Diversified Portfolio (Tech, Finance, Energy, Consumer).
| Metric | Gross of Fees | Net of Fees (5bps) | S&P 500 (B&H) |
|---|---|---|---|
| Annualized Return | 33.27% | 12.98% | 14.50% |
| Sharpe Ratio | 2.11 | 1.06 | 0.85 |
| Max Drawdown | -6.91% | -7.30% | -23.90% |
| Total Cumulative | 426.11% | 102.46% | 96.80% |
[!IMPORTANT] Statistical Significance: The symbolic engine achieves a p-value of 0.0182, indicating that its outperformance against legacy TFT-PINN and LSTM models is statistically significant at the 98% confidence level.
🚀 Installation
pip install sagan-trade
For the latest source code, you can clone the repository from GitHub:
git clone https://github.com/That-Tech-Geek/sagan-trade.git
cd sagan-trade
pip install -e .
📚 Comprehensive Documentation
1. Hawkes Limit Order Book (LOB) Simulator (simulator.py)
Accurate quantitative modeling requires realistic microstructure data. The HawkesLOBSimulator generates tick-by-tick order book updates using a continuous-time Bates Jump-Diffusion process paired with self-exciting Hawkes trade intensity.
- NIFTY50 & Multi-Asset Support: Comes pre-configured with exact market-maker profiles for major indices like NIFTY50, handling specific tick sizes, base depths, and tick volatility.
- Microstructural Realism: Simulates realistic
bid,ask,bid_size,ask_size, and dynamic structural features such asOrder Flow Imbalance (OFI)anddepth_imbalance.
from simulator import HawkesLOBSimulator
sim = HawkesLOBSimulator()
# Simulate 5000 high-frequency ticks for NIFTY50
df = sim.simulate_ticks("NIFTY50", num_ticks=5000)
2. Sagan Mixture-of-Experts (MoE) Architecture (moe_model.py)
To predict ultra-short latency order book dynamics, Sagan Trade uses a Temporal Convolutional Network (TCN) embedded inside a PyTorch Mixture of Experts network.
- Zero Future Leakage: Uses causal dilated convolutions to ensure predictions strictly use historical data.
- State-Dependent Routing: An internal gating network routes market regimes (e.g., flash crashes vs. quiet sessions) to 3 different mathematical "Expert" modules.
import torch
from moe_model import SaganMoEModel
device = 'cuda' if torch.cuda.is_available() else 'cpu'
sagan_model = SaganMoEModel(num_features=5, state_dim=5, num_experts=3).to(device)
3. High-Frequency Backtester & Inventory Control (backtester.py)
Legacy backtesters assume you get filled at the mid-price. The Sagan HighFrequencyBacktester enforces rigid queue priority, latency delays, and exact exchange fee structures (STT, Exchange Transaction Charges, SEBI fees).
- Passive vs. Aggressive: Determines if a trade should cross the spread aggressively (paying taker fees) or wait passively in the queue (earning maker rebates).
- Statutory Friction: Automatically calculates round-trip trading frictions to prevent "suicidal" arbitrage algorithms that lose money on taxes.
from backtester import HighFrequencyBacktester
bt = HighFrequencyBacktester(latency_ticks=2)
results = bt.run_backtest(df_test, sagan_preds, "NIFTY50")
print(f"Net Realized Fees: {results['metrics']['fees_paid']}")
4. Symbolic Regressor & AIN Volatility Filters
Instead of weight matrices, Sagan discovers market invariants in the form of mathematical expressions using FunctionGemma.
- Explainability: Every trade is backed by a human-readable formula, e.g.,
(Close * 0.5) + log(Volume). - Hawkes-Bates VRP Proxy: Autonomously discovered through the AIN, this macroeconomic sidecar shifts portfolios to cash during contagion regimes.
🛠️ Complete Workflow Example
This comprehensive quickstart demonstrates the full lifecycle: Symbolic Discovery, Volatility Filtering, Risk Management, and Backtest Execution.
import pandas as pd
import torch
from sagan_trade import (
SymbolicRegressor,
AsymmetricRiskEngine,
VolatilityRegimeFilter,
BacktestEngine
)
# 1. Fetch Market Data
data = pd.DataFrame({
'Close': [...],
'Volume': [...],
'RSI': [...]
})
# 2. Symbolic Discovery
regressor = SymbolicRegressor(basis_functions=['poly', 'fourier'])
model_id = regressor.train(target="AAPL", signals=["Close", "RSI", "Volume"])
predicted_signal, formula = regressor.predict()
print(f"Discovered Alpha: {formula}")
# 3. Macro Regime Filtering
vol_filter = VolatilityRegimeFilter(vol_window=20, ma_window=120)
regime_signals = vol_filter.generate_signals(data['Close'])
print(f"Current Market Regime (1=Risk-On, 0=Cash): {regime_signals.iloc[-1]}")
# 4. Initialize Asymmetric Convexity Risk Engine
risk_engine = AsymmetricRiskEngine(target_vol=0.15, max_drawdown_limit=0.075)
# 5. Execute End-to-End Backtest
backtester = BacktestEngine(
initial_capital=1000000,
maker_fee=0.0001,
taker_fee=-0.0003
)
results = backtester.run(
prices=data['Close'],
alpha_signals=predicted_signal,
regime_filter=regime_signals,
risk_model=risk_engine
)
print(f"Backtest Sharpe: {results.sharpe_ratio}")
print(f"Backtest Max Drawdown: {results.max_drawdown}")
Contribution & Links
- Repository: https://github.com/That-Tech-Geek/sagan-trade
- PyPI: https://pypi.org/project/sagan-trade/
- Author: Sambit Mishra
License
MIT © 2024 Sagan Labs / Sambit Mishra
Project details
Release history Release notifications | RSS feed
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 sagan_trade-0.8.8.tar.gz.
File metadata
- Download URL: sagan_trade-0.8.8.tar.gz
- Upload date:
- Size: 5.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
344ea2ce837f533dc137a3c5ba1582bb0752d489d1ea3392f8eee22f01db5bb1
|
|
| MD5 |
0973761ad36f58b8c809839961b375a8
|
|
| BLAKE2b-256 |
f84ebf0e97be104856f48f7f2342995293ae757ee8c4692bdab5d337727e5cfa
|
File details
Details for the file sagan_trade-0.8.8-py3-none-any.whl.
File metadata
- Download URL: sagan_trade-0.8.8-py3-none-any.whl
- Upload date:
- Size: 4.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
55d6d4020c440038159fd4946ee476438155d0eb5f5e2ed7ed0451dbc79373b9
|
|
| MD5 |
0f19c1581293f732a4180491764ad05f
|
|
| BLAKE2b-256 |
dafe10734aaf1a5f2527e3cefd3b17ca31b9742f992a865f46a78ea8c5886655
|