Repository navigation
Avoid zero-total normalization in greedy discrete allocation - #3
Merged
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
When every first-round share count is zero,
greedy_portfoliodivides its zero current-value vector by zero before choosing the next affordable asset. This emits an invalid-value warning and raises FloatingPointError for callers that enable NumPy floating-point errors, despite valid prices and budget.Keep the current allocation weights at zero until some capital is invested; normalize only a positive invested total. Add regressions for a small budget that can buy one lower-priced asset and a budget that cannot buy any asset, with invalid/divide errors enabled. Both cases fail before the fix.
Validation: all 21 discrete-allocation tests pass. Full local suite from the repository root: 306 passed, 22 skipped (41 existing solver/statistics warnings). CI code quality and focused Python 3.11/3.12 allocation jobs pass; the broader platform/Python/notebook matrix is running.