Skip to content

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

pip install strata-market torch

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.