样式简介

  • 重要改动
  • 新加的特性
  • 删除的特性
  • 修改的特性
设定性能基线
更新说明
  • 推出了一套NTQ的基线性能指标

  • 增强了tag和strategy的profiler,帮助性能测试收集必要的数据

  • 对tag模块的切片模式增加了数据游标,性能测试6-9倍提升,且数据量越大提升越明显

  • 修复了windows找不到文件的问题,现在windows能够正常运行了

  • 修复了python3.13的依赖问题

  • 修复了枚举UI上会显示没有机会的单个股票的bug

  • 修复了UI进度显示不准确的问题

  • 重新定义了回测的缓存指纹,提高了效率和可靠性,让tag和strategy使用同一套指纹逻辑

  • 修复了UI上修改参数后会产生2个缓存版本的bug

横截面回测的支持
更新说明
  • 重大更新:回测器和标签计算器支持多股并行的切片式回测

  • 使用多进程分散计算和数据预读取的方式加快效率

  • 加入探针,对切片进行自动大小分配以提高运行效率

  • 新增加低价策略来演示幸存者偏差

  • 增加了新的空的策略和标签模版,可以直接拷贝和修改

  • ui新增加“高级功能”, 包含特征标签,数据源(暂时不能更新),数据契约

  • 在设置中增加了data.json全局数据管理的设置,并在一些页面显示被截断的警告,策略扫描演示模式的截止时间变成读取data.json

  • 给设置里增加清除缓存的功能

  • 在策略调试的界面加入“上一步”的按钮

  • (破坏性改动)重构tag的设置格式,分组并移除了一些配置,让配置更简单和直观

  • 重写了 cli 和 devcli 的命令,使用更加标准直观的方式

  • 重新写了项目readme,更新用例

  • 清理了core/global_enums文件夹,将枚举分散到各自的主模块里
更多用例
更新说明
  • 重大更新:新增加了3组共9个层层递进的演示策略来帮助理解框架和概念(注意:回测结果仅供参考,不是任何投资建议)

  • 重大更新:增加策略回测report里的单股K线的点击界面,能够打开单个股票查询详细机会和交易回测点位

  • 重大更新:重建回测的UI,将三层回测变成三个单独页面而不再集中在一页上,提升了用户体验并且减小了UI渲染压力

  • (破坏性改动)将策略 settings 的一些信息字段收入meta中, 顶层只留is enabled字段;

  • (破坏性改动)改动了data.json, 重命名了数据截断日期为 as of latest completed date

  • (破坏性改动)所有k线的最高最低价从highest和lowest变成high和low

  • (破坏性改动)将K线的数据契约从一个按照周期分成了3个,补上了STOCK_INDICATORS_DAILY的数据契约

  • (破坏性改动)策略设置里指标的声明归入了数据的私有属性,不再是 data 的根目录

  • (破坏性改动)对公司财务表加入了披露日期的列

  • 新增加了个股资金流向数据表

  • 新增加了策略导入和导出功能

  • 让复权因子可以根据data.json的配置先行导入可用的数据,大大降低了更新的时间

  • 策略 settings 加入display name作为展示名称

  • 新增加命令行和UI的策略导入和导出功能

  • 修复了UI上的回测缓存有的时候会取错的bug

  • 重新定义了复权因子的存储结构和计算方式,使复权因子能够累加而不是刷新式更新。增加了复权因子链式检查以确保实效性。

  • 修复了UI上有的时候回测报告会显示无效数据的bug

  • 修复了回测进度完成后会马上返回一份report然后又被另一个专门拿report的API覆盖的bug

  • 修复了回测进度只管回测股票进度的bug,现在整个回测进度由加载数据,分发任务,执行计算和总结结果4个部分构成

  • 修复了market profile忘了加入T+1交易的逻辑

  • 修复了价格回测在遇到跌停无法卖出导致交易最终无法平仓的bug

  • 修复策略报告 K 线 tooltip 将 dataIndex 误显示为开盘价的问题

  • 简化命令行入口文件名,从 start-cli.py 改名成为 cli.py,从 dev-cli.py 改成 devcli.py

让安装和使用更加简单
更新说明
  • 引入duckdb,当前项目不再依赖任何第三方数据库,只要有python就可以运行了
  • 计算管道与多进程更新:现在回测效率提高了6倍以上:以前全流程约180秒,现在约30秒
  • 在dev-cli里加入init userspace的自动打包命令和清除缓存命令
  • duckdb:更新data source模块,使用批量写入以避免duckdb单写瓶颈
  • duckdb:更新并加入duckdb锁管理器,避免子进程和主进程抢占duckdb的单进程锁
  • duckdb:给所有写入操作加入完成后自动checkpoint之类,避免wal和db文件双重锁导致的随机错误,牺牲一小点写入代价换取数据库锁的稳定和可预测性
  • 清理所有模块的module info,并且加入每个模块的change log
  • 性能更新:原单进程处理单只股票变成单进程处理多只股票,降低数据库读取时的IO,大幅度提升效率
  • 性能更新:更改了K线读取,复权还有计算指标的逻辑,提高内存使用,降低数据查询次数,大幅提高效率
  • 性能更新:加入探针模式,让内存和进程进行自动分配。
  • 性能更新(破坏性改动):从原来策略的设置里去掉了性能配置,放入全局设置,减小用户心智
  • 将回测引擎的数据加载和缓存彻底委托给数据契约,现在的数据读取和缓存全部由数据契约完成。
  • 修改了策略使用采样发生变化依然会触发缓存的bug

  • (破坏性改动)修改了userspace的文件夹结构,对原来的平铺结构进行收纳,突出核心文件夹,并且配有中文文件夹结构说明文档

消灭幸存者偏差
更新说明
  • 纳入退市停牌等等信息进入回测系统,避免所有回测都是基于“活下来”的股票的幸存者偏差
  • 重构获取股票列表的handler(处理器),获取全量股票列表,包括退市的
  • 增加交易日历表和数据获取逻辑
  • 增加股票所属的地域信息
  • 增加风险时段表,记录每个股票的黑历史
  • 资金回测过程中加入交易量限制,提高模拟准确性
  • 在dev-cli里加入自动检查python 3.9不支持语法的检查
  • dev-cli加入数据打包功能(-ex
  • 重新打包了init_data里边包含回测期间已经退市的股票,清理老的数据表,减小对用户的认知负担
  • 优化了K线指标计算逻辑,指标计算速度提升65%以上

破坏性改动:

  • stock list(全量股票)表发生了结构变化,与之前不兼容
更直观的用户体验
更新说明

 

  • 增加market profile(市场画像)模块,细化回测时候的交易规则
  • 优化UX(用户体验),为很多地方添加了解释的tooltip(提示信息)。对次要内容使用tooltip进行归纳。最后增强了tooltip的视觉效果。
  • 在userspace中提供了可以复写/添加新的market profile的配置
  • 最小买入手数从100股变成了不同板块不同股数
  • 加入涨停和跌停时限制交易的配置
  • 根据不同股票或不同上市阶段,限制不同最大最小涨跌幅度
  • 新增加了一些UI样式:比如读取的动画,随机背景
  • 为核心参数设置增加了大窗口编辑模式
  • UI header上的版本号改为从API获取
  • 重新划分了project context(工程上下文)模块的职责边界
  • 修复了核心设置的json发生变化就会导致整个设置区域消失的bug
  • 在回测报告里加上了回测时间区间信息,并改进了枚举器关于时间的IO,大概提高6-8%的执行效率
  • 优化了策略工作台执行步骤的进度显示
  • 修复了工作台版本差异状态的变化显示错误
铺垫自动升级
更新说明
  • 增加updater(升级器)模块以及一些基础功能,为将来UI一键升级做准备
  • 让UI端口使用python server,取消了使用者的Nodejs依赖(开发仍然需要)
  • 增加了回测准确性的配置,可以配置交易终结价格以什么价格为主,从而更贴近现实交易回测
  • 将setup步骤变成UI版和命令行版本
  • 修复了UI的npm安全性问题
  • 修复了前端ESLint的警告
操作界面诞生
更新说明
  • 重大更新:UI系统发布,引入nodejs依赖

  • 加入 `launcher.py`,一键启动 app 和 UI,自动发现安装状态并引导完成 Setup

  • 在核心内加入BFF和UI,引入前端UI

  • 完成策略工作台和策略扫描的UI和BFF

  • 在userspace里放入tables的文件夹,加入文档引导用户建立自己的数据表

  • Strategy里加上了为支持输出的launcher和支持UI的adapter

  • 扫描系统加入缓存,如果当日扫描过,将直接返回结果

  • 收敛复权因子的逻辑进入model底层,并且为K线复权做了一条特殊快速通道,以便回测减小IO次数

  • 对齐UI和命令行的report,使输出结果保持一致

  • 对命令行和UI的回测加入缓存系统,现在重复的回测会直接返回report

  • 重构strategy核心模块的组织方式,变成更直观的编排层 + flow流模式

  • 清理start cli,变成代理层

  • 清理文件夹结构,将backup文件夹放入userspace,将docker以及badge生成还有自动更新readme这类代码放入devtools文件夹并更新代码引用和文档

破坏性改动:

  • 引入Nodejs依赖
  • app不再自带userspace文件夹,而是安装的时候自动创建
  • start-cli 的扫描命令现在降级成一次只能用一个策略进行扫描
  • simulator的回测report格式发生了变化

  • backup文件夹从更目录移动到了userspace

强化周边辅助
更新说明
  • 增加了Readme里的小徽章和相应的github gitee自动化

  • 添加英文Readme

  • 增加了单元测试的覆盖率和合并的最小要求

  • 为官网增加了不少新的样式

  • 在官网重新写了API文档,对NTQ的死链接进行了清理

  • 修复了官网注册不成功的bug,修改了官网注册后出现email的无法发送的bug

  • 对所有模块增加了测试的覆盖率,修复Github的CI错误

规范工程化
更新说明
  • 为所有模块设计并添加了info的信息文件,并增加了对核心的版本支持能力

  • 重构所有文档的位置和内容,让文档保持最新状态
  • 重构userspace里的用户readme文档,让概念和例子更加易懂
  • 定义了文档标准并记录在docs/module-doc-standard.md

  • cli增加显示版本信息的命令python start-cli --verison

  • 废弃并删除了core/data_class
支持动态数据注入
更新说明
  • 新增加了data contract(数据契约)的核心模块,为核心策略和标签模块增加了用户可扩展的数据契约
  • 在tag和strategy里集成了data contract模块

  • 增加了所有相关UT

  • 制作了一个最小demo合集,让用户5分钟能跑起来框架

  • 去掉了tag模块写死的多进程分配逻辑,变成可自动通过内存变化分配进程的auto模式

梦开始的地方
更新说明
  • 这是一切的开始 - 首个版本