StrataFormer — Trading Foundation Model¶
StrataFormer is STRATA's trading-specific foundation model. Analogous to how Transformer powers general-purpose LLMs (GPT, Claude), StrataFormer powers market trading intelligence.
Installation¶
1. Quickstart — single asset¶
import torch
from strata import StrataFormer, StrataFormerConfig
cfg = StrataFormerConfig(max_seq_len=256, n_layers=4)
model = StrataFormer(cfg)
# Variable context — any length up to max_seq_len
x = torch.randn(1, 128, 5) # (batch, bars, OHLCV)
result = model.predict_action(x)
print(result["action"]) # "LONG" / "SHORT" / "HOLD"
print(result["confidence"]) # 0.71
print(result["regime"]) # "TRENDING"
print(result["context_len"]) # 128 ← how many bars were used
print(result["state"])
# {"bias": 0.82, "momentum": 0.45, "trap_risk": 0.18, "uncertainty": 0.31}
2. Self-supervised pretraining (no labels needed)¶
Train on raw OHLCV data — no manual labeling required. The model learns market structure by reconstructing randomly masked bars.
from strata import StrataFormer, StrataFormerConfig, StrataFormerPretrainer
# Large config for foundation model
cfg = StrataFormerConfig(
max_seq_len = 512,
n_layers = 6,
n_heads = 8,
embed_dim = 128,
n_assets = 100,
)
model = StrataFormer(cfg)
trainer = StrataFormerPretrainer(model, verbose=True)
# Pretrain on any raw OHLCV — thousands of bars, any asset
model = trainer.pretrain(candles_10000_bars, epochs=50, seq_len=256)
model.save("strata_pretrained.pt")
3. Fine-tune on a specific asset¶
from strata import StrataFormer, StrataFormerTrainer, StrataFormerDataset
# Load pretrained base
model = StrataFormer.load("strata_pretrained.pt")
# Build labeled dataset (STRATA teacher auto-generates labels)
dataset = StrataFormerDataset.from_candles(
candles = aapl_candles,
seq_len = 128,
asset = "AAPL",
asset_id = 0,
verbose = True,
)
# Fine-tune (lower LR than pretraining)
trainer = StrataFormerTrainer(model=model, asset="AAPL", lr=1e-4)
model = trainer.train(dataset, epochs=20)
model.save("aapl_former.pt")
4. Multi-asset training¶
Train one model on multiple tickers simultaneously — learns cross-asset patterns.
from strata import StrataFormerDataset, StrataFormerTrainer, StrataFormer
dataset = StrataFormerDataset.from_multi_asset(
asset_candles = {
"AAPL": aapl_candles,
"SPY": spy_candles,
"NVDA": nvda_candles,
"BTC": btc_candles,
},
seq_len = 128,
pretrain = False, # labeled fine-tuning mode
)
cfg = StrataFormerConfig(max_seq_len=128, n_assets=10)
model = StrataFormer(cfg)
trainer = StrataFormerTrainer(model=model, lr=3e-4)
model = trainer.train(dataset, epochs=30)
5. Inference with asset ID¶
# Asset IDs are assigned alphabetically in from_multi_asset:
# AAPL=0, BTC=1, NVDA=2, SPY=3
x = torch.tensor(normalised_aapl_window, dtype=torch.float32)
asset_id = torch.tensor([0]) # AAPL
result = model.predict_action(x, asset_ids=asset_id)
6. Full pipeline: pretrain → fine-tune → deploy¶
# Step 1: Pretrain on large corpus (unlabeled)
pretrain_candles = load_all_historical_data() # any asset, any period
trainer = StrataFormerPretrainer(StrataFormer(cfg))
model = trainer.pretrain(pretrain_candles, epochs=100, seq_len=256)
model.save("strata_base.pt")
# Step 2: Fine-tune on target asset
model = StrataFormer.load("strata_base.pt")
dataset = StrataFormerDataset.from_candles(target_candles, seq_len=128)
trainer = StrataFormerTrainer(model=model, lr=5e-5)
model = trainer.train(dataset, epochs=10)
# Step 3: Deploy
result = model.predict_action(live_window)
if result["approved"]: # use with StrataGUARD
execute_trade(result["action"])
Comparison: StrataFormer vs StrataNet¶
| StrataNet | StrataFormer | |
|---|---|---|
| Context window | Fixed 30 bars | Variable 30–512+ bars |
| Multi-asset | ❌ | ✅ |
| Architecture | Custom GRU cell | Causal Transformer |
| Pretraining | Needs labels | Self-supervised (MBM) |
| Parameters | ~5K | ~92K–1M+ (scalable) |
| Interpretable state | ✅ 4-dim | ✅ 4-dim (preserved) |
| API compatibility | predict_action() |
predict_action() identical |
When to use StrataFormer: large datasets, multi-asset portfolios, long-horizon context, or when you want to pretrain on unlabeled data first.
When to use StrataNet: small datasets, single asset, fast training, resource-constrained environments.