Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -30,4 +30,5 @@ ENV/
Thumbs.db

upgrade/
benchmarks/
benchmarks/
.local_arbitrage_sandboxes/
304 changes: 187 additions & 117 deletions backends/native_portfolio.py

Large diffs are not rendered by default.

154 changes: 154 additions & 0 deletions benchmarks/phase12_arbitrage_cert.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,154 @@
{
"status": "pass",
"sandbox_path": "/root/bobby/pool_alpha/quantbt/.local_arbitrage_sandboxes/binance_basis_arb",
"basis": {
"event_final_equity": 91362.95065353338,
"vectorized_final_equity": 91362.95065353338,
"order_count": 828,
"fill_count": 828,
"fee_total": 3429.5969336746557,
"funding_total": 17.731103806709445,
"audit": {
"status": "pass",
"passed": true,
"tolerance": 1e-09,
"engine": "event_v1_basis_arbitrage",
"backend": "native_event",
"arb_id": "PHASE12_BTC_PERP_QUARTERLY",
"arb_type": "basis",
"missing_reports": [],
"checks": {
"has_required_reports": true,
"package_pnl_residual_ok": true,
"leg_pnl_reconciles_to_package": true,
"fees_reconcile": true,
"target_symbols_match": true,
"final_target_flat": true,
"final_position_flat": true
},
"max_abs_package_pnl_residual": 2.6261659513693303e-11,
"max_abs_leg_vs_package_pnl_diff": 0.0,
"max_abs_fee_residual": 4.547473508864641e-13,
"final_gross_target_units": 0.0,
"final_gross_position_units": 8.881784197001252e-16,
"target_symbols": [
"perpetual",
"quarterly"
],
"result_symbols": [
"perpetual",
"quarterly"
],
"order_count": 828,
"fill_count": 828,
"rejection_count": 0
},
"parity": {
"status": "pass",
"passed": true,
"tolerance": 1e-09,
"event_engine": "event_v1_basis_arbitrage",
"vectorized_engine": "units_v2_basis_arbitrage",
"checks": {
"equity_matches": true,
"positions_match": true,
"target_units_match": true,
"package_residuals_ok": true
},
"max_abs_equity_diff": 1.4551915228366852e-11,
"max_abs_position_diff": 4.440892098500626e-16,
"max_abs_target_unit_diff": 0.0,
"max_abs_package_residual": 2.6261659513693303e-11
}
},
"stat_pair": {
"event_final_equity": 98806.77550546748,
"vectorized_final_equity": 98806.77550546748,
"accounting_parity_passed": true,
"parity": {
"status": "fail",
"passed": false,
"tolerance": 1e-09,
"event_engine": "event_v1_stat_arb_pair",
"vectorized_engine": "units_v2_stat_arb_pair",
"checks": {
"equity_matches": true,
"positions_match": true,
"target_units_match": true,
"package_residuals_ok": false
},
"max_abs_equity_diff": 0.0,
"max_abs_position_diff": 0.0,
"max_abs_target_unit_diff": 0.0,
"max_abs_package_residual": null
}
},
"index_basket": {
"status": "pass",
"passed": true,
"parity": {
"status": "pass",
"passed": true,
"tolerance": 1e-09,
"event_engine": "event_v1_index_basket",
"vectorized_engine": "units_v2_index_basket",
"checks": {
"equity_matches": true,
"positions_match": true,
"target_units_match": true,
"package_residuals_ok": true
},
"max_abs_equity_diff": 0.0,
"max_abs_position_diff": 0.0,
"max_abs_target_unit_diff": 0.0,
"max_abs_package_residual": 1.1126211063583469e-11
}
},
"schema_only": {
"status": "pass",
"passed": true,
"probes": {
"cross_exchange": {
"native_event": {
"rejected": true,
"error": "NotImplementedError",
"message": "CrossExchangeArbSpec requires a specialized Phase G+ engine"
},
"native_vectorized": {
"rejected": true,
"error": "NotImplementedError",
"message": "CrossExchangeArbSpec requires a specialized Phase G+ engine"
}
},
"triangular": {
"native_event": {
"rejected": true,
"error": "NotImplementedError",
"message": "TriangularArbSpec requires a specialized Phase G+ engine"
},
"native_vectorized": {
"rejected": true,
"error": "NotImplementedError",
"message": "TriangularArbSpec requires a specialized Phase G+ engine"
}
},
"options_vol": {
"native_event": {
"rejected": true,
"error": "NotImplementedError",
"message": "OptionsVolArbSpec requires a specialized Phase G+ engine"
},
"native_vectorized": {
"rejected": true,
"error": "NotImplementedError",
"message": "OptionsVolArbSpec requires a specialized Phase G+ engine"
}
}
}
},
"nautilus": {
"status": "pass",
"orders": 828,
"fills": 828
}
}
23 changes: 23 additions & 0 deletions benchmarks/phase12_arbitrage_cert.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
# Phase 12A Arbitrage Production Certification

Status: **pass**
Sandbox path: `/root/bobby/pool_alpha/quantbt/.local_arbitrage_sandboxes/binance_basis_arb`

## Basis Perp-Quarterly

- Event final equity: `91362.950654`
- Vectorized final equity: `91362.950654`
- Max equity diff: `1.4551915228366852e-11`
- Audit status: `pass`
- Orders: `828`
- Fills: `828`
- Fees: `3429.596934`
- Funding: `17.731104`

## Other Certification Checks

- Stat pair accounting parity: `True`
- Stat pair package-residual report: `False`
- Index basket package smoke: `pass`
- Schema-only guardrails: `pass`
- Nautilus package parity: `pass`
52 changes: 52 additions & 0 deletions benchmarks/phase12_benchmark_nautilus_cert.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
{
"status": "pass",
"benchmark_followup": {
"status": "pass",
"rows": 2000,
"symbols": 6,
"bar_symbols": 12000,
"repeats": 3,
"stages": {
"full_facade_seconds": 0.08143977168947458,
"prepared_reuse_facade_seconds": 0.07379568073277672,
"array_preparation_seconds": 0.010897138544047872,
"pure_numba_kernel_seconds": 0.00021187355741858482,
"report_construction_estimate_seconds": 0.07033075958800812,
"prepared_reuse_speedup": 1.1035845307041487,
"array_preparation_share_pct": 13.380610379898986,
"pure_kernel_share_pct": 0.26015981261151755,
"report_construction_share_pct": 86.35922980748948
},
"notes": "Prepared-array cache targets WFO/service loops. Pure Numba kernel remains separated from pandas normalization and report construction."
},
"all_or_none_basket": {
"status": "pass",
"input_orders": 2,
"accepted_orders": 0,
"rejected_orders": 2,
"package_status": [
"rejected"
],
"depth_model": "ohlcv_volume_cap"
},
"nautilus_portfolio": {
"status": "pass",
"validation_status": "pass",
"checks": {
"input_mode_is_portfolio_matrix": true,
"target_units_match": true,
"order_count_matches_target_transitions": true,
"fills_do_not_exceed_orders": true,
"positions_within_tolerance": true,
"final_equity_within_tolerance": true
},
"equity_tolerance": 1.0,
"position_tolerance": 0.005,
"expected_order_count": 14,
"nautilus_orders": 14,
"nautilus_fills": 14,
"final_equity_diff": 0.00784839857078623,
"max_abs_position_diff": 0.004
},
"cython_cpp_recommendation": "Cython/C++ is not justified yet; optimize cached array preparation and report construction first."
}
37 changes: 37 additions & 0 deletions benchmarks/phase12_benchmark_nautilus_cert.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
# Phase 12B Benchmark And Nautilus Portfolio Certification

Status: **pass**

## Benchmark Follow-Up

- Bars: `2000`
- Symbols: `6`
- Repeats: `3`
- Full facade seconds: `0.081440`
- Prepared reuse facade seconds: `0.073796`
- Prepared reuse speedup: `1.104x`
- Array preparation seconds: `0.010897`
- Pure Numba kernel seconds: `0.000212`
- Report construction residual seconds: `0.070331`
- Pure kernel share: `0.26%`

## Nautilus Portfolio

- Status: `pass`
- Validation status: `pass`
- Equity tolerance profile: `1.0`
- Position tolerance profile: `0.005`
- Final equity diff: `0.00784839857078623`
- Max position diff: `0.004`

## All-Or-None Basket

- Status: `pass`
- Input orders: `2`
- Accepted orders: `0`
- Rejected orders: `2`
- Depth model: `ohlcv_volume_cap`

## Cython/C++ Decision

Cython/C++ is not justified yet; optimize cached array preparation and report construction first.
Loading
Loading