#!/usr/bin/env bash set -euo pipefail echo "Running DeltaForge MVP tests..." python3 -m build >/dev/null 2>&1 || true if [ -f dist/*wheel* ]; then echo "Wheel present, installing..." python3 -m pip install dist/*.whl fi echo "Installing package in editable mode..." python3 -m pip install -e . >/dev/null 2>&1 || true echo "Running unit tests..." python3 -m pip install -q pytest || true pytest -q || python3 -m unittest discover -q echo "Running deterministic backtest to verify MVP flow..." python3 - <<'PY' from deltaforge.dsl import Asset, MarketSignal, StrategyDelta from deltaforge.core import Curator from deltaforge.backtester import Backtester from deltaforge.adapters.equity_feed import EquityFeedAdapter from deltaforge.adapters.options_feed import OptionsFeedAdapter from deltaforge.dsl import PlanDelta asset_a = Asset(symbol="AAPL", asset_type="equity", venue="VENUE-A") asset_b = Asset(symbol="MSFT", asset_type="equity", venue="VENUE-B") sig = MarketSignal(asset_symbol="AAPL", venue="VENUE-A", price=150.0) curator = Curator([asset_a, asset_b]) plan = curator.synthesize_plan([sig], [ StrategyDelta(asset=asset_a, target_delta=1.0, risk_budget=0.5, objective="delta-neutral"), StrategyDelta(asset=asset_b, target_delta=-1.0, risk_budget=0.5, objective="delta-neutral"), ]) bt = Backtester() res = bt.run(plan) print(res) PY