Skip to content

Releases: SZWzz/AStockPursue

v2026.6.6

Choose a tag to compare

@SZWzz SZWzz released this 06 Jun 15:19

[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_atomssignal_nodes 两个模块,总节点数 26→51
  • [Workflow] BaseNode — 卡片最大宽度 240→280px 以容纳内联参数
  • [Workflow] CrossOverNode — 新增 direction 参数(above/below),同时支持金叉和死叉检测
  • [Workflow] ArithmeticNode — op 枚举扩展 pow(幂运算)
  • [Workflow] workflow_routes — 新增 6 个 API 端点:tree-to-workflowtemplatesmatch-templatedecompose-strategynode-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") 单次排序替代逐行循环。SignalWeightNode equal/factor_proportional 两种模式均改为 DataFrame 向量化(fillna(0) + (df!=0).sum(axis=1) + .div())。HoldSignalNodecummax() / 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.pysignal_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:,防止 KeyboardInterruptSystemExit 被吞没
  • [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/RedoworkflowStore 新增历史栈(最多 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_json 9 种格式(纯 JSON/代码块/混合文本/无效输入/空响应)、_validate_workflow 6 种场景(合法/缺 ID/未知类型/边引用未知节点/无节点/完整管线)、get_node_catalog 结构验证
  • [Workflow] P2-13 画布复制粘贴workflowStore 新增 copySelectedNode()/pasteNode()/hasClipboard() 操作。WorkflowCanvas 添加 Ctrl+C(复制选中节点)、Ctrl+V(粘贴到画布中心)快捷键。复制时不干扰文本选择
  • [API] P2-16 错误码标准化 — 新增 src/api/error_codes.pyErrorCode 枚举(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_HISTORYEPSILONDEFAULT_NODE_TIMEOUTMAX_CONCURRENCYRESOURCE_LIMITSGP_POPULATION_SIZE 等 15+ 个可调参数。所有值支持环境变量覆盖(如 TRADING_MAX_HISTORY)。signal_adapter.pyengine.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

Choose a tag to compare

@SZWzz SZWzz released this 31 May 06:29

🧬 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 支持

Choose a tag to compare

@SZWzz SZWzz released this 30 May 09:10

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 线,不封 IP
  • eastmoney — 东财 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

Choose a tag to compare

@SZWzz SZWzz released this 26 May 14:48

Changelog

2026.5.26

Added

  • 自定义模式(可视化策略/指标构建器) — 策略实验室和指标实验室新增「自定义模式」按钮,弹出 VisualBuilder 模态面板,通过下拉框/滑块/开关可视化配置入场/出场规则、风控参数,编译为 Python 代码并加载到编辑器。策略实验室新增 /v1/strategy-lab/compile 端点,compiler 新增 compile_signal_engine() 函数
  • AI 对话面板 — 代码编辑器下方新增可折叠 AiChatPanel,用户输入自然语言描述,AI 流式生成代码直接写入编辑器,完成后自动保存并同步右侧列表。后端内置策略/指标合约系统提示词,无需用户手动编写
  • 圆角卡片式页面布局 — 新增 .section-card CSS 类,页面分隔从硬边框 (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 涨跌停检查,开盘即封板时直接阻止交易,避免用收盘价判断但开盘价执行的时机不一致
  • 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}/config API 读取原始 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() 委托给 BacktestDriverbacktest/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 去重 + 指数退避重连),useSSE hook 和 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

Choose a tag to compare

@SZWzz SZWzz released this 24 May 08:11

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

Choose a tag to compare

@SZWzz SZWzz released this 24 May 10:19