Skip to content
v0.2.7 · MIT · Rust + Python

Your Research Code
Runs in Production.

Production-grade signal transformations and forward targets. Live-streaming or batch , same object, same result.

$ pip install oryon
10 signal transforms 3 forward targets Python 3.9+

Built for production quant systems

Four properties that matter when research becomes a live strategy.

No Code Duplication

Call update(bar) in production. Call run_research(data) in backtesting. Same object, identical results. Write once, run anywhere.

Transformations and ML Targets

Signal transforms with full state management and configurable warm-up. Forward-looking targets with explicit horizon. Both in one library.

Rust Core, Python Interface

All computation in Rust via PyO3. No GIL, no overhead. Under 1µs per update().

Contract-Tested

Every transformation ships with contract tests covering warm-up invariants, NaN propagation, state independence and reset behavior.

See it in production

One pipeline object. Live trading and backtesting.

Build your pipeline once. Call update() on every incoming bar in production. Call run_research() on the full dataset in backtesting. The output is identical.

from oryon.features import Ema, LogReturn
from oryon import FeaturePipeline

fp = FeaturePipeline(
    features=[
        Ema(["close"], window=20, outputs=["ema_20"]),
        LogReturn(["close"], window=1, outputs=["log_ret"]),
    ],
    input_columns=["close"],
)

# Live trading, one bar at a time
for bar in feed:
    signals = fp.update([bar.close])
    # → [4823.1, 0.0021]  in under 1µs
<1µs per update
1,000 features updated in under 1ms
1M bars processed per second

Ready to get started?

Install Oryon and build your first pipeline in minutes.

Contributions welcome. Check the contributing guide.