CLI 使用说明
NTQ 的所有操作都通过命令行完成——更新数据、跑回测、扫描机会、算标签。入口是项目根目录的 cli.py。
python cli.py -h # 查看所有命令注意:文档最后有使用cli的一个端到端的例子
所有命令
策略相关
缩写 | 全称 | 做什么 |
s | strategy_simulate | 完整回测链路(价格因子 → 组合) |
se | strategy_enumerate | 枚举阶段(扫描哪些股票有机会) |
sp | strategy_price_factor | 价格因子阶段(行情回放) |
so | strategy_portfolio | 组合阶段(资金管理) |
sa | strategy_analyze | 归因报告 |
sdv | strategy_delete_version | 删除某个版本的回测产物 |
spn | strategy_pin_version | 固定某个版本,避免被自动清理 |
sup | strategy_unpin_version | 取消固定 |
ex | export_strategy | 导出策略为 zip 交流包 |
im | import_strategy | 导入策略 zip 包 |
策略命令通用参数:
--strategy <name>:指定策略名。不指定则对全部已启用策略执行-f/--force:强制重跑,忽略缓存
版本管理命令的参数格式是 策略名:版本号,比如:
python cli.py spn --strategy my_strategy:5
python cli.py sdv --strategy my_strategy:3
数据与标签
缩写 | 全称 | 做什么 |
r | renew | 更新数据源行情 |
t | tag | 执行标签计算 |
— | export_adj_factor | 导出复权因子事件 CSV |
标签命令的参数:
python cli.py t # 跑所有已启用的标签场景
python cli.py t --scenario stock_activity # 只跑这一个
python cli.py t --list # 列出所有已发现的标签
python cli.py t --dry-run # 只算不落库
python cli.py t --entity-limit 10 # 只跑前 10 只股票(调试用)
系统命令
| 缩写 | 全称 | 做什么 |
|---|---|---|
id | import_data | 导入初始数据包(仅首次) |
u | update | 检查并升级 core |
v | version | 显示版本号 |
python cli.py v # 看版本
python cli.py u # 检查更新
从模版新建
# 新建一个策略
python cli.py -n my_strategy
# 新建一个标签场景
python cli.py t -n my_tag-n 是全局参数,放在哪个命令后面就创建对应类型的东西。
全局参数
| 参数 | 作用 |
|---|---|
-f / --force | 强制执行,忽略缓存或跳过确认 |
-n / --new | 从模版新建,后跟路径名 |
--verbose | 详细日志输出 |
常见用法
第一次使用
python cli.py import_data # 导入初始数据
python cli.py r # 更新行情
python cli.py s --strategy my_strategy # 跑回测
python cli.py sa --strategy my_strategy # 看报告
日常扫描
python cli.py r # 更新行情
python cli.py c --strategy my_strategy # 扫描机会c 是 scan 的缩写。不指定策略则扫描所有已启用策略。
只重跑某个阶段
# 改了策略参数,只重跑组合阶段
python cli.py so --strategy my_strategy -f-f 强制忽略缓存,否则如果输入没变会直接复用上次结果。
分享策略
# 导出
python cli.py ex my_strategy -o ./my_strategy.zip
# 对方导入
python cli.py im ./my_strategy.zip导入时加 --skip-existing 可以跳过已存在的策略,加 --dry-run 可以模拟导入不实际执行。
一个完整的案例:从零跑通一次策略回测
你刚装好 NTQ,写了一个叫 my_strategy 的策略。现在要从零跑一次完整回测,看看结果。
第一步:导入数据
第一次使用需要导入初始数据包:
python cli.py import_data这会导入 initialization/data 下的数据包到数据库。只需执行一次,重复执行会提示已导入。
第二步:更新最新行情
初始数据可能不是最新的,更新一下:
python cli.py renew这会调用你配置的数据源拉取最新行情。如果你有多个数据源,可以指定只更新某一个:
python cli.py renew tushare
第三步:跑回测
NTQ 的回测分三个阶段:枚举 → 价格因子 → 组合。日常使用直接跑完整链路:
python cli.py s --strategy my_strategys 是 strategy_simulate 的缩写,会按顺序执行价格因子和组合两个阶段。如果只想单独跑某个阶段:
# 只跑枚举(扫描哪些股票有机会)
python cli.py se --strategy my_strategy
# 只跑价格因子(行情回放)
python cli.py sp --strategy my_strategy
# 只跑组合(资金管理)
python cli.py so --strategy my_strategy
第四步:看归因报告
回测跑完之后,生成归因报告看看策略表现:
python cli.py sa --strategy my_strategy可以指定对比某个历史版本:
python cli.py sa --strategy my_strategy --baseline-version 3
第五步:扫描当前机会
回测验证策略有效后,用它扫描今天的市场有没有机会:
python cli.py scan --strategy my_strategy如果数据还没更新到最新,可以用演示模式先跑:
python cli.py scan --strategy my_strategy --demo