ce7f3ce8ffbf9474b52b07b45fa5695104586bde
Add `asset_bucket_ban_set` and `asset_bucket_assignments` kwargs to AlphaAssetSelector.__init__ (both default None → BLUE unchanged). When active, assets whose KMeans bucket is in the ban set are skipped inside rank_assets() so the next-ranked asset takes the slot — capital is preserved rather than wasted by a 0× sizer multiplier. Plan ref: Task 9 — ban ≠ 0× is the critical caveat from the sprint plan. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Description
No description provided