Initial commit: manifoldbt public repo

Python DSL, examples, docs, benchmarks, and tests.
Rust engine distributed as pre-compiled wheel via PyPI.
This commit is contained in:
Jimmy7892
2026-03-17 16:15:40 +01:00
commit 67ab17280b
51 changed files with 10227 additions and 0 deletions
+54
View File
@@ -0,0 +1,54 @@
"""Tests for Strategy serialization."""
import json
from manifoldbt.expr import col, lit, param, when
from manifoldbt.strategy import Strategy
def test_strategy_serializes_to_valid_json():
size = param("size", default=1.0, range=(0.5, 2.0))
signal = when(col("close") > col("close").lag(1), lit(1.0), lit(0.0))
strategy = Strategy(
name="test_strategy",
signals={"trend": signal},
position_sizing=col("trend") * size,
parameters={"size": size},
)
result = json.loads(strategy.to_json())
assert result["name"] == "test_strategy"
assert "trend" in result["signals"]
assert result["parameters"]["size"]["default"] == {"Float64": 1.0}
assert result["parameters"]["size"]["range"] == [
{"Float64": 0.5},
{"Float64": 2.0},
]
def test_strategy_no_params():
strategy = Strategy(
name="simple",
signals={"signal": lit(1.0)},
position_sizing=col("signal"),
)
result = json.loads(strategy.to_json())
assert result["name"] == "simple"
assert result["parameters"] == {}
assert result["constraints"] == []
assert result["signals"]["signal"] == {"Literal": {"Float64": 1.0}}
assert result["position_sizing"] == {"Column": "signal"}
def test_strategy_metadata():
strategy = Strategy(
name="documented",
signals={"s": lit(1.0)},
position_sizing=col("s"),
description="A documented strategy",
)
result = json.loads(strategy.to_json())
assert result["metadata"]["description"] == "A documented strategy"