Releases: SZWzz/AStockPursue
Releases · SZWzz/AStockPursue
Release list
v2026.6.6
[2026.6.6] - 2026-06-06 (Enhancement Plan Phase 0-7)
新增
- [Cache] Redis L0 缓存层 — 新增
src/cache/模块(redis_client 连接池 + data_cache OHLCV 缓存),Redis 不可用时优雅降级 - [Notify] 多渠道通知 — Telegram Bot / Discord Webhook / Feishu 自定义机器人 + URL 方言自动检测。Alert 类扩展交易信号上下文字段
- [Notify] NotifyNode + RiskPipeline 内联通知 — 工作流通知节点 + 止损/止盈触发自动告警
- [Broker] 多券商扩展 — BaseBroker 抽象基类 + Binance/OKX 永续合约适配器(ccxt)+ BrokerNode 工作流节点 + CredentialStore 凭证加密
- [Experiment] 实验管线 — StrategyScorer(7 维 Sigmoid 评分 A-E 级)+ VariantGenerator(grid/random 搜索)+ ExperimentNode/ScoreNode/RankSelectNode 三节点闭环
- [Regime] 市场状态检测 — RegimeEngine(6 维特征规则型分类 + A 股特有状态)+ RegimeNode 工作流节点
- [Evolution] 策略进化引擎 — StrategyEvolution(Grid→Perturb→Crossover→LLM→WalkForward 5 代迭代 + OOS 过拟合检测 + 早停)
- [Reflection] AI 反思闭环 — ReflectionWorker(7 天后验证决策正确性)+ analysis_memory 表 + remember_analysis Agent 工具
- [i18n] 日语/韩语 — ja/ko 翻译 + 浏览器语言自动检测
- [DevOps] GitHub Actions — docker-publish.yml(tag push → build → push ghcr.io)
- [Tests] 3 个新测试文件 — test_strategy_scorer / test_variant_generator / test_broker_factory(19 个测试用例)
变更
- [DataStore] Redis L0 — get_ohlcv/get_multi_ohlcv 新增 Redis 优先查询 + 自动回写
- [Schema] 5 个新 PortType — NOTIFY_CONFIG/ORDER_RESULT/REGIME_RESULT/EXPERIMENT_RESULT/SCORE_RESULT
- [NodeRegistry] 3 个新节点模块 — notify_nodes/experiment_nodes/regime_nodes
- [API] 4 个新路由端点 — notification test+list / experiment generate+score+detect-regime
- [docker-compose] Redis 服务 — redis:7-alpine, 256MB, ALLKEYS-LRU
- [requirements.txt] 新增 redis>=5.0.0
- [NodePalette] 3 个新图标 — Plug, Activity, Award
[2026.6.6] - 2026-06-06
新增
- [Workflow] 因子原子节点系统 — 新增 22 个可组合的原子因子节点(
factor_atoms.py+signal_nodes.py),覆盖六层:数据提取(column_extract/constant)、变换(ma/ema/delta/pct_change/std_dev/rank/scale/math_transform)、运算(arithmetic/extremum)、滚动窗口(rolling_extremum/rolling_rank/rolling_scale/rolling_correlation)、逻辑判断(cross_over/compare/bool_combine/bool_not/if_else)、信号构造(rank_select/threshold_select/signal_weight/rebalance/hold_signal)。节点间通过DF_FACTOR/SIGNAL类型端口传递数据,连线即逻辑 - [Workflow] 卡片内联参数编辑 —
BaseNode.tsx新增InlineParams组件,config_schema中标记inline: true的字段直接渲染为卡片上的微型输入控件(数字框/下拉框),无需打开侧边栏即可修改关键参数(ComfyUI 风格) - [Workflow] L1: ExpressionTree→Workflow 自动转换 — 新增
tree_converter.py,将 AlphaZoo 的 400+ 因子自动转换为可视化节点 DAG。支持 24 种运算符映射(算术/截面/时序/条件),带分层布局算法。API:POST /tree-to-workflow - [Workflow] L2: 策略模板匹配 — 新增
templates/registry.py,8 个预置策略模板(单因子排名/双均线交叉/多因子复合/阈值突破/RSI均值回归/布林带/量价确认/动量轮动)。基于代码特征的模式匹配器(regex 规则),金叉策略匹配得分 1.0,未知策略不误匹配。API:GET /templates,GET /templates/:id,POST /match-template - [Workflow] L3: AI 策略拆解 — 新增
strategy_decomposer.py,将 Python SignalEngine 代码通过 LLM 分解为 workflow JSON。包含:51 节点 catalog 注入 System Prompt、JSON 提取(支持 code block/plain/mixed 三种格式)、结构校验(node_type 存在性/edge 节点引用)、最多 2 次自修正重试。API:POST /decompose-strategy,GET /node-catalog
变更
- [Workflow] NodeRegistry — 新注册
factor_atoms、signal_nodes两个模块,总节点数 26→51 - [Workflow] BaseNode — 卡片最大宽度 240→280px 以容纳内联参数
- [Workflow] CrossOverNode — 新增
direction参数(above/below),同时支持金叉和死叉检测 - [Workflow] ArithmeticNode — op 枚举扩展
pow(幂运算) - [Workflow] workflow_routes — 新增 6 个 API 端点:
tree-to-workflow、templates、match-template、decompose-strategy、node-catalog
修复(P0 全面审计)
- [Engine] P0-1 佣金费率对齐 —
ChinaAEngine默认佣金率从万2.5(0.00025)修正为万3(0.0003),与 CLAUDE.md 记载和 CHANGELOG P0 修复记录一致。同时更新模块 docstring 和内联注释 - [Workflow] P0-2 信号节点性能向量化 —
ThresholdSelectNode从 O(n³) 三重循环改为 pandas 向量化操作(selected_mask.sum(axis=1)+.div()),5000×500 数据集执行时间从 >10s 降至 <0.1s。RankSelectNode改用DataFrame.rank(axis=1, method="first")单次排序替代逐行循环。SignalWeightNodeequal/factor_proportional 两种模式均改为 DataFrame 向量化(fillna(0) + (df!=0).sum(axis=1) + .div())。HoldSignalNode用cummax()/cumsum()向量化替代逐 code×逐 date Python 循环 - [Security] P0-3 工作流路由脱敏 —
workflow_routes.py中 8 处detail=str(e)替换为通用错误消息,防止内部异常信息泄露。同步修复tree-to-workflow端点区分 ValueError(400 客户端错误,可透传消息)与通用异常(500 通用消息) - [Frontend] P0-5 测试覆盖补全 — 新增 3 个测试文件:
workflowTypes.test.ts(PortType 枚举 + isCompatible 兼容性矩阵)、authStore.test.ts(token 恢复/注销/损坏数据处理/登录错误)、workflowStore.test.ts(节点 CRUD/连线验证/脏状态/执行日志)。修复apiAuth.test.ts中 sessionStorage vs localStorage 不一致(auth store 已改用 sessionStorage)。修复auth.ts中损坏 JSON 时未清除状态的问题
修复(P1 深度优化)
- [Workflow] P1-5 _to_factor_df 去重 —
factor_atoms.py和signal_nodes.py中重复的 14 行_to_factor_df函数提取到共享模块nodes/_utils.py,统一导出为to_factor_df。两处分别import ... as _to_factor_df保持接口向后兼容 - [Engine] P1-6 精确异常捕获 —
TradingEngine._process_signals()中except Exception:替换为except (ValueError, KeyError, TypeError, AttributeError, IndexError) as e:,防止KeyboardInterrupt和SystemExit被吞没 - [GP] P1-7 Docstring 修正 —
gp_engine.py模块 docstring 中 FDR 校正方法从Benjamini-Hochberg修正为Benjamini-Yekutieli(BY),与代码实际调用apply_by_correction()一致 - [Workflow] P1-9 信号节点测试 — 新增
test_signal_nodes.py(21 个测试),覆盖RankSelectNode(top_n/升序/超额 top_n)、ThresholdSelectNode(gt/lt/gte/无匹配)、SignalWeightNode(equal/factor_proportional/空信号)、HoldSignalNode(进入/退出/初始 long/多股票)、RebalanceNode(持有/频率=1 透传)、因子管线端到端集成测试、CPU 进程池冒烟测试 - [Workflow] P1-2 画布 Undo/Redo —
workflowStore新增历史栈(最多 50 步):addNode/removeNode/updateNodeConfig/onConnect操作前自动快照,undo()/redo()恢复。WorkflowCanvas添加键盘快捷键 Ctrl+Z(撤销)、Ctrl+Shift+Z / Ctrl+Y(重做) - [Workflow] P1-3 节点搜索 —
NodePalette已内置搜索功能(按标签/描述/node_type 过滤),无需额外修改
修复(P2 质量提升)
- [Workflow] P2-17 延迟 CPU 池初始化 —
workflow_engine.py中模块级_CPU_POOL = ProcessPoolExecutor(...)替换为延迟初始化_get_cpu_pool(),避免在 ASGI 非主线程导入时创建进程池。首次调用时创建,线程安全 - [Workflow] P2-14 策略拆解器测试 — 新增
test_strategy_decomposer.py(21 个测试),覆盖_extract_workflow_json9 种格式(纯 JSON/代码块/混合文本/无效输入/空响应)、_validate_workflow6 种场景(合法/缺 ID/未知类型/边引用未知节点/无节点/完整管线)、get_node_catalog结构验证 - [Workflow] P2-13 画布复制粘贴 —
workflowStore新增copySelectedNode()/pasteNode()/hasClipboard()操作。WorkflowCanvas添加 Ctrl+C(复制选中节点)、Ctrl+V(粘贴到画布中心)快捷键。复制时不干扰文本选择 - [API] P2-16 错误码标准化 — 新增
src/api/error_codes.py:ErrorCode枚举(20 个机器可读错误码)+api_error()工厂函数 + 默认 HTTP 状态映射 +internal_error()/not_found()快捷函数。所有错误响应格式统一为{"error_code": "...", "message": "..."} - [Workflow] P2-15 演示工作流 — 新增 3 个初学者友好的演示模板(
demo_momentum动量策略/demo_macross均线交叉/demo_volbreak成交量突破),带完整节点+边预置,通过POST /templates/{id}/instantiate一键创建
修复(P3 收尾优化)
- [Trading] P3-21 魔术数字配置化 — 新增
src/trading/config.py:集中管理MAX_HISTORY、EPSILON、DEFAULT_NODE_TIMEOUT、MAX_CONCURRENCY、RESOURCE_LIMITS、GP_POPULATION_SIZE等 15+ 个可调参数。所有值支持环境变量覆盖(如TRADING_MAX_HISTORY)。signal_adapter.py和engine.py改为从 config 导入 - [Frontend] P3-20 空状态设计统一 — 新增
EmptyState共享组件(支持 icon/title/description/action,sm/lg 尺寸变体)。Projects页面已接入,其余页面渐进迁移 - [Frontend] P3-19 参数网格搜索 UI — 新增
GridSearch组件(components/strategy-lab/GridSearch.tsx):选择 1–2 个参数定义范围+步长 → 笛卡尔积生成全量组合 → 并发执行回测(batch=3)→ 按 Sharpe 排名表格展示。可嵌入 StrategyLab 等回测页面 - [Engine] P1-6 异常捕获补充 —
_process_signals异常类型补充RuntimeError,兼容can_execute等市场规则检查可能抛出的运行时异常
修复
- [Workflow] 回测结果与策略实验室不一致 — 三个根因:① strategy_code 路径实例化 SignalEngine 失败回退至 StaticSignalEngine(存在前瞻偏差);删除 strategy_code 端口,只用 signal 模式(BacktestDriver._run_fast 已有逐根 K 线截断防前瞻)。② BacktestNode 未输出 equity_curve,ChartDataNode 退化为买入持有近似值;现从 engine.equity_snapshots 提取真实权益曲线。③ BacktestNode._mk_engine 仅覆盖 4 种市场且硬编码 bars_per_year;改用 _create_market_engine 和 calc_bars_per_year 与策略实验室对齐
- [Workflow] BacktestNode 初始资金与策略实验室不一致 — 统一默认 1,000,000(策略实验室从 100,000 → 1,000,000)
- [Workflow] 回测交易记录只有入场没有出场 — 改为入场+出场配对输出,出场记录含 exit_time、exit_price、exit_reason、pnl
- [Workflow] ChartDataNode 权益曲线用"T0,T1"假时间戳 — 改用 equity_snapshots 真实时间戳
- [Strategy] 策略实验室 initial_cash 默认值从 100,000 改为 1,000,000 — 与 BacktestNode 对齐
- [Workflow] 路由双 /v1 前缀导致 /projects 页面空白 — workflow_routes.py prefix 从
/v1/workflow改为/workflow - [Workflow] CSS @Keyframes fade-in-up 缺失导致页面内容不可见 — 所有使用 page-enter-stagger 的页面内容卡在 opacity:0
- [Workflow] 前端 dist 文件残缺导致所有页面白屏 — Docker 构建缓存问题,旧 index.html 引用已删除的 JS chunk
- [Workflow] 节点连线死锁 — 同源→同目标多条线时依赖计数重复(strategy→backtest 的 signal + strategy_code)
- [Workflow] 硬编码英文标签 — BaseNode.tsx 画布节点和 NodePanel 直接使用后端 label,改为 i18n 翻译
- [Workflow] 图标名当文本渲染 — 后端 icon 字段(Lucide 名称)未映射为图标组件,显示裸文本
- [Workflow] 节点 handle 连接困难 — 加大 handle 尺寸、增加吸附半径 connectionRadius=30
- [Workflow] backtest_driver sys.exit(1) 炸掉进程池 — 改为 return error dict,不杀进程
- [Workflow] BacktestNode 缺 start_date/end_date — 导致 InMemoryLoader 日期查询失败
- [Workflow] save_node_results DataFrame/Timestamp JSON 序列化报错 — 添加 _sanitize_for_json 递归转换
- [Workflow] WorkflowRun 缺 created_at 字段 — schema.py 补充字段 + to_dict/from_dict
- [Workflow] SSE 事件路径错误 — /v1/api/workflow → /v1/workflow
- [Workflow] 过期锁不释放 — 添加 stale lock 自动检测
- [工作流] 回测结果实时展示 — pollRun 轮询 + ECharts K线/权益/交易明细/指标面板
- [策略] 保存策略空名称 — 自动从 class 名提取,fallback 带时间戳
- [策略] 策略列表缺失 code 列 — pg_repository list_strategies SQL 补上 code 字段
- [策略] Template 模板实例化 405 — 添加 POST /templates/{id}/instantiate 路由
新增
- [Workflow] 策略节点 Saved 模式 — 从 Strategy Lab 选取已保存策略,支持 Template/Saved/Custom 三种来源
- [Workflow] 回测节点渐进式执行 — 新增 strategy_code 输入口,逐根 K 线生成信号防未来信息
- [Workflow] 回测节点 Slippage 配置 — 新增滑点(bps)配置项
- [Workflow] 节点面板 Delete Node 按钮 — 选中节点可直接删除
- [前端] 返回工作流按钮 — Full Editor 跳转后顶部显示 ← Back to Workflow
- [前端] WorkflowChartViewer — ECharts 渲染 K线/权益曲线/交易明细/指标面板
Full Changelog: v2026.5.31...v2026.6.6
v2026.5.31 — AI Factor Mining + P0-P2 Full Stack
🧬 AI Factor Mining Engine
- Genetic programming expression tree evolution (20+ operators)
- Walk-Forward cross-validation + Benjamini-Hochberg correction
- LLM-guided factor extraction from PDFs + multi-LLM debate filter
- Hybrid GP+LLM co-evolution with cost controls
- Real-time SSE evolution chart + expression tree viewer
🔍 Smart Stock Screener
- Multi-condition filtering across 450+ factors + 11 technical indicators
- Whitelist-validated parameterized SQL queries
📊 Performance Attribution
- Brinson decomposition + Factor cross-sectional regression + Sector P&L
🔬 Strategy Statistical Comparison
- Paired t-test, Bootstrap Sharpe CI, White's Reality Check, CAPM/FF3
⏰ Scheduled Tasks Engine
- 6 task types with visual cron builder + execution history
📰 News Sentiment Analysis
- Chinese NLP sentiment scoring + trending topics
🔄 Strategy Version Control
- Auto-versioning with unified diff viewer + one-click rollback
🛒 Strategy Marketplace
- Publish/Browse/Rate/Install strategies
📈 Options Analysis
- Black-Scholes + Binomial Tree + full Greeks + Implied Volatility
🚀 Live Trading Bridge
- 5-step pre-flight validation + Paper→Live promotion
🎓 Onboarding Wizard
- 6-step guided setup
📱 Mobile Responsive Layout
- Adaptive sidebar + bottom nav + touch-friendly inputs
🔧 Infra
- Cross-worker SSE bus (PG LISTEN/NOTIFY)
- GP performance profiler
- Factor wide table ETL
- LLM prompt cache
- Data source status optimization (5-min cache, parallel checks)
v2026.5.30 — Docker 部署修复 + Settings API 修复 + mootdx 支持
2026.5.30 主要更新
🔧 Docker 部署修复
- 修复容器启动失败 —
start.sh找不到AStockPursue命令,补全~/.local/bin到 PATH - 修复登录 500 错误 — 初始化脚本缺失导致 DB 密码未配置
- 修复 mootdx 不可用 — httpx 版本冲突,改用
--no-deps安装
🐛 Settings 页面修复
- 修复页面卡死 — 后端缺失
/v1/settings/data-source-status路由,请求返回 HTML 导致前端解析失败 - 修复 API 阻塞 — loader
is_available()同步网络调用阻塞 uvicorn 单 worker,改为asyncio.to_thread+ 2s 超时
📦 新增 A 股数据源 (4+1)
mootdx— TCP 直连通达信,免费 K 线,不封 IPeastmoney— 东财 HTTP K 线,国内最稳定免费源baidu— 百度股市通 K 线 + 三维板块分类ths_eps— 同花顺一致预期 EPS- A 股回退链扩展至 8 源
⚡ 性能
- PG OHLCV 缓存层,20 只股票并发获取 3-5x 加速
🏦 交易 & 风控
- 订单管理系统 (OMS),富途券商接入
- 告警通知系统(企微/钉钉/Discord/Slack/邮件)
- WebSocket 实时行情
- 参数优化引擎(Grid/Random/Bayesian)
完整更新日志见 CHANGELOG.md
V2026.5.26
Changelog
2026.5.26
Added
- 自定义模式(可视化策略/指标构建器) — 策略实验室和指标实验室新增「自定义模式」按钮,弹出 VisualBuilder 模态面板,通过下拉框/滑块/开关可视化配置入场/出场规则、风控参数,编译为 Python 代码并加载到编辑器。策略实验室新增
/v1/strategy-lab/compile端点,compiler 新增compile_signal_engine()函数 - AI 对话面板 — 代码编辑器下方新增可折叠 AiChatPanel,用户输入自然语言描述,AI 流式生成代码直接写入编辑器,完成后自动保存并同步右侧列表。后端内置策略/指标合约系统提示词,无需用户手动编写
- 圆角卡片式页面布局 — 新增
.section-cardCSS 类,页面分隔从硬边框 (border-b/border-l) 改为rounded-2xl border shadow-sm圆角卡片 +gap-3 p-3间距,视觉更柔和
Changed
- AI Generate 按钮移除 — 页面头部的「AI 生成」按钮已由 AiChatPanel 替代,减少按钮拥挤
- 侧边栏折叠状态持久化 — 两个实验室的侧边栏折叠状态写入 localStorage,切换页面不再丢失
- 侧边栏列表滚动位置保持 — 点击列表项后不再跳回顶部,useLayoutEffect 自动恢复滚动位置
- 两个实验室标签汉化 — ChartPanel 中 Symbol→标的、Start→开始、End→结束、Source→数据源、Interval→周期、Load Data→加载数据、初始资金→ptInitialCapital(支持中英切换)
- 回测「Equity & Drawdown」汉化 — 硬编码英文替换为 i18n
equityDrawdown键(净值与回撤) - 会话列表空标题 — 新建会话不再显示裸 hex id(
c50f2760bf14),改为「未命名 #c50f2760」 - 未输入标的前端禁用回测按钮 — ChartPanel 中 symbol 为空时「加载数据」和「运行回测」按钮置灰不可点击
- 相关性矩阵移除「API 文档与指南」按钮
- 策略实验室默认代码模板汉化 — docstring、注释从英文翻译为中文
- i18n 新增 ~30 个键 — aiChat*、customMode、visualBuilder*、chartLoadData、unnamedSession、cancel 等
Fixed
-
Alpha 因子库调用报错修复 — indicator_lab_routes.py 生成的代码中
df["close"](Series)改为df[["close"]](单列 DataFrame),修复'Series' object has no attribute 'columns'错误,alpha 因子的compute()函数不再崩溃 -
回测引擎前瞻性偏差(4 项改进) — 审计发现策略可通过
generate()访问未来数据,导致回测虚高- Fast 模式渐进式信号生成 —
_run_fast()将一次性generate(data_map)替换为逐 bar 扩展窗口调用,策略在时点 T 只能看到data[0..T],从根源消除未来数据泄漏 - Simulation 模式数据截断 —
on_bar_batch()重排序:先generate()再追加新 bar,策略看不到当前 bar 数据,与_align()shift(1) 语义一致 - 止损/止盈支持 bar 内高低价 —
RiskPipeline新增check_position_intraday()方法,使用 bar high/low 检测止损/止盈在 bar 内触及,跳空以开盘价成交;优先级:止损 > 追迹止损 > 止盈 - 开盘价涨跌停判断 —
ChinaAEngine.can_execute()新增 open-based 涨跌停检查,开盘即封板时直接阻止交易,避免用收盘价判断但开盘价执行的时机不一致
- Fast 模式渐进式信号生成 —
-
MCP 服务器设计缺陷(5 项修复)
run_swarm移除 360×5s 轮询阻塞,立即返回 run_id,通过get_swarm_status/get_run_result异步查询write_file/read_file新增run_dir参数,默认工作目录~/.AStockPursue/workspace/,修复文件操作完全失效的问题_run_sync替换为持久后台事件循环_get_mcp_loop(),避免每次 MCP 调用创建新线程_unresolved返回格式从[code]升级为[{code, reason}],不再静默吞掉错误原因- MCP 配置文件写入后
chmod 0o600,防止凭证泄露
Changed
- Lab 模块重组 —
sandbox.py移至src/security/,repository.py/pg_repository.py移至src/lab/storage/,alpha_bench_store.py新建于src/db/ - Docker Compose 合并 —
docker-compose.pg.yml合并入docker-compose.yml,通过--profile pg按需启动 PostgreSQL - API 版本化 — 所有路由挂载
/v1前缀,前端request()统一拼接/v1前缀 - 前端类型拆分 — API 合约类型从
lib/api.ts提取到独立types/api.ts - i18n 新增 AlphaZoo/IndicatorLab 相关 key
- 前端 UX 全面优化
- 回测指标卡片化 — ChartPanel 回测指标从 K 线图底部文字条移至图表上方网格卡片,不会被工具栏按钮遮挡
- 权益曲线 Y 轴修复 — EquityChart grid 边距从 8px 增至 60px,containLabel 不再与绘图区域重叠
- 模拟盘代码/预览分离 — PaperTrading
codes状态拆分为deployCodes(部署弹窗)和previewSymbol(右侧预览),互不污染 - 模拟盘快速部署 — 策略库卡片新增「快速部署」按钮,一键填入代码 + 打开部署弹窗
- 模拟盘克隆修复 — 克隆从
/v1/runs/{runId}/configAPI 读取原始 codes - 模拟盘风控保存 — 风控 tab 新增「保存风控配置」按钮,调用
PUT /v1/runs/{runId}/risk - 模拟盘 SSE 切换 — 切换运行实例时自动断开旧 SSE 连接,避免事件串扰
- 模拟盘 K 线高度自适应 — 选中运行后 K 线图 220→320px,权益曲线 ResizeObserver 动态撑满
- 策略实验室移除空壳 Monitor tab — 删除无实际功能的运行监控面板及跨页面耦合
- 策略实验室 AI 取消 — 代码生成按钮旁新增取消按钮(AbortController),可中断长时间 SSE 流
- 策略实验室批量删除 — 删除策略前弹出 confirm 确认,防止误删
- useBacktest hook 提取 — PaperTrading/StrategyLab/IndicatorLab 共享回测状态管理,减少 ~200 行重复代码
- 自选股搜索输入 — WatchlistPanel 纯文本输入替换为 StockInput 组件,支持代码/名称/拼音搜索
- 自选股实时价格 — 新增 10 秒轮询自动刷新价格,无需手动点刷新
- 免费数据源卡片 — Settings 页面免费数据源区域加边框卡片 + 内层描边,层级分明
2026.5.25
Added
- TradingEngine — 统一回测和实盘执行引擎 — 新建
agent/src/trading/包(6 个模块,~1100 行),回测和模拟盘共享同一套on_bar()管道,SignalEngine 策略一次编写、两个场景运行TradingEngine— 统一on_bar(bar, ts) → BarResult管道:market hooks → 信号生成 → 优化器 → 风控检查 → 状态机约束 → 撮合执行 → 权益快照SignalAdapter— 自动检测 batch/tick 模式,batch 模式等价于_align()shift(1),tick 模式委托TickHandler.on_bar()BacktestDriver— 快速模式(预计算权重,回测结果 100% 向后兼容)+ 模拟模式(逐 bar 增量生成,匹配实盘行为)LiveDriver— 从PaperTradingScheduler提取异步实盘循环,连续错误熔断 + 心跳 + 种子历史数据OptimizerAdapter— 滚动窗口在线组合优化(Phase 2),支持风险平价等优化器RiskPipeline— 从papertrade/risk_manager.py迁移,止损/止盈/追迹止损/日内亏损限制FlatStateMachine— 从papertrade/state_machine.py迁移,强制 flat→long→flat→short 状态转换
- 回测模拟模式 —
BacktestDriver新增 simulation 模式,逐 bar 通过完整 signal pipeline,用于验证策略在真实环境中不会出现未来函数 - 状态代理模式 —
TradingEngine通过 property 代理将 capital/positions/trades 读写穿透到BaseEngine,确保CryptoEngine.on_bar()等子类 hook 看到一致状态
Changed
- 回测执行路径重组 —
BaseEngine._execute_bars()/_rebalance()/run_backtest()委托给BacktestDriver;backtest/runner.py直接使用BacktestDriver.run() - 模拟盘调度器简化 —
PaperTradingScheduler删除内联轮询循环,委托给LiveDriver.run(),调度器只保留 SSE 推送 + DB 持久化 - papertrade/ 向后兼容 —
engine.py/tick_handler.py/risk_manager.py/state_machine.py改为 re-export,所有外部 import 路径不受影响 - api_server.py 拆分 — 2650 行巨型文件拆分为 6 个路由模块(runs/sessions/settings/auth/system)+ 共享工具 common.py,缩减 88%
- API 版本化 — 所有路由挂载
/v1前缀,为未来 API 变更预留空间 - Docker Compose 合并 —
docker-compose.pg.yml合并入docker-compose.yml,通过--profile pg按需启动 PostgreSQL - Lab/ 模块重组 —
sandbox.py移至src/security/,repository.py/pg_repository.py移至src/lab/storage/,职责更清晰 - 前端类型拆分 — API 合约类型从
lib/api.ts(508 行)提取到独立types/api.ts(~290 行) - SSE 管理统一 — 提取
lib/sseClient.ts共享工具(LRU 去重 + 指数退避重连),useSSEhook 和paperTradingStore统一使用 - 前端 request() 去重 —
services/paperTrading.ts删除重复的request()实现,改用lib/api.ts导出
Fixed
- user_id 硬编码 — 26 处
auth.get("user_id", 1)防御性回退替换为auth["user_id"],由require_auth保证存在 - auth 端点速率限制 —
/api/auth/login和/register增加内存滑动窗口限流(5 次/分钟),防暴力破解
Added
- 前端测试基础设施 — vitest + testing-library + jsdom,3 个测试文件 17 个测试用例(api/apiAuth/StockInput)
Full Changelog: dev-2026.5.24...V2026.5.26
Dev-2026.5.24
Changelog
2026.5.24
Added
- 股票自动联想 — A股/港股/指数 智能搜索,支持代码/名称/拼音,指标实验室、策略实验室、相关性矩阵全接入
- Alpha Zoo → 指标实验室转换 — 内置因子一键转换为指标格式,支持直接回测
- 策略实验室 PG 优先 — 自动检测 PostgreSQL 可用性,优先使用 PG 存储,fallback 到文件系统
- Alpha Zoo 合并扫描 — 同时扫描内置 zoo 和
~/.AStockPursue/zoo/,指标实验室提升的因子可在大盘中显示 - 国际化补齐 — Login、PostLoginSetup、UserManagement、Correlation、WelcomeScreen 全部接入 i18n(46 个新 key)
- 多用户并发安全加固 — 文件存储原子写入(
mkstemp+os.replace)+ JSONL 追加文件锁(fcntl.flock)+ 仓库单例双重检查锁 - 模拟盘交易 — 完整 Paper Trading 引擎,SignalEngine 策略驱动,SSE 实时行情推送,风控管理(止损/止盈/追迹止损/日内止损),权益曲线可视化,持仓/成交记录,PG 持久化
- 多数据源扩展 — 新增 Tencent(A股/港股)、Global Indices(全球指数)、Commodities(大宗商品)、CoinGecko(加密货币)、Twelve Data(全球全市场)、Finnhub(美股)6 个数据加载器
- 非 OHLCV 数据支持 — 市场情绪(VIX/DXY/Yield Curve)、基本面增强(PE/PB/ROE)、新闻聚合(搜索+财经日历)3 类新数据能力
- Twelve Data / Finnhub / Tiingo API 配置 — Settings 页面新增付费 API 密钥配置区,后端加密存储 + 环境变量注入
- 数据路由策略重写 — SKILL.md 全面升级,OHLCV / 非OHLCV 数据源矩阵、分市场优先级决策树、index/commodity 新市场类型
- 新工具 + 技能包 — 市场概览、新闻聚合、市场情绪 3 个新工具,对应 6 个新技能包(coingecko/commodities/fundamentals-enhanced/global-indices/news-aggregation/sentiment/tencent/twelvedata)
Changed
- 全局 UI 重构 — 字号体系(text-xs→text-sm)、间距系统、按钮层级(btn-primary/secondary/ghost/outline)、卡片阴影、Tab 选中态
- 侧边栏重设计 — 品牌 Logo 橙色圆角底色、导航项 rounded-lg 激活态、会话列表呼吸感、Footer 排版优化
- 页面头部统一 — page-header 组件类、图标底色块、描述副文字
- 回退链全面增强 — A股增加 tencent/twelvedata,美股增加 twelvedata/finnhub,港股增加 tencent,加密货币增加 coingecko,新增 index/commodity 市场类型
- Tailwind 配置增强 — boxShadow CSS 变量(亮/暗自适应)、fade-in/slide-in-right/scale-in 动画
- IndicatorLab 页面 — 按钮体系替换、Tab 样式统一、空态引导、Alpha Zoo 标签页
- StrategyLab 页面 — 同上 + 通知卡片/运行日志/历史记录样式升级
- Agent 聊天页 — 空态居中 Logo、输入框圆角阴影、发送按钮 active:scale 反馈
- Settings 页面 — 卡片 shadow-sm、表单输入框 padding 增大、保存按钮 btn-md
- BacktestPanel / StrategyBacktestPanel — StockInput 替换、模态框 backdrop-blur、按钮 btn 体系
- Correlation 页面 — StockInput 多选替换、raw fetch 切换为 api 模块
- UserManagement — 原生 confirm()→内联确认按钮、raw fetch→api 模块、i18n 全接入
Fixed
- 密码哈希升级 — SHA256→PBKDF2-HMAC-SHA256(600,000 迭代),向后兼容旧格式
- JWT_SECRET 持久化 — 从 $JWT_SECRET 或
runtime_root/.jwt_secret读取,解决多 worker/重启 密钥不一致 - Pickle 缓存安全 — SHA256 完整性校验→HMAC-SHA256 签名(防篡改)
- 代码保存安全校验 — Indicator/Strategy Lab 的
/save接口增加validate_code_safety() - 静默错误吞没 — backtest_store 4 方法、PgSessionStore 3 方法从 silence→raise
- 死代码移除 — strategy_lab_routes 永真
has_return变量 - 子进程崩溃诊断 — sandbox.py 非零 exit code 时提供更详细错误
- 函数去重 —
_extract_meta_from_code、_extract_code_from_response统一从 repository.py 导入 - user_id 硬编码 — Session 模型增加 user_id 字段,PgSessionStore 动态读取
- module_path 泄露 — alpha 详情 API 移除内部路径
- ARIA 无障碍 — ConnectionBanner/PostLoginSetup/Login/RunDetail/Correlation 全补全 role/aria-*/htmlFor
- WelcomeScreen 颜色提取 — 字符串 split 解析→显式 textColor 字段
2026.5.24 (earlier)
- PostgreSQL 自动部署 —
setup.sh可选择自动部署 PG 16 Alpine 容器(docker-compose.pg.yml),无需手动安装 - 相关性矩阵增强 — 结果 localStorage 持久化、保存到会话、AI 分析按钮
- 回测跳转修复 — Lab 回测后使用
useNavigate客户端路由,解决 401 鉴权问题 - 自选股价格优化 — A 股优先 Tushare,不再依赖 yfinance
- WatchlistPanel 鉴权修复 — 所有 fetch 调用添加 JWT 认证头
Changed
- 页面标题 + 描述 — "AStockPursue — AI 量化交易研究平台"
- 登录页汉化 — 全中文界面,移除无效的 Skip 按钮
- LLM 配置弹窗 — 供应商扩展到 10 个,全中文
- 用户管理增强 — 新增 Tushare 配置状态列
- 示例面板汉化 — 15 个 i18n key 中英双语
- pyproject.toml — 更新 authors、urls、dependencies、keywords
- 项目文件更新 — LICENSE、NOTICE、CONTRIBUTING、SECURITY、MANIFEST、CHANGELOG
Fixed
- JWT 鉴权合并 — 三个鉴权函数合并为
require_auth,Lab 路由补鉴权 - SSE 事件流鉴权 — 支持 JWT query string,修复登录后无法对话
- 策略自动保存 — 修复
save_strategy名称参数,AI 生成的策略正确显示 logger未定义 —service.py添加 logging import- JWT_SECRET 持久化 —
.env添加固定密钥,解决重启后 token 失效 require_auth返回值 — 修复返回 None 导致auth.get()空指针
2026.5.23 — Initial Release
AStockPursue 基于 Vibe-Trading (HKUDS, MIT License) 二次开发。
Full Changelog: https://github.com/SZWzz/AStockPursue/commits/dev-2026.5.24
V2026.5.24
Full Changelog: dev-2026.5.24...V2026.5.24