Files
Auto-Trader/CHANGELOG.md
T
Haozhe Wu 07e1adcbba chore(0.1.8): version, CHANGELOG, packaging, News across 5 READMEs, SKILL.md
Release prep for Alpha Zoo v1. Wraps up the 0.1.8 main-branch
content so PyPI + ClawHub publish can run from a clean checkout.

Version
- pyproject.toml: 0.1.7 → 0.1.8
- wiki/docs/content.js: DOCS_DEFAULT_VERSION 0.1.7 → 0.1.8 + 0.1.7
  retained in the version dropdown
- agent/SKILL.md frontmatter: 0.1.7 → 0.1.8

Packaging
- pyproject.toml [tool.setuptools.package-data] adds the new
  src.factors zoo asset globs (zoo/**/*.yaml, zoo/**/*.md,
  zoo/**/NOTICE) alongside the existing src and backtest entries
- MANIFEST.in adds `recursive-include agent/src/factors *.yaml *.md`
  and `include NOTICE`

CHANGELOG.md (first changelog file in the repo)
- Full 0.1.8 entry covering the Alpha Zoo (4 zoos × 452 alphas),
  Web UI + 4 REST routes, CLI subcommand suite, safety floor
  (AST purity gate + lookahead test + pytest-socket + grep gates),
  community governance (CONTRIBUTING + DCO + NOTICE + per-zoo
  LICENSE.md), and the IC/IR core extraction.
- Known limitations subsection: btc-usdt is single-asset; cross-
  sectional IC needs ≥2 instruments; crypto-majors basket planned
  for 0.2.
- [Unreleased] anchor at top for the next cycle.

agent/SKILL.md (ClawHub package descriptor)
- Frontmatter description gains Alpha Zoo + 75 skills (was 74)
- New `### Alpha Zoo (452 pre-built alphas)` section with the
  4-zoo breakdown + CLI / REST / signal-engine entry points
- Skill count 74 → 75 wherever it appears
- Trademarked-name string intentionally absent (CI gate b enforces)

5 READMEs (EN/ZH/JA/KO/AR) per `docs/alpha-zoo/readme-update-spec.md`
- Roadmap: Alpha Zoo `Planned` → `Shipped 0.1.8` with expanded
  description (452 alphas, 4 zoo sources, CLI + agent + Web UI)
- Skill count 74 → 75 (Tool category 10 → 11, `alpha-zoo` added)
- Agent tools count 29 → 31 (alpha_zoo_tool, alpha_bench_tool)
- Project structure tree: new `factors/` block (base / registry /
  bench_runner / zoo), new `api/` block (alpha_routes), new
  top-level `tools/` block (ci_grep_gates.sh). Frontend pages list
  expanded (AlphaZoo, Correlation, Settings)
- Quick Example: second snippet showing `alpha bench` one-liner
- New "What You Can Do" row for the bench-a-pre-built-alpha-zoo path
- New `<details>` block under Detailed Capabilities listing the
  4 zoos + counts + sources + license stance
- Examples → Strategy & Backtesting: 3 snippets (bench, list+show,
  multi-factor compose via ZooSignalEngine.from_zoo)
- API Server route table: 4 `/alpha/*` rows (list, get, bench,
  bench stream SSE)
- CLI Reference: alpha subcommand introduced in the top block;
  single-run examples block extended with 3 alpha commands

`### Key Features` 4-card grid (#7) and Demo section (#13) are
intentionally NOT touched here — they need layout redesign + new
GIFs/screenshots; design notes in docs/alpha-zoo/readme-redesign-7-13.md
will be implemented in a follow-up PR.

969 tests pass; CI grep gates green (no yaml.load misuse, no
trademarked-name leak, no per-stock-code data in wiki); TypeScript
clean on the frontend.
2026-05-17 20:19:04 +08:00

6.1 KiB

Changelog

All notable changes to Vibe-Trading are documented in this file. This project adheres to Semantic Versioning.

[Unreleased]

Added

Changed

Fixed

[0.1.8] — 2026-05-17

Added — Alpha Zoo (450+ pre-built quant alphas)

  • agent/src/factors/ — base operators (rank, scale, ts_*, delta, decay_linear, signed_power, safe_div, market-aware vwap) and a registry that AST-extracts metadata from each alpha module without importing it. Lookahead is enforced at the operator level (delta(d>=1)), and registry sanity checks reject +/-inf and outputs that are more than 95 % NaN.
  • 4 zoos shipping 452 alphas total:
    • qlib158 (154 alphas) — port of Microsoft Qlib's Alpha158 feature handler under Apache-2.0, with pinned commit SHA per file.
    • alpha101 (101 alphas) — implementation of Kakushadze (2015) "101 Formulaic Alphas" (arXiv:1601.00991), written from the paper appendix; the relevant trademarked string is intentionally absent.
    • gtja191 (191 alphas) — implementation of Guotai Junan's 2014 "191 Short-period Trading Alpha Factors" research report.
    • academic (6 factors) — Fama-French 5 + Carhart momentum, shipped as honest price-based proxies (not the canonical FF series).
  • vibe-trading alpha {list,show,bench,compare,export-manifest} CLI subcommand. show and export-manifest enforce path-traversal guards.
  • New agent tools: AlphaZooTool (browse) and AlphaBenchTool (orchestrator with Jinja2 autoescape + strict CSP HTML report).
  • ZooSignalEngine.from_zoo(...) — composite multi-factor signal engine with cross-sectional standardisation, weighting, and optional top-N / bottom-N long-short conversion.
  • wiki/scripts/build_alpha_library.py — Alpha Library renderer. Reads manifest.json produced by vibe-trading alpha export-manifest and emits 452 per-alpha HTML pages plus 4 per-zoo overviews, each with script-src 'none' CSP. The landing page hydrates per-zoo counts from content/index.json.
  • New blog post: "Which of the 191 GTJA alphas still work in 2026?" with aggregate IC statistics, theme breakdown, and the top alphas that survive eight years of out-of-sample data.

Added — Web UI for Alpha Zoo

  • New page at /alpha-zoo in the Vite + React frontend with three views: browse (4 zoo cards + filter bar + paginated table), detail (formula, metadata, collapsible source code), and bench-runner (form → SSE-streamed progress + Alive/Reversed/Dead stat cards + Top-5-by-IR table + by-theme breakdown chart). "Alpha Zoo" nav entry added to the layout.
  • Four new REST routes in the FastAPI server:
    • GET /alpha/list — filterable alpha catalogue
    • GET /alpha/{alpha_id} — meta + source code
    • POST /alpha/bench — kicks off a background bench job and returns a job_id
    • GET /alpha/bench/{job_id}/stream — Server-Sent Events with progress, result, done, and error event types. In-memory job state with a 1-hour TTL; no Redis/Celery dependency.
  • Bench math is refactored into agent/src/factors/bench_runner.py so the CLI driver (agent/scripts/w4a_run_benches.py) and the new API worker share a single implementation.

Added — Safety floor

  • agent/tests/factors/test_alpha_purity.py — AST allowlist scan over every zoo/**/*.py module (whitelist: pandas, numpy, scipy.*, src.factors.base, __future__, typing, math, dataclasses; banned: os, sys, subprocess, socket, urllib, requests, httpx, pathlib, Path, open, eval, exec, compile, __import__, and getattr(_, "__*")).
  • agent/tests/factors/test_lookahead.py — sentinel future-row injection on a 300-row synthetic panel; corrupting rows after the probe must leave the probe value unchanged within 1e-9.
  • tools/ci_grep_gates.sh — CI gate that rejects yaml.load( without safe_load, any trademarked-name leak in shipped artifacts, and any per-stock-code data leak in wiki/**/*.{json,csv,html}.
  • agent/tests/factors/conftest.py — opt-in pytest-socket integration that hard-fails any test attempting outbound network during the factors test suite.

Added — Community governance

  • CONTRIBUTING.md — Developer Certificate of Origin sign-off requirement and a contributor checklist for new alpha PRs (purity, lookahead, __alpha_meta__ shape, LaTeX-matches-code, per-zoo LICENSE.md, DCO).
  • NOTICE (repo root) — Apache-2.0 attribution for Qlib and a declaration that the bundled formulas from Kakushadze, GTJA, and the academic baselines are mathematical content (paper prose, tables, and figures are not reproduced here).
  • Per-zoo LICENSE.md for each of qlib158/, alpha101/, gtja191/, and academic/, plus an upstream NOTICE for qlib158/.

Changed

  • agent/src/tools/factor_analysis_tool.py extracted its IC/IR and layered-backtest helpers to agent/src/factors/factor_analysis_core.py so the new alpha_bench_tool reuses the same maths. Public tool signature is unchanged; _compute_ic_series and _compute_group_equity remain importable as backward-compatible aliases.
  • agent/cli.py grew by 7 lines to register the alpha subcommand; all handler logic lives in agent/src/factors/cli_handlers.py.
  • Packaging: pyproject.toml now ships zoo/**/*.yaml, zoo/**/*.md, and zoo/**/NOTICE as package data; MANIFEST.in recursively includes agent/src/factors.

Known limitations

  • The btc-usdt universe is single-asset; cross-sectional IC requires ≥2 instruments, so the bundled alpha101_btc bench run returns alive/reversed/dead = 0/0/0 by construction. Use a multi-symbol crypto basket (e.g. BTC + ETH + SOL + the top-N perpetuals) for meaningful cross-sectional results; a curated crypto-majors universe is planned for 0.2.

Internal

  • wiki/alpha-library/manifest.json and wiki/alpha-library/content/ are generated artifacts and gitignored. Run vibe-trading alpha export-manifest --out wiki/alpha-library/manifest.json --force followed by python wiki/scripts/build_alpha_library.py to regenerate the static site.