equicompiler-algebraic-port.../README.md

108 lines
3.0 KiB
Markdown

# EquiCompiler
EquiCompiler translates a compact portfolio DSL into a canonical EquiIR graph with deterministic attestations, registry-backed contracts, delta-sync metadata, and a reference Python backtest path.
## What It Does
- Parses portfolio strategy declarations into a normalized IR.
- Captures assets, objective clauses, constraints, execution policy, risk budgets, and regulatory metadata.
- Builds a deterministic execution plan with backend targets for Python, C++, and WebAssembly.
- Emits digest-based attestations and a Graph-of-Contracts skeleton for auditability.
- Provides a reference Python backtester for offline evaluation and replay.
- Computes deterministic delta-sync summaries between IR revisions.
## DSL
Example:
```text
version: 0.3
assets: AAPL@0.6, MSFT@0.4
objectives: maximize_return; minimize_risk
constraints: max_drawdown=0.15, var=0.95, cvar=0.9
risk_budget: max_var=0.1, max_exposure=0.8
execution_policy: offline, delta_sync, rebalance=1d
regulatory: venue=us, suitability=true
```
Supported sections:
- `version`
- `assets`
- `objectives`
- `constraints`
- `execution_policy`
- `risk_budget`
- `market_microstructure`
- `regulatory`
## IR Surface
`parse_dsl_to_ir()` returns a dictionary with:
- canonical assets and optional weights
- objectives and constraints
- execution policy and risk budget
- compiler metadata and lineage digest
- execution plan with registry contracts
- attestations and GoC skeleton
- delta-sync metadata
## Reference Backtest
The Python backend accepts either provided price series or a deterministic synthesized scenario and returns:
- a portfolio curve
- total return
- volatility
- max drawdown
- VaR / CVaR estimates
- objective satisfaction
## CLI
```bash
python -m equicompiler_algebraic_portfolio_dsl_to_.cli path/to/strategy.dsl
python -m equicompiler_algebraic_portfolio_dsl_to_.cli path/to/strategy.dsl --backtest
```
## Programmatic Use
```python
from equicompiler_algebraic_portfolio_dsl_to_.core import parse_dsl_to_ir
from equicompiler_algebraic_portfolio_dsl_to_.backends.python_backtester import run_backtest
ir = parse_dsl_to_ir(dsl_text)
result = run_backtest(ir)
```
## Packaging
- Python package name: `equicompiler_algebraic_portfolio_dsl_to`
- Source package: `equicompiler_algebraic_portfolio_dsl_to_`
- Build metadata: `pyproject.toml`
- README used as the long-form package description
## Tests
Run the local verification flow with:
```bash
bash test.sh
```
That script installs the package in editable mode, runs the unit tests, and builds a source/wheel distribution.
## Architecture Notes
- `core.py`: DSL parsing, IR normalization, lineage, attestations, and plan synthesis
- `delta_sync.py`: deterministic IR diffing
- `registry.py`: in-process GoC contract registry
- `goc_registry.py`: GoC skeleton builder
- `backends/python_backtester.py`: deterministic reference backtester
- `adapters/`: starter adapter interfaces for feeds and brokers
## Status
This repository now has a coherent compiler pipeline, but it is still a reference implementation rather than a full market execution platform.