
1. 为什么量化投研的终点不是策略而是知识库做量化投研的人大多经历过这个阶段策略写了一堆回测跑了几百次因子库越堆越大但真正能沉淀下来、下次还能直接复用的东西少得可怜。问题出在哪不是策略不够好而是知识没有形成结构化的长期记忆。每次换一个标的、换一个市场环境之前踩过的坑、验证过的逻辑、记录过的参数全都散落在各种临时笔记、聊天记录和代码注释里找不回来。我自己的量化工作流里最核心的转变就是把 Obsidian 当作整个投研体系的“长期记忆层”而 OpenClaw 这类 AI Agent 则充当“智能体养料库”的消费者——它从知识库里读取结构化的投研笔记再基于这些笔记做推理、生成策略草案、辅助因子筛选。这个组合解决的核心问题是让 AI 不是从零开始帮你做投研而是站在你过去所有积累之上帮你做投研。这篇文章适合两类人一是已经在用量化工具但知识管理一团糟的从业者二是想把 AI Agent 真正接入自己投研流程、而不是只拿来聊天的探索者。我会从知识库的目录设计、Markdown 的写法规范、OpenClaw 的接入逻辑、以及实际跑起来之后踩过的坑完整拆一遍。2. Obsidian 作为投研记忆层的目录与字段设计2.1 为什么不能按“文件夹思维”建库大多数人第一次用 Obsidian习惯性地建一堆文件夹策略、因子、数据、复盘、研报。用了两个月就发现一篇笔记往往同时属于“因子”和“复盘”放哪个文件夹都不对。Obsidian 的核心优势是双向链接和标签体系而不是文件夹层级。文件夹只用来做粗粒度的领域隔离真正的知识关联靠链接和属性字段。我的做法是顶层只保留四个文件夹00-Inbox所有临时想法、剪藏、未整理内容先扔这里每周清一次10-Research投研主库所有策略、因子、标的分析都在这20-Agent专门给 OpenClaw 读取的结构化笔记格式要求最严格90-Archive已失效或过期的内容保留但不参与检索这个划分的逻辑是Inbox 保证输入不阻塞Research 保证知识有归属Agent 保证机器可读Archive 保证库不膨胀。很多人知识库越用越乱就是因为没有 Inbox 和 Archive 这两个缓冲层所有东西都往主库里塞。2.2 投研笔记的 YAML 属性字段规范Obsidian 的 PropertiesYAML frontmatter是让笔记从“给人看”变成“给机器读”的关键。我在10-Research下的每篇笔记都强制带这几个字段--- type: strategy | factor | review | data status: draft | verified | deprecated market: A股 | 港股 | 美股 | 期货 frequency: daily | weekly | monthly created: 2026-01-15 updated: 2026-02-03 tags: [动量, 小市值, 换手率] confidence: 1-5 ---type决定这篇笔记在 Agent 里的用途status决定它是否参与检索confidence是我自己打的置信分1 分是“拍脑袋想的”5 分是“实盘验证过的”。OpenClaw 在读取时会优先加载status: verified且confidence 4的笔记作为推理依据这样能有效避免 AI 拿一堆没验证过的想法去生成策略。提示YAML 字段名尽量用英文值可以用中文。Obsidian 的 Dataview 插件对英文键名兼容性更好而且后续如果要导出给其他工具用英文键名不用做映射转换。2.3 双向链接在因子研究中的实际用法举个具体例子。我研究“换手率因子”时会建一篇换手率因子-日频.md然后在里面链接到流动性因子族.md、小市值效应.md、2025Q4-小盘股复盘.md。这样当我在看复盘笔记时反向链接面板会自动显示“换手率因子”这篇笔记我立刻知道这个复盘和哪个因子相关。这种关联在量化投研里价值极大因为因子之间往往有隐含的相关性你今天研究动量明天研究换手率如果不做链接很可能重复劳动。Obsidian 的图谱视图能直观看到哪些因子节点连接密集连接密集的区域往往就是你的核心能力圈。3. Markdown 写法决定 Agent 能不能读懂你的笔记3.1 标题层级就是 Agent 的解析路径OpenClaw 这类 Agent 读取 Markdown 时是按标题层级来切分语义块的。如果你的笔记标题层级混乱比如一级标题下直接跳到四级标题或者用加粗代替标题Agent 的解析就会出错要么把整篇当成一个块要么切得支离破碎。我的规范是一篇笔记只用一个 H1就是文件名对应的标题所有内容用 H2 和 H3 组织H2 之间不嵌套超过两层。比如一篇策略笔记的结构# 双均线趋势策略-日频 ## 策略逻辑 ## 参数配置 ### 均线周期选择 ### 止损规则 ## 回测结果 ## 实盘表现 ## 失效条件这样 OpenClaw 读取时能清晰知道“参数配置”下面有两个子块“回测结果”是独立块。后续如果我要让 Agent 基于这篇笔记生成变体策略它能准确提取“参数配置”部分做修改而不会动到“策略逻辑”。3.2 表格和代码块是 Agent 的“高营养区”Markdown 表格在投研笔记里特别重要因为参数对比、回测指标、因子暴露这些天然就是表格结构。但很多人写表格时格式不规范比如列数不统一、用空格对齐而不是用管道符导致 Agent 解析出来是乱的。正确的写法| 参数 | 取值 | 说明 | | --- | --- | --- | | 快线周期 | 5 | 短周期均线 | | 慢线周期 | 20 | 长周期均线 | | 止损比例 | 8% | 从最高点回撤 |代码块一定要标注语言类型Python 代码标python配置标yaml命令行标bash。OpenClaw 在读取时会根据语言类型决定是否执行代码分析。我试过不标语言类型Agent 会把代码当成普通文本完全不做语法层面的理解。3.3 数学公式的写法与量化场景量化笔记里经常要写公式比如因子计算公式、风险模型。Obsidian 支持 LaTeX 语法用$...$写行内公式用$$...$$写块级公式。但要注意Agent 读取时对公式的解析依赖你的写法是否标准。比如夏普比率$$Sharpe \frac{E[R_p] - R_f}{\sigma_p}$$这种标准写法OpenClaw 能识别出这是一个公式块并在生成策略说明时正确引用。如果写成Sharpe (Rp - Rf) / sigmaAgent 只能当普通文本处理无法做符号层面的推理。注意如果你的笔记要导出给其他工具比如转 Word 或 Excel公式写法要提前确认目标工具的兼容性。Obsidian 原生支持 LaTeX但导出到 Word 时可能需要 Pandoc 做转换部分复杂公式会失真。4. OpenClaw 接入 Obsidian 知识库的完整链路4.1 OpenClaw 读取知识库的三种模式OpenClaw 接入 Obsidian 不是简单地把整个库喂给模型那样 token 消耗巨大且噪音太多。实际可用的有三种模式模式一全量索引 向量检索。把整个库做 embeddingAgent 根据问题检索相关笔记。适合库规模在 500 篇以内优点是配置简单缺点是检索精度依赖 embedding 质量。模式二结构化筛选 按需加载。Agent 先读 YAML 属性根据type、status、confidence筛选出候选笔记再加载正文。适合库规模大、笔记质量参差不齐的情况我目前用的就是这种。模式三专用 Agent 库。在20-Agent文件夹里只放经过人工整理、格式严格的结构化笔记Agent 只读这个文件夹。优点是可控性最强缺点是需要额外维护一份“精简版”。我的建议是模式二为主、模式三为辅。日常检索用模式二覆盖全库关键策略生成时切到模式三保证输入质量。4.2 环境准备中最容易忽略的细节OpenClaw 部署本身不复杂但接入 Obsidian 时有几个坑我踩过第一文件路径编码问题。Obsidian 库路径如果包含中文或空格OpenClaw 在读取时可能报错。解决办法是把库放在纯英文路径下比如D:/vault/quant然后在 Obsidian 里用符号链接指向实际位置。第二Markdown 换行符差异。Windows 下 Obsidian 保存的换行是\r\nLinux 环境下 OpenClaw 读取时如果没做兼容会把两行合并成一行。我在配置里加了newline: auto参数才解决。第三附件文件夹的排除。Obsidian 库里的图片、PDF 附件如果不排除Agent 索引时会浪费大量时间。在 OpenClaw 配置里明确exclude: [attachments/, *.png, *.pdf]。4.3 让 Agent 真正“理解”投研笔记的提示词设计OpenClaw 读取笔记后怎么让它输出有用的东西取决于你的提示词。我常用的一个模板你是一个量化投研助手。以下是我知识库中的相关笔记 {notes} 请基于这些笔记完成以下任务 1. 提取所有已验证status: verified的因子逻辑 2. 指出笔记之间可能存在的逻辑冲突 3. 基于 confidence 4 的笔记生成一个策略变体草案 4. 明确标注哪些结论来自笔记哪些是你的推理关键是第 4 点强制 Agent 区分“引用”和“推理”。不加这一条Agent 会把推理结果和笔记内容混在一起你根本不知道哪些是它编的。5. 从笔记到策略一个完整的实操案例5.1 案例背景与初始笔记假设我在10-Research里有三篇笔记小市值因子-月频.mdconfidence 5、换手率过滤-日频.mdconfidence 4、2025Q3-小盘股回撤复盘.mdconfidence 5。三篇笔记都有双向链接YAML 属性完整。我想让 OpenClaw 基于这三篇笔记生成一个“小市值 换手率过滤”的组合策略草案。5.2 Agent 读取与推理过程OpenClaw 先读 YAML筛选出这三篇都满足status: verified且confidence 4然后加载正文。在提示词里我明确要求它从小市值笔记提取选股逻辑和调仓频率从换手率笔记提取过滤阈值和适用市场环境从复盘笔记提取回撤控制条件生成策略草案并标注每个参数的来源笔记输出结果里Agent 给出了一个完整的策略框架每个参数后面都标了[来源: 小市值因子-月频]这样的引用。我检查了一遍参数来源都正确没有编造。5.3 人工校验与回写知识库Agent 生成的草案不能直接用必须人工校验。我校验时发现两个问题一是换手率阈值在复盘笔记里是针对日频的但小市值策略是月频调仓阈值需要调整二是止损条件在复盘笔记里写的是“从最高点回撤 15%”但小市值策略波动更大这个阈值偏紧。调整完之后我把最终版本作为新笔记写回10-ResearchYAML 里标status: draft、confidence: 3并链接回原来三篇笔记。这样就形成了笔记 → Agent 推理 → 人工校验 → 新笔记的闭环知识库在每次循环中都在增长。6. 踩过的坑与长期维护经验6.1 笔记膨胀与检索失效用了半年后我的库涨到 800 多篇检索开始变慢Agent 返回的结果里噪音明显增多。排查后发现大量status: draft的笔记从未更新一直躺在库里被索引。解决办法是每月做一次库清理把超过 3 个月未更新且confidence 2的笔记移到90-ArchiveAgent 配置里排除 Archive 文件夹。清理后检索速度恢复结果质量也明显提升。6.2 Agent 幻觉与笔记质量的关系我一度以为 Agent 幻觉是模型问题后来发现大部分幻觉来自笔记本身写得模糊。比如笔记里写“换手率阈值大概在 5% 左右”Agent 就会把“大概”理解成可以自由发挥生成时给出 3% 到 8% 的各种版本。后来我强制要求所有进入20-Agent的笔记参数必须写精确值不允许出现“大概”“左右”“可能”这类模糊词。改完之后Agent 输出的参数稳定性大幅提升。6.3 多设备同步的注意事项我同时在台式机和笔记本上用 Obsidian通过同步盘做同步。踩过的坑是同步冲突会产生.md文件的副本比如策略笔记 (冲突副本).md这些副本会被 Agent 当成独立笔记索引导致重复内容。解决办法是在 OpenClaw 配置里加文件名过滤排除包含“冲突副本”的文件。同时养成习惯每次切换设备前先手动同步一次减少冲突概率。6.4 长期维护的核心原则用了大半年我总结出三条维护原则第一Inbox 每周清空。不清理的话Inbox 会变成第二个垃圾库而且 Agent 索引时会把这些未整理内容也读进去。第二每篇笔记必须有 updated 字段。没有更新日期的笔记你根本不知道它是不是过期了。我现在的习惯是每次修改笔记顺手更新updated字段。第三Agent 生成的内容必须回写。很多人让 Agent 生成完就直接用了不写回知识库。这样下次遇到类似问题Agent 还是从零开始。回写之后知识库才真正在“养”Agent。7. 关于这套组合的一些个人体会这套 Obsidian OpenClaw 的组合我用了大半年最大的感受是它改变的不是效率而是投研的复利方式。以前做投研每次都是线性投入做完一个策略经验留在脑子里换个场景就重新来。现在有了结构化的知识库和 Agent 的消费能力每次投研的产出都会沉淀成笔记笔记又成为下次 Agent 推理的养料形成复利。当然这套东西不是没有成本。前期建库、定规范、调 Agent 配置大概花了我两周的业余时间。但两周之后每次做新策略的时间从原来的两三天缩短到半天而且质量更稳定因为 Agent 会提醒我“你之前在类似场景下踩过这个坑”。如果你刚开始我的建议是不要一上来就追求完美规范。先用 Obsidian 记起来哪怕格式乱一点先让笔记量上去。等积累到 100 篇左右你自然会感受到哪些字段有用、哪些结构合理那时候再回头统一规范比一开始就设计一套复杂体系要实际得多。Agent 接入也是同理先用最简单的全量索引跑通再逐步优化筛选逻辑。最后分享一个小技巧我在20-Agent文件夹里放了一个_agent-config.md里面写清楚每类笔记的用途、字段含义、以及我希望 Agent 遵守的规则。OpenClaw 每次启动时先读这个文件相当于给 Agent 一份“使用说明书”。这个做法让 Agent 的输出稳定性提升了很多尤其是多轮对话时它不会跑偏。