样式简介

  • 重要改动
  • 新加的特性
  • 删除的特性
  • 修改的特性
股票的标准归类
更新说明
  • 股票行业改为申万2021分类,并重新导入示例数据

  • 更新了股票分类和分类K线的datakey,并且补上了之前漏掉的货币供应的datakey

  • 整理了命令行日志输出:针对用户的日志更加精简,针对开发者的则更加详细。

  • 增加了UI上的标签计算的可视化,现在标签无论是用来分类还是标记时间段,都可以非常直观的在UI上看到了

  • 增加了滚动回测功能,可以额外设置与主回测不同的单个或多个回测时间段用来验证策略是不是在回测时间段以外也同样有效

  • 增加了NTQ自带的AI中转,如果在官网注册会员,可以使用会员凭证每日有30次免费AI的咨询。

矩阵归因,知己知彼
更新说明
  • 重大更新:重新设计第二层价格回测,把它变成“衡量市场上被过滤过噪音的机会”的整体盈利能力,单股票支持多个机会一起投入并跟踪,更好衡量策略的整体表现。

  • 重大更新:重制归因系统,放弃原来的单次回测的归因(贡献度太小),设计并加入了新的参数归因配置和解析,让归因系统回答:参数有没有带来的变化,参数不同值带来的变化,多参数组合带来的变化,参数因子对结果的贡献度等等。

  • 重大更新:资金模拟层(portfolio)新增加了机会的选取配置,可以通过简单的取值权重对机会进行排序过滤了

  • 大幅度增强逐股数据展示:指标会自动注入主图和副图。其他数据源会一同并入并用不同样式的副图展示

  • 对资金回测加入事件表格,展示所有投资事件,并加入更加直观的折线图

  • 修复了决策者模式显示ST,ST*,或者退市有时候显示不正常的问题

  • 对决策者模式股票当前的数据报告做了更丰富的展示

  • 将模拟版本达到上限的清理从手动变成自动

  • 修复了windows用户在导入mysql数据库的时候需要local_infile=ON的依赖,解决了一部分用户在windows无法成功导入数据的bug

  • 改进devcli的package命令,在发布版本的自动检测过程中一旦出错立即停止,而不是全部运行完成后再报错。

  • 制定了前端的代码标准并记录下文档

  • 引入Ruff来提高代码规范

  • 提高安装体验,在duckdb发生锁库的时候提供更明确报错,并且支持在设置里手动导入数据

  • 为所有演示策略加入归因配置示例

  • 更新所有用户空间过时文档

强化安装体验
更新说明
  • 修改安装数据导入步骤的底层逻辑,不再有python对象的转化,从而提高了至少10倍速度
  • 改进了安装过程中的打包依赖判断,现在如果发现是国内就使用镜像,大大增加安装速度
  • 给决策者模式的每次投资加入笔记的功能,在回溯日历里能看到当时的笔记
  • 修复了userspace不在项目根目录下的种种问题
  • 将cli从infra放入modules内
  • 对策略(strategy)和标签(tag)模块加入过滤样本清单的钩子函数
  • 所有核心模块的声明多了包package字段
  • 重新打包用户空间,大幅度简化示例代码,降低理解难度
身临其境的决策者模拟
更新说明
  • 全新模拟回测的第四步:决策模拟
  • 集成AI模型和必要文档(需要自己加入API key进行运行)
  • 对策略内页加入帮助引导
  • 资金模拟(第三层内)加入Sharpe和Sortino比率
  •  Bugfix:修复了一些小的bug
统计 + 机器学习对回测结果的归因
更新说明
  • 回测归因:加强分析模块,可以通过统计和机器学习手法分析出策略实现的归因问题
  • 分离了机器学习的安装流程,重新更新了安装体验,增加了新的UI的欢迎页面
  • 加强策略中的is_stop_loss和is_take_profit函数,完全支持自定义目标,并加入新的布林轨策略进行演示
  • 对所有演示策略加上了归因演示代码
  • 把第三层回测的收益和回撤图进行了合并
  • 重新整理和定义了策略运行的版本和指纹系统,现在系统不再依赖db的缓存,UI和后端可以同时修改settings.py并不会导致版本错乱
  • 策略演示页面加上了回到策略选择页面的快速入口
  • 为策略版本增加了新的状态:即将清理(缓存过期)和仅供查阅(环境指纹改变),增加了pin和删除版本的功能,被pin过的策略版本不会被自动清理,删除版本会清理版本的所有缓存的结果
  • 前端UI升级react版本,从17.x升级到18.x
  • 对前端所有请求进行了错误和超时处理,以免任何错误卡住UI的操作
  • 统一处理了UI上很多会导致用户操作卡死的异常处理
  • 统一处理了后端程序里很多对错误的跳过(pass)操作
标准化模块
更新说明
  • 标准化模块:所有模块统一格式,根目录下是同名模块入口层,另外还有contract(接口契约)来提供额外可能对外的API
  • 标准化模块:所有模块统一文档,一个api,一个readme,与原有的module info合并成完整的使用文档
  • 代码清理:删除logging(日志)模块 (技术债)
  • 代码清理:定义代码规范,并产出code style(代码风格)文档在根目录
  • 代码清理:所有模块之前穿透contract或API的引用都已经清理,现在模块间的引用都只在contract和API里暴露
  • 代码清理:将工具类模块(Utils)模块迁入infra下
  • 代码清理:将BFF和(用户界面)UI独立放入core的根目录下,不再是modules里的一部分
  • 代码清理:淘汰了老的job pipeline模块,职责分配到原来的业务模块中
  • 模块重构:重构BFF,取消了原来在模块中的launcher,将BFF专有逻辑迁移到BFF中。
  • 模块重构:将data cursor(数据游标)重置入data contract (数据契约)模块,并将时间推进功能从strategy(策略模块)挪入data contract(数据契约)模块
  • 模块重构:收敛了quick tools,dev tools。system action模块收敛成了task_gard模块
  • 模块重构:抽取了tag(标签模块)和strategy(策略模块)公共底层模块,独立成backtest engine(回测引擎)模块
  • 新模块:回测引擎(Backtest Engine或BE)新的回测调度执行器,是tag和strategy模块的基础,负责根据可用系统资源重组,执行,监控回测执行。Strategy和Tag模块的功能精简为提供任务,提供用户执行逻辑。
  • 为新的回测引擎加入一套完成性能测试基准和devcli的入口。
  • 新模块:加入trace模块,记录用户使用方式反馈,以便提供更好的服务(需用户同意),并且在UI上放置了随时开启或关闭trace的开关
  • 新模块:单机能力(machine capacity)模块,用来随时探测一些本机基础CPU和最大/可用内存的工具类
  • 策略模块(strategy):暴露了新的on_pick_portfolio_member接口, 可以通过代码选择投资的机会了
  • 策略模块(strategy):新的报告模式,兼容windows,UI和后端统一
  • 策略模块(strategy):更新了第三层回测的名字,从capital allocation(资金分配)变成了portfolio(投资组合)
  • 策略模块(strategy):最后一层portfolio(投资组合)模拟采用复权价格作为信号,实际价格成交的双轨价格进行回测,增加了仓位管理的准确性。
  • 策略模块(strategy):将用户自定义钩子函数挂在了新的hooks基类上,这样用户的钩子函数不但可以参与底层子进程任务,也可以通过钩子参与主进程工作
  • 标签模块(tag):新引入tag计算的进度表,可以让tag支持更好的增量计算
  • 标签模块(tag):修改tag的其他三张表,去掉了一些冗余字段
  • 标签模块(tag):将用户自定义钩子函数挂在了新的hooks基类上,这样用户的钩子函数不但可以参与底层子进程任务,也可以通过钩子参与主进程工作
  • 标签模块(tag):现在支持全局标签模式,完全支持给无时序(比如股票分类),或者全局时序(比如GDP)目标动态添加标签
  • 在策略UI上增加策略文件快捷链接
  • 在策略UI上增加版本清除功能
  • 修复了requirements发生变化会强制安装和重新import数据的危险bug
  • 修复了UI界面上扫描页面的策略表里的调试策略链接到了旧页面的问题
  • 修复了UI界面上扫描页面如果扫描出的机会是0个会重置扫描状态的bug
  • 修复了UI界面上扫描页面如果严格模式并且不符合要求的时候仍然能执行扫描的bug
  • 修复了UI策略和标签进度显示和后端不一致的问题
  • 补充了更多的核心测试用例,总覆盖率约63%
  • 将500股1年的演示数据变成300股3年的数据,跨度更大
设定性能基线
更新说明
  • 推出了一套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模式

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