mirror of
https://github.com/manifoldbt/manifoldbt.git
synced 2026-08-24 22:48:05 +00:00
bench: add raptorbt as a third engine, and a 10M-bar point (#6)
The harness compared two engines everywhere; it now compares N against a reference. manifoldbt is the reference: every parity check and every ratio is a challenger against it, never two challengers against each other. raptorbt 0.9.0 joins on three of the four workloads. Its sma_cross comes back bit-identical to the reference's final equity, and its rsi matches to the last bit; its ema seeds on a different warmup and it has no fixed-quantity sizing, so the fee workload records it as unsupported with the reason rather than leaving a blank cell. On the bracket it diverges in its own documented way: it never re-arms while the entry level holds, so it books exactly the reference's round-trips minus the ones that re-enter on the exit bar. Python moves to 3.12, which raptorbt pins rather than we do: it is built against pyo3 0.20.3, whose maximum supported CPython is 3.12. Timings from runs before this change are therefore not directly comparable. The bar matrix gains 10M and the repetition default drops from 7 to 2. Measured, those two almost cancel: the job stays around 16 minutes. macOS keeps its old ceiling, since 10M bars adds 1.55 GB on vectorbt's side alone and that runner has 7 GB.
This commit is contained in:
@@ -152,11 +152,12 @@ def diagnose(key: str, df, workdir: str) -> Dict[str, Any]:
|
||||
"""Untimed measurement of *how much* a documented divergence actually bites.
|
||||
|
||||
For the bracket workload this counts the round-trips whose entry lands on the
|
||||
same bar as the previous exit, which is precisely the population where
|
||||
vectorbt takes the next bar instead. Reporting the count turns "the engines
|
||||
differ" into a number a reader can weigh.
|
||||
same bar as the previous exit, which is precisely the population the other
|
||||
engines handle differently: vectorbt takes the next bar, raptorbt does not
|
||||
re-enter at all. Reporting the count turns "the engines differ" into a number
|
||||
a reader can weigh, and it is the same population for both of them.
|
||||
"""
|
||||
if WORKLOADS[key].parity != "documented":
|
||||
if not any(note.status == "documented" for note in WORKLOADS[key].notes.values()):
|
||||
return {}
|
||||
|
||||
p = WORKLOADS[key].params
|
||||
|
||||
Reference in New Issue
Block a user