- Removed v10 TradingView indicator (moneyline_v10_momentum_dots.pinescript) - Removed v10 penalty system from signal-quality.ts (-30/-25 point penalties) - Removed backtest result files (sweep_*.csv) - Updated copilot-instructions.md to remove v10 references - Simplified direction-specific quality thresholds (LONG 90+, SHORT 80+) Rationale: - 1,944 parameter combinations tested in backtest - All top results IDENTICAL (568 trades, $498 P&L, 61.09% WR) - Momentum parameters had ZERO impact on trade selection - Profit factor 1.027 too low (barely profitable after fees) - Max drawdown -$1,270 vs +$498 profit = terrible risk-reward - v10 penalties were blocking good trades (bug: applied to wrong positions) Keeping v9 as production system - simpler, proven, effective.
40 lines
1017 B
Python
40 lines
1017 B
Python
from typing import (
|
|
ChainMap,
|
|
MutableMapping,
|
|
TypeVar,
|
|
cast,
|
|
)
|
|
|
|
_KT = TypeVar("_KT")
|
|
_VT = TypeVar("_VT")
|
|
|
|
|
|
class DeepChainMap(ChainMap[_KT, _VT]):
|
|
"""
|
|
Variant of ChainMap that allows direct updates to inner scopes.
|
|
|
|
Only works when all passed mapping are mutable.
|
|
"""
|
|
|
|
def __setitem__(self, key: _KT, value: _VT) -> None:
|
|
for mapping in self.maps:
|
|
mutable_mapping = cast(MutableMapping[_KT, _VT], mapping)
|
|
if key in mutable_mapping:
|
|
mutable_mapping[key] = value
|
|
return
|
|
cast(MutableMapping[_KT, _VT], self.maps[0])[key] = value
|
|
|
|
def __delitem__(self, key: _KT) -> None:
|
|
"""
|
|
Raises
|
|
------
|
|
KeyError
|
|
If `key` doesn't exist.
|
|
"""
|
|
for mapping in self.maps:
|
|
mutable_mapping = cast(MutableMapping[_KT, _VT], mapping)
|
|
if key in mapping:
|
|
del mutable_mapping[key]
|
|
return
|
|
raise KeyError(key)
|