News section now shows only the 3 latest entries inline; everything
older lives under a simple "Earlier news" collapse across all 5
READMEs. Today's entry covers the trade journal analyzer and the
universal file reader shipped in 01996ff and 2b0a775.
Users upload broker exports (CSV/Excel) and get a trading portrait
plus 4 bias diagnostics. Parses 同花顺/东方财富/富途/generic formats
with encoding fallback (utf-8/gbk/gb2312/big5).
Profile: holding days, win rate, PnL ratio, max drawdown, top
symbols, market/hourly distribution via FIFO lot matching.
Behavior: disposition effect, overtrading, chasing momentum,
anchoring — each with severity + numeric evidence derived from
the journal itself, no external market data pulls.
Also: gitignore agent/uploads/ so runtime user uploads never leak
into the repo; inline a tiny csv in test_doc_reader instead of
depending on a fixture file.
read_document now dispatches by extension across PDF, Word, Excel,
PowerPoint, images (OCR), and 30+ plain-text formats (config, markup,
source code). Unified JSON envelope across formats so downstream
agent prompts don't need to branch on file type.
/upload flips from allowlist to blocklist — rejects only executables
and archives. Frontend accept attr widened to the same surface.
Guides users to pick models with reliable tool-calling (best /
sweet-spot / avoid tiers) since Vibe-Trading is tool-heavy and
small models break the agent experience by fabricating answers
instead of loading skills or running backtests.
* fix: update MiniMax provider config and fix temperature handling
- Update .env.example: replace deprecated MiniMax-Text-01 with
MiniMax-M2.7 and document MiniMax-M2.7-highspeed as the faster
alternative; add note that temperature must be > 0
- Fix temperature clamping in build_llm(): MiniMax rejects
temperature=0.0 (requires range (0.0, 1.0]); auto-clamp to 1.0
when the default 0.0 is configured for the minimax provider
- Add unit tests: MiniMax env-var mapping, base URL propagation,
temperature clamping from 0.0, and preservation of explicit values
* fix: clamp MiniMax temperature to 0.01 instead of 1.0
0.01 stays closest to the user's intent (deterministic output) while
satisfying the MiniMax API constraint of temperature > 0.
---------
Co-authored-by: octo-patch <octo-patch@github.com>
Co-authored-by: warren618 <haozhe_wu@connect.hku.hk>
Three issues in Runner causing backtest to fail via MCP stdio:
1. Console(stderr=True): Rich console wrote to stdout, corrupting the
JSON-RPC protocol stream — root cause of "Connection closed"
2. stdin=subprocess.DEVNULL: child process inherited MCP stdin pipe,
causing deadlock between server and subprocess reads
3. Remove HOME/USERPROFILE override: forced yfinance/akshare cache miss,
turning a 9s backtest into 170s+ (exceeding client timeout)
1. worker.py: missing template variables ({market}, {target}, etc.)
now auto-fallback with LLM inference hint instead of crashing
2. Agent.tsx: swarm flush() resets lastEventRef to prevent
safety timeout from killing active swarm runs
- Add CompositeEngine for backtesting portfolios spanning multiple markets
(e.g. A-shares + crypto) with a single shared capital pool
- Extract on_bar logic (funding fee, liquidation, swap) into _market_hooks.py
as pure functions, called by both original engines and CompositeEngine
- Fix _align() signal shift bug: shift on each symbol's own trading calendar
then ffill to unified dates (prevents Monday close-and-reopen for A-shares)
- Add calendar-day annualization for cross-market Sharpe calculation
- Add cross-market-strategy skill with vol-adjusted weighting example
- Update all READMEs (en/zh/ja/ko/ar): news, 69 skills, composite engine
- Update test imports for extracted _market_hooks functions
Upgrade pine-script skill from TradingView-only to multi-platform export.
/pine now generates indicator code for TradingView (Pine Script v6),
通达信/同花顺/东方财富 (TDX formula), and MetaTrader 5 (MQL5) in a single file.
Add 2026-04-12 news to all README translations.
When a loader (e.g. OKX) is reachable but returns no data at runtime
(network block, SSL failure, regional restriction), the backtest runner
now walks the FALLBACK_CHAINS to try the next available source
(e.g. ccxt/Binance). Covers both explicit source and auto-detect paths.
- ffill(limit=5) replaces unlimited ffill to prevent stale prices from
masking long suspensions; all-NaN symbols auto-dropped with warning
- try/except per symbol in _execute_bars so one symbol failure doesn't
crash the entire backtest
- pydantic BacktestConfigSchema validates config.json before execution
(codes non-empty, date format, start<=end, valid interval/engine/source)
- validate_date_range() shared helper called from all 5 loaders
- 25 regression tests covering all four fixes
Show connectivity status on startup (CLI + API server) so users
immediately see which services are reachable and which are not,
instead of getting cryptic errors mid-run.
Moved most good-first-issues to a Roadmap section in README
to keep the issue tracker focused. 3 well-scoped issues remain
open for external contributors.
- CONTRIBUTING.md with dev setup, code standards, and difficulty-tiered roadmap
- GitHub issue templates (bug report + feature request) with YAML forms
- README: add Contributing section with contribution areas table
Restructured ml-strategy SKILL.md from a skills-creator perspective:
- Added validate_data() input gate (columns, min rows, NaN ratio)
- Guarded RSI/Bollinger Band division-by-zero with .replace(0, nan)
- Added inf→NaN sanitization at end of build_features()
- Added sliding window option (window_type + sliding_size params)
- Added output contract: fillna(0).clip(-1, 1) guarantees clean signals
- Provided complete SignalEngine example so agent can copy-paste safely
- Reduced Common Pitfalls from 7 to 3 (4 now enforced by code)
- Zero changes to backtest engine — all fixes are skill-only
- Add DataLoader Protocol + Registry with market-level fallback chains
- New data sources: AKShare (A-shares/US/HK/futures, free) and CCXT (100+ crypto exchanges)
- Auto-fallback: tushare unavailable -> akshare; OKX unavailable -> CCXT
- Zero-config: all markets work without any API keys
- New web_search tool (DuckDuckGo) for web information retrieval
- Skill categorization: 68 skills organized into 7 categories (data-source, strategy, analysis, asset-class, crypto, flow, tool)
- New data-routing meta-skill for intelligent data source selection
- Registry self-initializes via _ensure_registered() — no manual imports needed
- Pattern detection returns market type instead of source name (decoupled)
- runner.py loads .env via dotenv for reliable token access
Add full-stack Pine Script export: backtest strategies can now be
converted to TradingView Pine Script v6 via natural language, CLI,
API, or the web UI.
- New `pine-script` skill with Python-to-Pine mapping table and v6 syntax guide
- CLI: `/pine <run_id>` slash command and `--pine` flag
- API: `GET /runs/{run_id}/pine` endpoint
- Frontend: Pine Script button on RunCompleteCard + modal code viewer with copy
- README: updated news, capabilities, skill count (65), CLI/API docs