Preset YAMLs dropped into ~/.vibe-trading/swarm/presets/ are now discovered
alongside the bundled roster, mirroring the user-skills pattern
(src/agent/skills.py): the user directory is searched first, same-name files
override bundled presets, and user files survive pip install -U (previously
the only way to add a preset was copying into site-packages, which upgrades
wipe).
- load_preset()/resolve_preset_path(): user dir first, then bundled; the
not-found error names both locations.
- list_presets(): union with user-wins-by-stem override; entries gain a
source: "user"|"bundled" field (additive — CLI/MCP/API consumers read
keys individually or serialize the whole dict).
- Preset names are validated to a single path segment before any filesystem
lookup (rejects separators and '..'); the bundled lookup had the same
latent exposure, so validation covers both paths.
- run_swarm(preset_name=...): an explicitly named user preset now resolves;
keyword auto-routing intentionally stays limited to the curated table, so
a user preset is reachable only by naming it.
- Packaging regression suite extended (6 new tests: discovery, override,
absent-dir no-op, traversal rejection, error message, tool gating); the
roster-count test now filters to bundled entries so a developer's own user
presets cannot make it flap.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Signed-off-by: Ali Emadi <ali@gatekeeperai.com>
Sources without a dedicated routing branch (e.g. local) sent US/HK
equity datasets to the crypto engine, and explicit benchmarks were
always fetched via yfinance even when all required price data was
available locally.
Route unbranched sources by detected instrument market, and fetch the
explicit benchmark through the configured source's loader first,
keeping yfinance as the fallback. source: auto keeps the yfinance
default.
Fixes#550
Signed-off-by: xor_xe <bedauri.it@gmail.com>
Covers issue #476 (all 10 audit findings), #377/#478/#480/#487/#479/#484.
Propagated to all 5 locale READMEs' News section (3 visible + moved
2026-07-10 into <details>, per convention).
BaseOptimizer.optimize() built each estimation window with ret.loc[:dt], which
includes ret[dt] — a close-to-close return for the decision date. Since
weights at dt execute at that bar's open, ret[dt] isn't actually observable
yet at execution time, so every optimizer built on this base (mean-variance,
equal-volatility, max-diversification, risk-parity, turnover-aware) was
leaking one bar of future information into its own decision.
Fix restricts the window to ret.index < dt. Two regression tests prove it:
the window's latest timestamp always precedes the decision date, and shocking
only the decision-bar return leaves that bar's executed weights unchanged.
Backtests without an optimizer are unaffected; this does change historical
optimized results as intended (removing a look-ahead leak, not introducing
one).
Verified locally: full backend suite green (only 2 pre-existing/unrelated
failures, same as main), env-var CI gate passes, ruff clean, 18/18
optimizer-specific tests pass including both new causality tests.
Co-authored-by: Yuan Zhiyi <YZY0108@users.noreply.github.com>
Version bump + release paperwork: detailed CHANGELOG for 0.1.11 (plus the
missing 0.1.10 backfill), README news + counts across all 5 locales
(30 presets / 460 alphas across 5 families / 19 free sources + india_broker
row and India fallback chain / roadmap), v0.1.11 contributor cycle credits,
SKILL.md version, and the opt-in scheduler flag documented in .env.example.
Roll-up release since 0.1.8 — connector-first broker profiles (IBKR +
Robinhood Agentic Trading), Research Goal runtime, swarm reconcile/MCP
keepalive + worker MCP tools + strict alpha-bench + retry_run, the
agent/cli/ package refactor, the mootdx A-share loader, a robustness pass,
and the session/version fixes (#150#156#157#158 + UI indicator).
Version → 0.1.9 across pyproject, SKILL.md, frontend APP_VERSION, and the
wiki docs version selector. MCP tool count corrected to 36 (adds retry_run)
across all 5 READMEs, with the ar/ko tool lists rebuilt from a stale 22 and
the ar skill count fixed 75→77. CHANGELOG [0.1.9] + 0.1.9 news entry added
to all 5 READMEs. Home backtest card data-source count corrected 3→7.
Refresh the interactive terminal transcript, activity rail, and prompt visuals. Document the 2026-05-23 CLI update in README and keep generated CLI screenshots out of git.
Co-authored-by: ykykj <140159248+ykykj@users.noreply.github.com>