Inspiration

A strategy can look successful simply because its code uses tomorrow's price. Strategy Lab detects that planted flaw before reporting performance.

What it does

Runs a seeded strategy on synthetic prices in a disposable Daytona sandbox. Six checks cover execution, future-data leakage, and metric consistency. A repairable failure triggers one correction and reevaluation; other failures stop the run. Results appear only after all required checks pass.

How I built it

Python and Streamlit provide the interface and orchestration. Daytona executes the candidate and backtest harness. A truncation test compares signals on full and shortened datasets: earlier decisions must remain unchanged when later prices disappear. Positions apply to the next bar, including transaction costs. Arize Phoenix records evaluation events and repair decisions. SurrealDB Agent Memory stores and retrieves run history.

Challenges

SDK contracts, bounded retries, cleanup, and honest failure reporting. The current demonstration uses a predefined causal correction. Bedrock and Anthropic repair adapters are implemented but unconfigured. Anchor research is implemented, but its last request failed due to insufficient credits. A containment probe found outbound TCP connectivity despite requesting network blocking; network isolation is not claimed as verified.

Accomplishments

Working rejection, correction, and gated reporting; verified Daytona execution, Phoenix trace receipt, and SurrealDB memory read/write.

What I learned

Successful execution alone does not make a backtest trustworthy. Evaluations should determine which results are released.

What's next

Enable model-generated corrections, broaden leakage checks, add held-out validation, resolve network-policy behavior, and strengthen evaluation integrity.

Demo

Live demonstration on the presenter's laptop. Synthetic data, no live trading, and no profitability claim. The linked Figma deck explains the workflow.

Built With

Share this project:

Updates

Submission history