Account-aware multi-position engine, plain-language Report, anonymized council, market discovery#1
Open
baderale wants to merge 1 commit into
Open
Conversation
…d council, market discovery Make the tool work for any account balance, not just the personal $1,000 setup, and add a beginner-friendly report plus reverse-search discovery. - Multi-position: core/portfolio.py allocates up to config.max_positions enterable names within deployable cash (identical to single-position at $1k); sidebar control + CLI --max-positions; report_service builds a PortfolioReport. - Plain-language Report tab: core/narrative.py explains each trade and the council's reasoning in plain English with jargon defined inline; new Report tab with per-trade tracker logging and a verdict legend (also surfaced on Scan). - Anonymized council: real-person personas replaced with archetypes (Value Investor, Risk Manager, Macro Strategist, Systematic Quant); rubric is now account-aware (no hardcoded "$1,000 / one position"). Guarded by test_personas. - Discovery / reverse search: core/data/screener.py uses Yahoo's live screener as an affordability prefilter; discovery_service scores the survivors; Report tab auto-suggests names that fit when the watchlist comes up empty. - Live-data provenance surfaced (source + fetched_at + live/estimated badges); reset button + input-change invalidation of stale results. - Fix .gitignore: anchor the runtime tracker-store rule to /data/ so it no longer swallows the core/data source package (which restores the previously-untracked bars.py / chains.py / earnings.py to version control). - Tests: 111 passing (portfolio, narrative, report, discovery, personas added). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
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.
What & why
Make quant-wheel work for any account balance (not just the personal $1,000 setup), add a beginner-friendly report, anonymize the council, and add reverse-search discovery. The scoring/Monte-Carlo/Black-Scholes math is unchanged — this generalizes the account assumptions and the presentation layer around it.
Highlights
core/portfolio.pyallocates up toconfig.max_positionsenterable names within deployable cash (identical to single-position behavior at $1,000). Sidebar control + CLI--max-positions;services/report_service.pybuilds aPortfolioReport.core/narrative.pyexplains each trade and the council's reasoning in plain English, defining jargon (POP, EV, premium, assignment…) inline. New Report tab with per-trade tracker logging, plus a verdict legend (also surfaced on the Scan tab).tests/test_personas.py.core/data/screener.pyuses Yahoo's live screener as a cheap affordability prefilter;services/discovery_service.pyscores the survivors with the same engine; the Report tab auto-suggests names that fit when the watchlist comes up empty.fetched_at+ live/estimated badges) so you can verify real data is used.Repo fix included
The old
.gitignoredata/rule was unanchored and had been silently ignoring thesrc/quantwheel/core/data/source package —bars.py/chains.py/earnings.pywere never committed, so a fresh clone wouldn't run. Anchored the rule to/data/(root tracker store only); those files are restored to version control in this PR.Out of scope (by design)
The walk-forward backtest and the LangGraph weekly agent remain single-position; multi-position lives in the dashboard's Report path.
Tests
pytest→ 111 passing (added: portfolio, narrative, report, discovery, personas).test_architecturestill confirms no UI imports leak into the backend.🤖 Generated with Claude Code