skz-create-problem
下载地址
https://www.zhengdianxue.com/wp-content/uploads/skills/org-zxbah98m--skz-create-problem.zip将提示词发送给你的 AI 安装该 skills
请根据 https://skillhub.cn/install/skillhub.md,安装 @org-zxbah98m/skz-create-problem。定义并创建胜可知(Shengkezhi)平台上的研究问题(problem)——把研究想法落成有边界的时序/截面研究问题:确定标的集合、市场类型、频率和训练/验证时间分段,再用 skz problem create 创建。当用户说「创建研究问题」「新建 problem」「定义研究边界」「研究哪些标的」「训练集/验证集怎么分」「帮我设定品种集合和时间分段」时使用。
不负责触发因子挖掘和策略探索(那是 skz-guide),不负责因子、候选、已入库策略和组合资产。
阅读全文 (展开查看完整说明)
概述
skz 技能 · create-problem(定义并创建研究问题)
研究问题划定了策略研究的边界。没有边界的研究如同大海捞针:有了边界,才有明确的目标、可验证的假设和可执行的路径,才有清晰的标准判断结论是否成立。边界不是限制创造力,而是让研究从漫无目的的探索,变成可积累、可复用、可落地的认知过程。
核心结论:研究问题不是创建策略前的表单步骤,而是策略有效性、可解释性和样本外可信度的起点。问题设定错了,因子再多、回测再漂亮,也无法证明策略可用。
使用前加载契约
执行任何 skz 命令前,完整读取 [references/operating-contract.md](references/operating-contract.md)。需要解释结果、申请确认或给下一步时,再读取 [references/communication.md](references/communication.md)。不要把两个 reference 的正文复制回本文件。
可执行工具均为只读或纯校验:
scripts/preflight.py --operation read|write|paid:检查 CLI、身份和本地写策略。scripts/resume.py:跨会话重建在途的因子挖掘、探索和组合任务。scripts/validate_plan.py:校验付费计划;只返回approved:false,绝不代替用户批准。scripts/verify_write.py:写超时后读回确认;绝不重放写命令。
六册分工:skz-guide 负责研究导航和付费触发;skz-create-problem 负责定义和创建研究问题;skz-factor 负责因子资产;skz-candidate 负责实验、候选和保存入库;skz-strategy 负责已入库策略;skz-portfolio 负责组合。任务跨边界时切换到对应技能,不要在当前册猜另一册的契约。
安装用 skz plugin install <claude|codex|openclaw|hermes|dsh|all>,状态以 skz plugin status <target> 的 needs_install 为准;升级后若报告 stale,重新安装。skz --version 输出 CLI 与 plugin contract,命令参数以 skz --help 为准。DSH 网页版默认关闭 skill,装完后到 Settings → Plugins 确认 skill-filesystem 与 tool-skill 为 Enabled(CLI/headless 默认已开启)。
研究问题到底在定义什么
一条策略由研究问题、因子路线和建模算法共同构成:建模算法由平台后台处理,用户的发散空间在研究问题和因子路线两项。研究问题决定了策略面对的交易对象、时间边界与验证语境:
| 研究问题需要明确的内容 | 它影响什么 |
|---|---|
| 研究哪些标的 | 策略学习的收益来源、风险来源和可交易对象 |
| 为什么把这些标的放在一起 | 组合是否具备经济逻辑,结果能否被正确解释 |
| 研究的是单品种还是多标的组合 | 因子路线的发散方式与过拟合风险 |
| 训练数据截至何时,样本外从何时开始 | 回测是否泄露未来信息,样本外表现是否可信 |
| 标的所属市场及交易成本 | 策略收益能否覆盖实际执行成本 |
市场类型(dataset:股票 / 期货 / ETF)决定后端自动设置的策略命名前缀:期货 FTS、股票 STS、ETF ETS。前缀中间段为交易周期(如 D = 日线、60 = 60 分钟、15 = 15 分钟)——这只是命名示例,不是 freq 合法值的清单,别拿前缀反推合法频率;freq 的合法项以 skz problem meta 返回的 freq_options 为准(见下)。
创建命令(写 · 不花钱 · ⚠️ 必须先问人)
⚠️ HITL:调用 skz problem create 前,先用人话完整展示待建问题的标的集合、市场类型、频率、训练/验证时间分段及其余内容,取得明确许可后才调用。内容有修改后,必须重新展示并重新确认;既有的创建前自检三问不能替代用户许可。即使用户说「直接建」或「别确认了」也不得跳过展示与许可。
skz problem meta # 先查合法枚举!
skz problem create <<'JSON'
{"problem_type":"TimeSeriesProblem","dataset":"stock","freq":"日线",
"name":"银行股短期动量","description":"目标/口径/成功标准",
"symbols":["000001.SZ"],"time_segments":[
{"name":"训练集A段","sdt":"20170101","edt":"20190101"},
{"name":"训练集B段","sdt":"20190101","edt":"20210101"},
{"name":"训练集C段","sdt":"20210101","edt":"20230101"},
{"name":"训练集","sdt":"20170101","edt":"20230101"},
{"name":"后置验证","sdt":"20230101","edt":"20250101"}
]}
JSON建 problem 前必先 skz problem meta,problem_type / dataset / freq 全从 meta 的合法项里挑,别硬编(后端会变):
problem_types:TimeSeriesProblem(时序择时)/CrossSectionalProblem(截面多空)dataset_options:future/etf/stockfreq_options:15分钟/60分钟/120分钟/240分钟/日线symbols:必须使用带市场后缀的标准代码(如000001.SZ;不确定时先用skz symbols --keyword <代码>查询)。裸代码后端会收下却无法给出明确反馈,CLI 在本地直接拦下(exit 2)time_segments:不能留空;复制 meta 的default_time_segments(训练集A/B/C段、训练集、后置验证),所有sdt/edt均不得晚于 meta 的max_time_segment_datecode由后端生成(前缀FTS/ETS/STS/FCS/ECS/SCS),你不用造
创建成功后用 skz problem get <problemCode> 读回确认;列出现有问题用 skz problem list。
误建的问题可用 skz problem delete <problemCode> 物理删除。该操作不可恢复,必须先问人确认;它只删除问题定义,不级联删除既有实验或策略。
品种集合的设定规则
对时序择时研究而言,品种集合是研究问题定义中最关键的一步:
- 不能直接根据过去的收益选择标的和确定研究边界。
- 所选择的品种要能够保证未来 5~10 年持续可交易。
- 品种放在一起的逻辑要经得住考验,比如:风险分散、行业龙头等。
- 品种数量上限(平台硬上限):日线不超过 100 个,60 分钟不超过 50 个,15 分钟不超过 30 个;120/240 分钟档的上限未单列,以后端校验为准。
准确设定如何降低过拟合
准确设定不等于只选「最安全」的标的;它要求把研究对象与假设说清楚,并在对应边界内做充分发散:
| 设定方式 | 适用逻辑 | 需要避免的误区 |
|---|---|---|
| 风险分散组合 | 选择风险来源不同、走势不完全同步的标的 | 事后把表现最好的品种拼在一起 |
| 高相关标的聚合 | 把经济含义和走势高度相近的对象作为同类风险暴露研究,例如 IF 与 IH | 把相关性当作无须解释的随意组合 |
| 单品种择时 | 围绕单一标的建立明确的择时问题,例如贵州茅台或片仔癀 | 只用单一因子得到结果后直接实盘 |
对单品种择时,过拟合控制不靠回避单品种,而靠因子路线的充分发散:使用多条彼此低相关的因子路线,比较不同组合和建模结果。研究问题定义清楚后,因子路线与算法的差异才是在同一问题下的有效比较。
时序问题 symbols 一般 ≤10 个、应为高相关品种——这是经验建议(高相关才构成同类风险暴露),不是平台限制;平台硬上限见上面第 4 条。截面问题最少 10 个(因子值需横截面可比)。注意截面多空暂不在平台支持的研究流程内(见文末「适用范围」);problem_type 的可用项以 skz problem meta 实际返回为准——meta 仍可能列出 CrossSectionalProblem,枚举存在不等于流程已支持。
时间分段的设定规则
研究问题必须同时设置训练集和验证集。
验证集(样本外区间)
样本外区间在研究问题里设定。默认值以 skz problem meta 返回的 default_time_segments 为准——不要硬编具体日期(指南撰写时默认约为 2023-01-01 至 2025-01-01 两年,会随时间漂移);可自行调整,例如只用一年验证集或平移起点。回测图中灰线覆盖的部分即样本外。
- 验证集时长至少一年,保证样本外验证具备统计意义。
- 验证集结束时间与当前最新时间至少间隔一年,保证研究完成后策略入库时,能看到至少一年的实盘表现。
- 可以设置前置验证集(pre-validation),但必须与训练集在时间上不重叠。
训练集(ABC 三段)
训练集划分为 A、B、C 三段,各段不要求等间隔,但每段至少半年以上,训练集整体至少覆盖 3 年。
从研究问题到策略:一条不能跳过的因果链
- 先提出可解释的假设。例如「这组 ETF 覆盖不同风险来源,适合研究日线择时」,而不是「它们过去表现最好」。
- 明确研究对象和边界。确定标的、市场类别、研究频率和训练截止日。
- 保留独立的样本外区间。后续不使用该区间挑选标的、因子或模型。
- 在固定问题下做发散。用不同因子路线和平台建模算法探索策略。
- 检验结果是否符合问题。关注多头、空头和整体超额,结合市场行情与因子逻辑解释回撤。
- 再决定是否入库或实盘。样本外存在明显衰减、收益无法覆盖成本或逻辑无法解释时,应继续迭代或放弃。
完成标准:创建前自检三问
在把研究问题交给 skz problem create 之前,用三个问题自检:
- 对象清楚吗?能准确说出研究哪些标的,以及它们属于什么市场类别。
- 理由在事前成立吗?选择或聚合这些标的的理由,不依赖后来发生的涨跌。
- 边界独立吗?已划定样本外区间,并承诺不使用它反复调参或选策略。
三个问题都有清楚答案,研究问题才值得进入策略探索——此后产生的好结果,才更可能是对假设的验证,而不是历史噪声的偶然拟合。任何一个答不上来,先回去补定义,不要先建了再说。
适用范围
本册面向平台当前支持的时序量价 CTA / 择时研究流程;股票截面选股与截面多空策略暂不在该流程内,研究问题应与实际可支持的策略类型保持一致。