Production-grade signal transformations and forward targets. Live-streaming or batch , same object, same result.
pip install oryon
Four properties that matter when research becomes a live strategy.
Call update(bar) in production. Call run_research(data) in backtesting. Same object, identical results. Write once, run anywhere.
Signal transforms with full state management and configurable warm-up. Forward-looking targets with explicit horizon. Both in one library.
All computation in Rust via PyO3. No GIL, no overhead. Under 1µs per update().
Every transformation ships with contract tests covering warm-up invariants, NaN propagation, state independence and reset behavior.
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
Install Oryon and build your first pipeline in minutes.
Contributions welcome. Check the contributing guide.