41 lines
1.4 KiB
Python
41 lines
1.4 KiB
Python
import json
|
|
|
|
from elac_plan.core import LocalProblem, SharedVariables, PlanDelta, DualVariables
|
|
from elac_plan.dsl import to_dsl_object, to_dsl_morphisms, to_dsl_plan, to_dsl_dual
|
|
|
|
|
|
def test_dsl_object_translation():
|
|
lp = LocalProblem(
|
|
id="lp1",
|
|
asset="AAPL",
|
|
venue="NYSE",
|
|
objective="minimize_spread",
|
|
constraints={"max_volume": 1000},
|
|
price_target=150.0,
|
|
tolerance=0.5,
|
|
)
|
|
dsl = to_dsl_object(lp)
|
|
assert dsl.id == lp.id
|
|
assert dsl.asset == lp.asset
|
|
assert dsl.price_target == lp.price_target
|
|
|
|
|
|
def test_dsl_morphisms_translation():
|
|
sv = SharedVariables(variables={"mid_price": 150.0}, version=1, contract_id="c1")
|
|
dsl = to_dsl_morphisms(sv)
|
|
assert dsl.contract_id == sv.contract_id
|
|
assert dsl.version == sv.version
|
|
assert dsl.variables["mid_price"] == 150.0
|
|
|
|
|
|
def test_dsl_plan_and_dual_translation():
|
|
delta = PlanDelta(delta={"action": "noop"}, timestamp="2024-01-01T00:00:00Z", author="tester", contract_id="c1", privacy_budget=0.0)
|
|
dsl_plan = to_dsl_plan(delta)
|
|
assert dsl_plan.contract_id == delta.contract_id
|
|
assert dsl_plan.delta["action"] == "noop"
|
|
|
|
dual = DualVariables(shadow_prices={"AAPL": 0.1}, version=1)
|
|
dsl_dual = to_dsl_dual(dual)
|
|
assert dsl_dual.contract_id == "" # default, not set in DualVariables dataclass; ok as placeholder
|
|
assert dsl_dual.shadow_prices["AAPL"] == 0.1
|