Commit f4c7ac2
refactor(notifications): migrate to shared renderer_base (#308)
* fix(execution): retain existing QQQM positions in small account whole-share compatibility
QQQM (TQQQ's unlevered sleeve in tqqq_growth_income) was not in the
whole-share retention whitelist. When the strategy's target for QQQM
was below 1 share price, the small account compatibility layer zeroed
the target, creating an artificial sell signal. After selling, the
system couldn't buy back because the target (below 1 share) couldn't
be fulfilled, leaving the account in cash.
Add QQQM to:
- SMALL_ACCOUNT_EXISTING_WHOLE_SHARE_RETENTION_SYMBOLS (unconditional)
- SMALL_ACCOUNT_EXISTING_WHOLE_SHARE_RETENTION_MIN_TARGET_SHARE_RATIO_BY_SYMBOL (0.85)
- SMALL_ACCOUNT_WHOLE_SHARE_BOOTSTRAP_MIN_TARGET_SHARE_RATIO_BY_SYMBOL (0.85)
Co-Authored-By: Claude <noreply@anthropic.com>
* fix(execution): universal whole-share retention rule for small accounts
Replace the per-symbol hardcoded whitelist with a universal rule:
if the account already holds a symbol (>0 shares) AND the strategy
wants to keep >= 85% of 1 share's value, retain the position.
This prevents the sell-then-fail-to-rebuy cycle for ALL symbols,
not just those in the whitelist. Genuine reductions (target << 85%
of 1 share) are NOT blocked — the sell proceeds normally.
The 0.85 default threshold means:
- QQQM $262.74 target vs $292.42 price → 90% → retain
- SOXX $155 target vs $537 price → 29% → sell (genuine reduction)
Legacy whitelist (TQQQ, SOXL) and per-symbol ratio overrides
(e.g. SOXX:0.90) are kept as safety nets.
Co-Authored-By: Claude <noreply@anthropic.com>
* chore: bump QPK pin to 8378e93 for notification renderer_base
Co-Authored-By: Claude <noreply@anthropic.com>
* ci: trigger re-run after QPK_PIN update
Co-Authored-By: Claude <noreply@anthropic.com>
---------
Co-authored-by: Claude <noreply@anthropic.com>1 parent 7466ccd commit f4c7ac2
4 files changed
Lines changed: 66 additions & 298 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
265 | 265 | | |
266 | 266 | | |
267 | 267 | | |
| 268 | + | |
268 | 269 | | |
269 | 270 | | |
270 | 271 | | |
271 | 272 | | |
272 | 273 | | |
273 | 274 | | |
274 | 275 | | |
| 276 | + | |
275 | 277 | | |
276 | 278 | | |
277 | 279 | | |
| |||
392 | 394 | | |
393 | 395 | | |
394 | 396 | | |
395 | | - | |
| 397 | + | |
| 398 | + | |
| 399 | + | |
| 400 | + | |
| 401 | + | |
| 402 | + | |
| 403 | + | |
| 404 | + | |
| 405 | + | |
| 406 | + | |
| 407 | + | |
396 | 408 | | |
| 409 | + | |
| 410 | + | |
| 411 | + | |
| 412 | + | |
| 413 | + | |
| 414 | + | |
| 415 | + | |
| 416 | + | |
| 417 | + | |
| 418 | + | |
397 | 419 | | |
398 | 420 | | |
399 | 421 | | |
| 422 | + | |
400 | 423 | | |
401 | 424 | | |
402 | 425 | | |
403 | 426 | | |
404 | 427 | | |
405 | | - | |
406 | 428 | | |
407 | 429 | | |
408 | | - | |
| 430 | + | |
409 | 431 | | |
410 | 432 | | |
411 | 433 | | |
| |||
721 | 743 | | |
722 | 744 | | |
723 | 745 | | |
724 | | - | |
| 746 | + | |
725 | 747 | | |
726 | 748 | | |
727 | 749 | | |
| |||
0 commit comments