Files
manifoldbt/python/tests/test_compile_roundtrip.py
T

45 lines
1.2 KiB
Python
Raw Normal View History

2026-03-17 16:13:34 +01:00
"""Round-trip test: Python DSL -> JSON -> Rust strategy compiler."""
import json
import manifoldbt as bt
def test_dsl_strategy_compiles_via_rust():
"""Strategy built with Python DSL successfully compiles through Rust."""
signal = bt.when(
bt.col("close") > bt.col("close").lag(1),
bt.lit(1.0),
bt.lit(0.0),
)
strategy = bt.Strategy(
name="compile_test",
signals={"signal": signal},
position_sizing=bt.col("signal"),
)
summary_json = bt.compile_strategy_json(strategy.to_json())
summary = json.loads(summary_json)
assert summary["name"] == "compile_test"
assert "signal" in summary["signal_names"]
assert "close" in summary["required_columns"]
def test_strategy_with_params_compiles():
"""Strategy with parameters compiles correctly."""
size = bt.param("size", default=1.0, range=(0.5, 2.0))
strategy = bt.Strategy(
name="param_test",
signals={"signal": bt.lit(1.0)},
position_sizing=bt.col("signal") * size,
parameters={"size": size},
)
summary_json = bt.compile_strategy_json(strategy.to_json())
summary = json.loads(summary_json)
assert summary["name"] == "param_test"
assert "size" in summary["parameters"]