docs: clarify control parity accounting
This commit is contained in:
@@ -41,6 +41,14 @@ The daily replay uses zero outcome horizon: setup and rank observations continue
|
||||
through the snapshot's last session because portfolio simulation, unlike outcome
|
||||
grading, does not require 30 future bars.
|
||||
|
||||
Control-parity note: a direct main-versus-branch comparison found identical
|
||||
total return, CAGR, maximum drawdown, and Sharpe. The branch intentionally
|
||||
changes only the first calendar year's `yearly_returns` convention: it starts
|
||||
from initial capital rather than equity after the first session, so day-one
|
||||
entry costs are now charged to year one. Older reports can therefore show a
|
||||
different first-year contextual return without a strategy-performance
|
||||
regression. New trade-detail and measurement-start fields are additive.
|
||||
|
||||
### Weekly-selection mechanics
|
||||
|
||||
- Ordinary exits run before entries/rebalancing.
|
||||
|
||||
@@ -69,7 +69,7 @@ def _business_days(start: date, end: date) -> list[date]:
|
||||
return days
|
||||
|
||||
|
||||
def test_new_simulator_options_preserve_legacy_control_path():
|
||||
def test_new_simulator_option_defaults_match_explicit_defaults():
|
||||
start = date(2025, 1, 6)
|
||||
ords = [start.toordinal() + offset for offset in range(8)]
|
||||
prices = {'AAA': _prices(ords)}
|
||||
|
||||
Reference in New Issue
Block a user