Cowork

你是我的「盘感翻译官」。我有多年投资经验和盘感,但不懂什么是因子。你的任务是把我的盘感翻译成可计算的因子,并用大白话解释每个定义在说什么(别只给公式)。 只做翻译这一步:不要加工、不要检验、不要出报告——这些交给后面的提示词做。翻译完成后,用一两句话说明你做了什么。如果某条盘感实在无法量化,明说原因后跳过,不要硬编。 【我的输入】(只改这一块) - 我的盘感:股票形成W底 - 印象最深的例子(可不填,股票名 + 大概时间): - 股票范围:全A - 时间区间:近三年至今 - 数据频率:日频 - 想看多久之后的涨跌:20个交易日(约一个月) 【沟通方式】 - 我不懂量化术语。术语第一次出现时用一句话解释;结论用我的盘感语言说,不要只报指标名。 - 不要求我给出经济逻辑。盘感本身就是假设,不必解释为什么灵。 - 遇到含糊处不要停下来等我:写出你采用的默认假设,继续往下做,我之后会纠正。 【第一步 翻译:盘感 → 可检验的说法】 1. 把我的话复述成一句可检验的说法:「当____时,未来__个交易日,股票倾向于____」。 2. 同一条盘感常有几种量化方式(比如「缩量」可以是成交量低于自己20日均量,也可以是换手率处在近期低位)。给出 2–3 个版本的可计算定义,全部列出,最多 3 个,并记录「共列了几个版本」。注意:以后如果只挑其中表现最好的那个去做检验,就是在作弊(选择型过拟合)——每个版本都要保留,交给下一步一起验。 3. 先用 bq dai search / bq dai fields 确认用到的字段真实存在,不凭印象写字段名。参考:行情与换手在 cn_stock_bar1d,资金流在 cn_stock_moneyflow,分时段与高频特征在 cn_stock_factors_hf,现成因子在 cn_stock_prefactors(先查有没有现成的),财务数据用 *_pit 表。 4. 我说的内容里有做不了的部分(盘口情绪、消息面、主观形态判断等),明说哪部分做不了,只做能量化的部分。 5. 输出一张翻译表:盘感原话 | 可计算的定义 | 用到的字段 | 方向。方向统一为「值越大越看涨」;若我的盘感是「越X越会跌」,在表达式里取反。

先确认字段真实存在,并查有没有现成的因子。

现成因子里没有直接叫「W底」的字段。再看一下 K 线形态表里有没有可用的。

上一步的版本 3 在窗口没满的行上报错,因为向量里有 NULL。我把它改成不用列表的写法,用分步计算,再重新验证。

可检验的说法: 当一只股票最近约 60 个交易日走出"跌、涨、再跌、再涨"的 W 形,且现价回到中间那个高点(颈线)附近时,未来 20 个交易日,它倾向于比其他股票涨得更多。

先说明"因子":就是每天给每只股票按同一条规则打一个分,分越高越符合你的盘感。下面共列了 3 个版本,都保留,下一步一起检验。

盘感原话可计算的定义(大白话)用到的字段方向
股票形成 W 底(版本1,几何法)把 60 天分成前后两半,各取一个最低点。两个底越接近越好,相差 5% 以上记 0 分。两底之间要反弹到颈线,反弹幅度达到 10% 记满分。现价越靠近颈线分越高。三项相乘,0 到 1 分,只要有一项很差,总分就接近 0。cn_stock_bar1d:low、high、close越大越像 W 底,越看涨
同上(版本2,分段涨跌法)把 60 天切成 4 段,每段 15 天,W 应该是"跌、涨、跌、涨"。算出 4 段各自的涨跌幅,方向对了才算正,取最不像的那一段作为得分。4 段都明显才会得高分,所以这个分数很严格。cn_stock_bar1d:close越大越像 W 底,越看涨
同上(版本3,模板相似度法)在 60 天里每隔 10 天取一个收盘价,共 7 个点。拿这条走势去跟一条理想的 W(高、中、低、反弹、低、中、高)比相似度,范围是 -1 到 1。它不管涨跌幅大小,只看形状像不像,所以不要求两个底精确对称。cn_stock_bar1d:close越大越像 W 底,越看涨

三个版本的计算都写在 w_bottom_defs.sql。

  • 现成因子: 我查了 cn_stock_prefactors 和 cn_stock_factors_ta_pattern,没有 W 底或双底字段,只有锤子线、早晨之星这类 1 到 3 根 K 线的形态,跟 60 天的 W 不是一回事,所以自己定义。
  • 验证: 我用最新交易日(2026-10-28)对全 A 的 5576 只股票试算过。三个版本都能算出值,没有异常值,三个分数的取值范围也都符合上面的定义,只是版本2 的得分普遍偏低。最新一天的 5576 只里,版本1 得分超过 0.5 的有 158 只,说明它不是只挑出极少数股票。

我采用的默认假设:

  • W 的观察窗口取 60 个交易日,时间区间取 2023-10-29 至今,用后复权价(把分红送股的影响抹平,走势才连续)。
  • 范围是全 A,ST、停牌和涨跌停股票这一步没有剔除,留给后面处理。
  • 20 个交易日后的涨跌是下一步才算的标签,这一步没有计算。
  • 你没填例子,所以没有拿具体股票校准形态。

做不了的部分: "形态是否好看"的主观判断没法量化,我只能用上面三种数学方式近似。你没提放量突破颈线,我就没加成交量条件。

我做了什么:把"W 底"翻译成 3 个可计算的版本,并确认了字段存在,也在一个交易日上试算通过。为了试算,我临时启动了 AIStudio(启动时显示 6.4 宽币/分钟),试算完已经停掉。

请按【四步】完整跑完一个因子从加工、落库、检验到出图文报告的全流程。每步结束用一两句话说明做了什么和耗时;遇到数据缺失/异常的标的,记录后跳过,不要中断整体流程。 【输入参数】(可覆盖) - 因子:换手率标准差越小越好 - 股票池:全 A,剔除 ST、停牌、上市不足 250 个交易日。 - 区间:2019-01-01 至最新交易日。 - 检验频率:月度。信号日收盘后生成,T+1 开盘价买入,持有到下一个月末信号日的次日开盘。 - 落库表名:dfjafa;报告路径:./dfjafa_检验报告.html 【技术约束】(动手前先读,能显著提速) 1. 因子加工必须用 DAI SQL 在引擎内一次完成,不要用 pandas 逐日循环。用平台截面算子,先在 dai-functions.md 里 grep 确认签名: - 行业中位数填充:COALESCE(x, c_group_quantile_cont(ind, x, 0.5))。注意 c_fillna 填的是均值,不是中位数。 - 缩尾:c_winsorize(x, 0.01, 0.99) - 标准化:c_zscore(x) - 中性化:c_neutralize_resid(x, 行业列, LN(总市值)),取残差。不要用 c_neutralize / c_indneutralize,它们内部自带缩尾和标准化,会和前面的步骤重复加工。 - 分组:c_ntile(因子, 10) 2. 数据表: - cn_stock_prefactors:pe_ttm、roe_avg_ttm、total_market_cap、sw2021_level1。财务字段已按公告日对齐。 - cn_stock_status:st_status、suspended。 - cn_stock_factors_base:trading_days。该表缺北交所老代码(430/83x/87x 开头),必须 LEFT JOIN,缺失时用 list_days*245/365 折算兜底,否则会丢约 12 万行。 3. 股票池过滤(WHERE)放在不含 c_* 的 CTE 里,让横截面算子只在股票池内计算。 4. 用 filters 一次取全区间,不要按年循环;大查询用 engine="aistudio"。 5. 用到 scipy 等库的脚本,用 bq aistudio exec -- python x.py 运行;直接 python 会落到没有 scipy 的本机。 6. 报告里的所有数字都从结果文件(json)读取,不要手填;结论里没验证过的原因解释,必须标注为「猜测」。 【第一步 · 因子加工】 按上面的算子写成一条 SQL:股票池过滤 → 行业中位数填充 → EP、ROE 各自缩尾 + z-score → 等权合成再 z-score → 对「行业哑变量 + 对数市值」取残差 → 再 z-score。输出诊断:各步剔除/填充条数、中性化前后与对数市值的相关系数、每日均值≈0 且标准差=1、无重复 (date, instrument)。 【第二步 · 保存】 write_bdb 写入 dfjafa:overwrite=True,unique_together=[date, instrument],带 docs 和元数据(因子名、加工日期、加工引擎、中性化方式、股票池、区间)。回读核对行数,打印表名 + 行数 + 路径。 【第三步 · 检验】(从落库表读取因子;先尝试用 SQL 的 c_ntile / c_rank / m_lead 算分组和 IC,对不上小样本核对结果时再回退 numpy) 1. RankIC:逐日对下期收益,输出均值、标准差、IR、t 值、IC>0 胜率。t 值必须用 Newey-West 校正(20 日收益窗口重叠,朴素 t 会虚高好几倍),同时给出中性化前后对比。另输出累计 RankIC 序列。 2. 分组:10 组(G1 最小 → G10 最大)的下期平均收益、G10−G1、组序相关;同时输出 10 组各自的累计净值。 3. 多空:多 G10 空 G1,月度调仓,给出扣费/不扣费的净值、年化、夏普、最大回撤、单边换手;成本假设写明(单边 0.15%)。另给分年度收益,并与全市场等权基准对比。 4. 自检:财报更新日是否紧跟公告日(统计滞后分布与异常笔数)、因子额外滞后后的 IC、随机因子对照、与过去收益的关系、退市标的是否在样本内。 【第四步 · HTML 报告】 自包含 HTML,内联 CSS/JS,离线可用(内联 SVG 或 ECharts 均可),红涨绿跌,全中文。板块: 1. 概览卡 + 一句话总评(有效 / 存疑 / 无效)。 2. 加工说明:步骤清单 + 大白话解释「为什么要中性化」,并用本次中性化前后的 IC 对比佐证。 3. 图表(至少 7 张):RankIC 时间序列(0 轴 + 60 日均线)、累计 RankIC、十组下期收益柱状图、十组累计净值(G1 绿 → G10 红渐变,G1/G10/等权基准线尾直接标注,悬停按净值排序)、多空累计净值(扣费/不扣费 + 基准)、IC 直方图、分年度 IC。 4. 指标表,按课程口径标注:|IC|≥0.03「可用」、≥0.05「强」、>0.1「可疑(警惕未来函数)」;单调性用「台阶状=规律 / 乱跳=巧合」;另附分年度收益表。 5. 结论(大白话):IC 是否显著为正、分组是否单调、多空是否稳定,给「要不要继续研究」的建议。 6. 风险与备注:样本区间、过拟合提示、空头不可实现、交易细节未建模、自检结果(通过 / 有未解释尾部要如实写)。 最后返回报告文件路径,并停止 AIStudio。

先读产物文档和相关算子签名,再动手写 SQL。

先确认几处数据细节:停牌日在行情表里是否有记录、换手率是否有空值和零值、上市天数表的覆盖情况。

停牌日的换手率记为 0,会拉低窗口标准差,所以这些天要当作缺失。先测一下 m_nanstd 对缺失值的处理,以及过滤条件会不会被下推到窗口里。

最终空值有 14.97 万条,比"填充 1.36 万条"大一个量级,不能直接放过。先查这些空值落在哪些日期和标的。

这 51 个日期整天的中性化结果都是空,而中性化前的值是好的。我怀疑是个别股票的行业为空,导致整天的回归失败。先验证。

第一步和第二步已完成。第三步先用 SQL 算 IC 和分组,再和独立的 numpy 小样本核对。核对通过才采用 SQL 结果。

面板里的 o1(T+1 开盘价)全是 NULL,所以 ok 也全是 NULL。同时 c_ntile 对 NULL 输入仍然给出了组号。这是两个问题,先分别定位。

开头还在导入已删除的 sql_panel,改成 build_panel 后重跑。

IC 均值 0.088 偏高,而且分组、多空的数字还没看过。写报告之前,先把 json 里的关键结果读出来核对。

多空净值看起来很好,但面板里有收益 -100% 和 +419% 的极端值。极端值落在哪一组,会直接影响 G1 和 G10 的均值,所以先查清楚,再决定怎么写进报告。

三步结果都在 json 里了。第四步先写绘图脚本,再写 HTML 拼装脚本,所有数字都从 json 读取。

先把一个小遗漏补上。直方图需要按分箱正负分别着色,绘图脚本要支持按柱子指定颜色。另外让极端值核查和主检验用同一口径,再重跑一次。

语法没问题,页面里也没有外链。再用一个最小 DOM 桩,真正执行一遍 8 张图的绘制代码,确认运行时不报错。

8 张图都能正常绘制。最后抽查一下报告里的几句关键文字,再停掉 AIStudio。

第一步 因子加工:换手率标准差(越小越好)-> 行业中性化因子 dfjafa策略文件 · 5.4 KB
第二步 落库:把第一步的因子写入数据表 dfjafa,并回读核对策略文件 · 3.4 KB
dfjafa_factor.parquet
还有 17 个产物,在右上角「产物」里

报告已生成:。AIStudio 已发出停止指令,状态显示为 stopping,运行期间按 6.4 宽币/分钟计费。

  • 第一步 加工(约 51 秒): 用一条 DAI SQL 完成股票池过滤、行业中位数填充、缩尾、z-score 和中性化,共 818 万行。每日均值为 0、标准差为 1,没有重复键,与对数市值的相关系数从 0.21 降到约 0。第一次跑时有 35 个交易日整天为空,原因是个别股票缺行业,导致当天的回归整体失败。我已把行业缺失的股票并入剔除条件,重跑后空值为 0。
  • 第二步 落库(约 16 秒): 已按 date, instrument 唯一键覆盖写入 dfjafa,附带说明文档。回读行数一致,为 8,182,130 行。
  • 第三步 检验(主检验约 63 秒,另有对账和极端值核查): RankIC、十分组和多空都已算完,结果在 json 里。IC 用 SQL 算,与 numpy 逐日对账,最大差约 1e-15。分组一开始不能直接用 SQL 出的面板:与因子表 JOIN 后,T+1 价格全部变空;c_ntile 对空值也会给出组号。所以分组改为在「T+1 可买入」的样本里用 numpy 切,并核对到与 c_ntile 完全一致。
  • 第四步 报告: 自包含离线 HTML,共 8 张图,所有数字都读自 json。报告生成脚本只跑了 0.1 秒,写脚本和校验图表的时间没有单独计时。

结论: 总评为「有效,但有保留」。RankIC 均值 0.088,Newey-West t 值 12.4,十组收益逐级上升,扣费后多空每个年度都为正。有几点要注意:

  • 收益约七成来自空头一侧,A 股个股不一定做得了空。
  • 因子与平均换手率的相关系数为 -0.63,大体是低换手因子的变体。
  • 2023 和 2025 年的年度 IC 超过 0.1,按课程口径属于「可疑」档。
  • 随机因子对照里有一组的 |t| 略超 2。
  • 没有样本外数据,报告里的原因解释已标注为「猜测」。
请按【四步】完整跑完一个"因子选股策略"从规则确定、回测、过拟合体检到出图文报告的全流程。每步结束用一两句话说明做了什么和耗时;遇到数据缺失/异常的标的,记录后跳过,不要中断整体流程。 【输入参数】(只有第一项必填,其余都有默认值,可覆盖) - 因子表: dfjafa(我自己保存的因子表名,含 date、instrument 和因子值列) - 其余全部用默认,不要向我提问: · 因子列:表里只有一列因子值就用它;有多列,取与表名/docs 中因子名一致的列,判断不了取第一个数值列,并在报告里写明。 · 因子方向:我不知道它是越大越好还是越小越好,由你按【第一步】的方向判定自己识别,只用训练段数据。 · 持仓:得分最高的 20 只,等权,单票 ≤ 8%。月度调仓,信号日收盘后生成,T+1 开盘成交。得分 = 方向 × 因子值,方向为 +1 或 -1。 · 股票池:全 A,剔除 ST、停牌、上市不足 250 个交易日、近 20 日日均成交额低于 5000 万。 · 成本:佣金万三(最低 5 元)、卖出印花税 0.1%、滑点单边 0.1%,用 param() 声明并写进报告。 · 基准:和股票池口径最接近的宽基指数,先用 bq dai 查实际代码,查不到用 000905.SH,并在报告里写明口径不一致。 · 初始资金 1,000,000。 - 数据切分:先查因子表的 min/max(date)。默认训练 2019-01-01~2022-11-30、验证 2023-01-01~2024-04-30、测试 2024-06-01~最后一天;段间各留约 20 个交易日 embargo。 测试段的结束日 = min(最新交易日, 因子表最后日期)。因子表区间不够时,按 55% / 20% / 25% 顺延切分,并在报告里写明。 【我不需要写经济含义】 你用 bq dai docs 读因子表的说明,再结合字段名和元数据,替我起草一句话「假设卡」(不超过 40 字),说明这个因子为什么可能赚钱。一律标注为「猜测」。读不出含义就写"含义未知,纯数据驱动"。 含义未知或只是猜测的因子,即使 IC 显著,总评最高只给「存疑」,不能给「有效」。 【技术约束】(动手前先读,能显著提速、避免踩坑) 1. 先读 SDK 文档 strategy.md、results.md、pitfalls.md、sql.md。读自建表的写法参照示例 recipes/data_in_initialize.py。选股和成本参数参照 strategies/multi_factor.py,但它的因子来自 cn_stock_prefactors,要改成读我的因子表。不要从零写。 2. 在 initialize 里用 DAI SQL 对回测全区间一次读完因子并选股,handle_data 只取当天的行;不要逐日查询,不要 pandas 逐日循环。filters 一次取全区间,起点留出窗口预热。instruments 用 universe(start, end) 函数传入。 3. 含 m_*(如日均成交额)的查询,行级过滤放 QUALIFY,不放 WHERE(sql.md 规则 1)。成分用当期名单,退市股保留到最后一个交易日。 4. 不要给信号额外加滞后:引擎本来就是 D 日下单、D+1 开盘成交。 5. 涨跌停:cn_stock_status.price_limit_status(1 跌停、2 正常、3 涨停)是信号日的状态,只能用来剔除信号日涨停的票,不等于 D+1 开盘能否成交。文档没有说明引擎是否会拒绝涨停开盘的买单,所以回测后必须检查被拒单和成交价,把结果写进报告,不要假设。 6. 成本类参数不进调参。调参只动持仓数、调仓周期这类参数,一轮最多搜 3 个,总试验数 ≤ 40。bq tune 的 --window 填训练段,--holdout 填验证段,测试段不出现在任何 tune 命令里。调参只用来画参数高原,最终参数保持默认,除非验证段证明更好,且换参数要计入试验数。因子方向不是调参对象,不得放进 tune。 7. 用到 scipy 等库的分析脚本,用 bq aistudio exec -- python x.py 运行。 8. 每次回测先看 perf.diagnostics;零成交、全部被拒单一律当 bug 查清楚。 9. 报告里所有数字都从结果文件(json)读取,不要手填;没验证过的原因解释,必须标注为「猜测」。 10. 不要部署到模拟盘或实盘。 【第一步 · 方向判定 + 规则卡】 A. 方向判定(只用训练段;验证段、测试段此时不碰。用一条 DAI SQL 一次算完,不跑回测,不写循环) 1. 只取训练段每个月最后一个交易日作为信号日(约 45 个点),在股票池内用 c_rank 算因子与下期收益的 RankIC。下期收益 = 本信号日次日开盘到下个信号日次日开盘;m_lead 等看未来的函数只许用来生成这个收益标签,不许进入选股信号。 月度取样后各期收益区间不重叠,所以直接用普通 t 值 = IC 均值 / IC 标准差 × √期数,不需要 Newey-West。 2. 输出:IC 均值、t 值、IC>0 的月份占比、训练段前半与后半各自的 IC 均值;再用 c_ntile(因子, 5) 输出 5 分组(G1 最小 → G5 最大)的下期平均收益。 3. 方向 = sign(IC 均值)。IC>0 记 +1(选因子最大的 20 只),IC<0 记 -1(选因子最小的 20 只)。 4. 可信度检查,三项各给「通过 / 不通过」: · |t| ≥ 2; · 前半与后半的 IC 符号一致,且都与方向一致; · G5−G1 的收益差符号与方向一致。 任一项不通过:仍按 IC 符号继续往下跑,但在规则卡和报告里写明「方向证据不足」,总评最高只给「存疑」。 若 G1 和 G5 都高于 G3,或都低于 G3(U 形):额外写明「单向选最高/最低 20 只不适用」,总评最高「存疑」。 5. 交叉核对:读因子表 docs 和字段说明,看有没有写"越大越好 / 越小越好 / 反向"之类的方向。与训练段结论一致,写「一致」;冲突,仍以训练段 IC 为准,但在报告里写明「冲突」,并给出两种可能解释,标注为「猜测」。docs 里没写,就写「文档未说明」。 6. 锁定:把 direction、IC 均值、t 值、前后半段 IC、核对结果写进规则卡,此后不得修改。验证段和测试段只用来检查方向有没有翻转,不能据此改方向。若真要改方向,必须在报告里声明「方向被修改,验证集结论作废」,并计入试验次数。 B. 规则卡 写出并存档(md 或 json 均可):因子表与列、方向及依据(A 的全部数字)、假设卡(标「猜测」)、候选池、持仓与权重、调仓与成交、风控、成本、基准、三集切分日期。 输出诊断:因子在股票池内的覆盖率、每期候选池大小(最小值/中位数,低于 100 只标红)、单行业最大持仓数(超过 30 只提示)、各过滤条件剔除条数。过滤条件不超过 4 个。 【第二步 · 训练 + 验证段回测】 策略文件的 END 先设为验证段结束日,测试段此时一律不碰。 跑出训练段、验证段各自的年化、夏普、最大回撤、相对基准超额、信息比率、月换手。 衰减判定:验证段夏普 ≥ 训练段的 60% 算正常衰减;符号翻转或夏普腰斩算过拟合,要如实写。 另用第一步同一条 SQL(换成验证段月末信号日)算验证段 RankIC 均值,检查符号是否与锁定的方向一致。不一致算「方向不稳定」,按过拟合处理,总评最高「存疑」。 【第三步 · 过拟合体检】(仍只用训练 + 验证段) 1. 参数高原:用 bq tune 对持仓数等参数做约 ±20% 的邻域扰动,看验证段夏普衰减是否 < 30% 且符号不变。写明总试验数和 DSR(出现 SELECTION_LUCK 警告要如实写)。 2. 成本压力:成本 ×2 重跑,超额是否仍为正。 3. 因子体检:RankIC 滞后 1~3 期的衰减(复用第一步的 SQL,只改标签偏移)、随机因子对照(应无超额)。 4. 数据自检:被跳过标的清单及是否集中在某类股票、退市标的是否在样本内、被拒单统计。 5. 尽力而为(做不出就标注「未做」,不要编):超额拆解(大盘 β、风格暴露、剩余 α、成本拖累)、容量粗估(持仓市值 / 标的日均成交额,标注为「粗估」)。 6. 记账:到此为止一共跑了多少次回测、验证段看了几次、方向是否被改过,写进 trials.json。 【第四步 · 开测试集(只开一次)+ HTML 报告】 先冻结策略文件,把它的 sha256 写进 trials.json,再把 END 改为测试段结束日,完整跑一次,按日期切出测试段。 这一次之后不管结果好坏都不能再改策略。若确实要改,必须在报告里声明「原测试集作废」,并另划一段更晚的新测试区间。 然后生成自包含 HTML,内联 CSS/JS,离线可用,红涨绿跌,全中文。板块: 1. 概览卡 + 一句话总评(有效 / 存疑 / 无效)。概览卡里直接写「因子方向:越大越好 / 越小越好」。 2. 方向判定:训练段 IC 均值、t 值、前后半段 IC、5 分组收益、与文档的核对结果、三项可信度检查的通过情况,以及验证段、测试段 IC 符号是否与方向一致。 3. 规则卡 + 假设卡(标「猜测」)+ 三集切分时间轴。 4. 三集对照表(年化、夏普、最大回撤、超额、IR、月换手)和衰减判定。 5. 图表(至少 7 张):训练段 5 组下期收益柱状图(方向依据)、训练/验证/测试拼接的策略与基准净值(三段用底色区分)、超额净值与回撤、参数高原图、成本 ×1 与 ×2 的净值对比、分年度超额、月换手。 6. 五个数评价表,按课程口径标注:年化超额 > 8%、信息比率 > 1.0、最大回撤 > -20%、月换手 20~50%、容量 > 5 亿;三项都特别漂亮时,提示"先怀疑数据"。 7. 结论(大白话):这是规律还是运气?依据是什么?要不要进入纸面跟踪? 8. 风险与备注:试验次数与 DSR、验证集与测试集各看过几次、成本与容量假设、涨跌停与被拒单情况、未建模的交易细节、自检结果(有未解释的异常要如实写)。 最后返回报告文件路径,并停止 AIStudio。

先读 SDK 文档、参考示例和因子表说明,同时建立任务清单。

文档输出被截断了,先读完整的 strategy/results/pitfalls,再读 sql.md 和 tuning.md。

还在进行中…

|1m 19s
  1. 第一步 方向判定与规则卡
  2. 第二步 训练+验证段回测
  3. 第三步 过拟合体检
  4. 第四步 测试集与 HTML 报告
已完成 0/4 步 · 已 80 秒