# btc_etf_proxy_ibit_biti_paper_v1 Review Notes

Date: 2026-06-03

## Scope

Strategy owner package for:

```text
strategies/btc_etf_proxy_ibit_biti/paper_trader.py
```

This is an Alpaca paper-only ETF proxy for a BTC/ETH residual mean-reversion
signal. It maps:

- signal `+1` -> long `IBIT`
- signal `-1` -> long `BITI`
- signal `0` -> cash

It does not short instruments. It trades in the shared `alpaca_paper_main`
paper account with a current max notional of `$25`.

## Review Entrypoints

Inspect these first:

1. `../paper_trader.py`
2. `export_review_package.py`
3. `positions.csv`
4. `asset_returns.csv`
5. `gross_returns.csv`
6. `metadata.json`
7. `eval-report/summary.md`
8. `eval-report/eval_dashboard.html`
9. `current_paper_status.json`

## Backtest / Eval Summary

Exact evaluated path:

- BTC/ETH strict daily signal.
- Rolling beta/residual/z-score statistics are shifted.
- Conservative execution lag: prior closed crypto daily signal, then next US
  ETF session execution.
- ETF instruments: `IBIT`, `BITI`.
- Transaction cost assumption in net metrics: `5 bps` per position turnover.

Key metrics from the review export:

| Metric | Gross | Net 5bp |
|---|---:|---:|
| Sharpe | 1.96 | 1.90 |
| Total return | 340.70% | 318.25% |
| Max drawdown | -22.49% | -22.64% |
| Trades/year | 50.8 | 50.8 |
| Avg days/trade | 7.19 | 7.19 |

`strategy-eval` result:

- Executive decision: `FAIL / do not promote yet`.
- Reason: P0 lookahead/bias gate reports `lookahead pass=False`.
- OOS proxy: computed temporal split only; not a true hidden holdout.
- Portfolio interaction: `needs_input`; no existing strategy returns supplied.
- Paper trading: `needs_input` in eval; broker fill snapshot is included
  separately in `current_paper_status.json`.

## Current Paper Fill Status

Read-only broker check at package generation:

- Shared account: `alpaca_paper_main`.
- Current strategy-owned target state: `IBIT`.
- Current broker position: long `IBIT`.
- Latest strategy fill: `2026-06-02T14:45:04Z`, buy `$25` `IBIT`.
- Current max notional: `$25`.
- Open order check should be repeated by reviewers before any manual paper run.

## Known Risks / Review Checklist

- Lookahead/timestamp: automated eval flags P0 bias failure. Review signal day
  versus fill day alignment carefully before any promotion.
- Duplicate-submit guard: relies on `managed_symbol`, `managed_qty`, broker
  position checks on exits, and no same-target rebuy.
- Schedule guard: cron is `45 14 * * 1-5 UTC`; runner also checks Alpaca market
  clock and skips if closed.
- Order IDs: strategy order prefix is `av_btcetfproxibitbiti_*`; reviewers
  should use it for attribution in the shared paper account.
- Sizing/cap: current cap is `$25` notional per buy; runtime config records
  `max_notional=25.0`.
- Broker/fill assumptions: backtest is daily close-to-close ETF approximation;
  paper uses Alpaca market orders.
- Shared-account isolation: account contains other strategies; this strategy
  must only manage its own `IBIT/BITI` state and prefixed orders.
- Inverse ETF risk: `BITI` is an inverse ETF and may have path/decay behavior
  not fully captured by daily close tests.
- Live promotion: blocked until bias review, hidden/OOS validation, fill
  assumptions, portfolio correlation, and explicit live approval are complete.

## Commands

Regenerate review export:

```bash
python3 strategies/btc_etf_proxy_ibit_biti/review_20260603/export_review_package.py
```

Run eval:

```bash
python3 /workspace/steve/paw_auto_research/tools/eval_strategy.py \
  --positions strategies/btc_etf_proxy_ibit_biti/review_20260603/positions.csv \
  --asset-returns strategies/btc_etf_proxy_ibit_biti/review_20260603/asset_returns.csv \
  --gross-returns strategies/btc_etf_proxy_ibit_biti/review_20260603/gross_returns.csv \
  --metadata-json strategies/btc_etf_proxy_ibit_biti/review_20260603/metadata.json \
  --oos-start-date 2025-05-12 \
  --strategy-label btc_etf_proxy_ibit_biti_paper_v1 \
  --out-dir strategies/btc_etf_proxy_ibit_biti/review_20260603/eval-report
```
