MoreRSS

site iconPrologue | 槐序修改

00后,梦想成为自由职业者
请复制 RSS 到你的阅读器,或快速订阅到 :

Inoreader Feedly Follow Feedbin Local Reader

Prologue | 槐序的 RSS 预览

烧了一百亿Token后的Harness Agent交互感想

2026-11-10 08:00:00

烧了一百亿Token后的Harness Agent交互感想

前言

先说下我对三大工具的理解:

工具 使用体验 优势 劣势
Codex 功能较为全面,GUI友好,内置browser use、Office编辑等原生支持,整体使用体验综合了办公与代码场景,与此同时,今年Codex与ChatGPT的产品线与额度计费都融为一体 开箱即用,万金油,应用场景多,支持沙箱 搭配非OpenAI家的模型效果一般
Claude Code 大型项目首选,CLI极简设计,专注于代码场景,支持Git Workflow,软件工程上较为严谨 搭配Claude Code自家Skills与模型使用体验是最好的 软件设计上最重,三大工具中占用最多上下文,Claude家模型贵、容易被封号,使用非Claude模型任务完成度一般
Cursor 结合了传统IDE的优势,支持代码DIFF,方便对AI生成的代码与变更进行Review和Merge,如果对AI自动改代码不放心,用它就对了,GUI友好 与传统IDE结合,功能最为完整 Grok模型输出较为缓慢,订阅费用不菲

目前的Vibe Coding工具栈都优先适配自家模型做后训练,用非自家模型在/goal模式下会出现长任务会中途中断或直接放弃任务。

海外模型的试错与折腾成本太高,所以我在实际项目中基本都是用Deepseek V4.1 Flash 1017模型 和 Deepseek Harness(简称DSH)作为脚手架,我认为这是最适合学习与试错的架构,无需担心天价账单,可玩性高。实际上我还是有开IDE去看实际代码改动(实在是不放心,对模型没信心),AI一旦往错误的方向挖坑,必须及时提示,否则浪费时间和token。

烧了141亿token,只花费567元,基本上是在下班后用的,所以都是按空闲时段(每百万token输出4元)收费
烧了141亿token,只花费567元,基本上是在下班后用的,所以都是按空闲时段(每百万token输出4元)收费

注:本文内容是基于2026年11月时间节点完成的,技术发展日新月异,注意时效性,不代表在未来有参考价值。

基本概念

概念 描述 要点
Skills 可以理解为可智能路由、按需启用的提示词模板,从而无需重复注入提示词 宁缺毋滥,skills最好是高度模板化且未被内化到模型能力层,例如“如何写一份报告”这样的skill可以被删除,过多的提示反而影响模型发挥,也就是思维链的冗余;相反,若是“软件著作权申请材料规范”的skill就非常有价值,所以优秀的skills最好是对特定场景有针对性,而非通用的、看起来啥都能干的
MCP Agent上下文的API,为了获取更多可用数据 MCP同样占用大量上下文,按项目级按需启用,MCP用于拓展特定领域的信息源,如召回公司财务、创新药管线、城市天气等最新数据
联网搜索 可以理解成模型层的搜索引擎 补充外部信息来源,拓展上下文,但互联网上的脏数据会影响任务交付程度,取决于模型层的数据质量,不同数据源差异较大
Tools 模型与本地进行基本的交互,CLI命令行和JSON信息交互是最常见的,如powershell命令行、playwright前端浏览器测试、browser use插件、office编辑工具 要让Agent了解或能够感知到到当前本地的开发环境、依赖项,决定最终能用哪些工具,而不是模型到处试错碰壁,提前准备好需要用的开发环境

不难看出,影响Harness Agent任务交付质量的因素非常多,模型层可能是其中方差较小的一环。

使用技巧

  • Plan模式不是必须的,大部分Harness软件给Plan模式设计时是只读权限,会影响持久化与思考深度,对于长任务,多轮问答后生成Plan文档的效果更好,即先生成Plan与持久化记忆的上下文变成Markdown文件;
  • Goal模式要讲清楚交付的目标或完成条件;
  • 密码一定要用ENV环境变量,不要让模型直接读密钥;
  • 沙箱和git worktree严谨的软件工程设计,但不是必须的;
  • 不要让AI一上来就一把梭。用AI至少先描述背景、需求、改动方向,AI返回一版设计与需求方案,让AI反问自己对齐需求,再做MVP(最简可行产品)或demo,整体技术栈、主要功能的实现路线确定后,再形成最终版本的Plan,核对方案,再开启完全权限完成开发。尽可能避免让AI自己发挥,只让AI去做一些基础功能实现,不要让它发散思考,人工Review Plan,修订方案的收益是最大的,不可忽视;
  • 不要在Agent完成最终产出后再去改,只会越改越多bug,尽量在计划方案时就写清楚;
  • 充分利用代码规范、测试、CI/CD工具,Pytest、Vitest、ESLint、Prettier,每完成一个功能实现务必增加一个测试案例来验证当前功能实现的路径,如果是数据抽取工作,那就要维护金标集,能尽可能避免AI生成bug;
  • 必要时增加测试、验证、对抗式生成检验、审计;
  • 新的前端项目最好先用Figma产出原型图,再用插件导入,再手动写需求文档(不需要很规范,但讲清楚每个功能的预期行为即可);
  • 模仿Claude Code的Ultra Code Workflows原理,拆解任务,拆分多个不相互依赖的子任务给多个Agent并行开发,大幅提高开发效率;
  • 形成持久化记忆和知识库,我用的是阿里AgentScrope的ReMe,每个对话结束后就会总结形成带Frontmatter的日记,定期会整理记忆形成知识库,也就是这部分记忆会保持更新,新对话使用是用MCP的BM25或向量召回方式读取记忆加载到上下文;
  • 遇到模型不擅长的非代码类的开发任务,可以适当下载基本相关的电子书、任务规范等,交给模型进行蒸馏、总结对当前项目有用的内容,并汇总成Markdown,再去执行Plan计划步骤,而不是让模型调用大量联网搜索找了更多无关紧要的文本。

接下来讲我这一百多亿token都烧去哪了。

博客UI重构

我让AI帮我生成了一套包含颜色方案、组件样式、交互的UI标准,重构了全局UI:

新博客首页界面
新博客首页界面
文章或微博卡片效果,偏二次元风格
文章或微博卡片效果,偏二次元风格
颜色方案中在白天与黑暗模式下的的渐变与hover颜色
颜色方案中在白天与黑暗模式下的的渐变与hover颜色
component组件样式
component组件样式

我不会让Agent直接帮我改,必须是先生成改动样式的变体,形成有多个变体的html,选择其中一个确认好了再改代码。建议配合anthropics/skills的frontend-designskill使用。

接入Next.js的MCP可直接查询文档内容,以及cache component改进等skills能迁移到Nextjs团队新出的cache component和partial prefetching等新特征,能提高任务的交付程度,再也不用担心因上游各种breanking change做适配。最终交付完成度得到显著提升,原理也很简单:提供高置信度且对当前项目有紧密关系的上下文。

给博客做了基于文章索引和route handler的全站搜索功能
给博客做了基于文章索引和route handler的全站搜索功能

量化想法验证

我花了一百亿的token快速验证(花了大半个月)加密货币截面多空多因子策略的可能性与有效性,我把任务分成以下过程:

  • 接口调用、数据清洗与ETL。经过对多个链上与连下降交易所做A/B测试得到binance家的行情数据信噪比更好的结论,分钟级数据近2TB,接入现货与期货数据,链上数据只接入了EtherScan,一次性补全历史数据并设置轮询,ETL落库到PostgreSQL + TimeScaleDB,前值Fill填充。这里就有第一个显而易见的坑,目前观测交易所上的币种都有幸存者偏差,无数的加密货币项目都走向死亡,如今能通过API查到的都是幸存者;
  • 设计市场Beta。让Agent跑了等权重、BTC唯一、BTC+ETH加权、全市场指数等数种方案作为Beta的候选组合,经过测算验证得到BTC+ETH加权的Beta刻画更好;
  • 构建因子候选集。用了三种因子构建的方法:一是本来就有微观市场逻辑的指标,如大户/全市场多空人数比、合约主动买卖价差比、基差、动量、反转、Beta、ln(市值)等,二是提供基础数据和算子,遗传算法组合,三是起模型去模仿第一种方法按照市场逻辑的语义和模型能力去写因子。根据Rank IC、IR去筛选;
  • 特征选择。用Lasso回归、PCA分析筛选有增量收益的因子,为了保证多个独立因子之间是相互独立,用层次聚类方法保留同一系列表现最好的数个,再剔除掉因子间相关系数高于0.7的,正交化;
  • 预测什么?用T+N的K线收益率的截面Rank以及Alpha(剔除Beta)的截面收益率,实验发现预测后者效果更好;
  • 训练方法。LightGBM、XGBooster等决策树算法回测效果较好,反而用深度学习如TCN、LSTM效果不佳,找不到历史规律,FreqTrade项目中也提到过这个,面对信噪比极低的数据,GBDT模型表现确实更好;
  • 回测。有2021-2026的数据,那么将2021-2024作为训练集,2024-2025作为验证集,测算2026年至今的收益情况,尽管这不是真实的样本外回测,但也足够,中间还学习到组合对称交叉验证(CSCV)框架中的DSR(Deflated Sharpe Ratio,去膨胀夏普比率)、PBO(回测过拟合概率)等回测绩效衡量方法。 (省略无数次返工与循环) 回测结果是日均换手13%,2021-2024以及2026年的年夏普和Sortino都在1.5左右,但唯独2025年亏损(山寨币齐跌),但又将训练集往后挪,再观察2026年至今收益似乎又得到改善,这可能是币圈的周期比较长,数据集不够多,模型只学到了某种regime,结果应该是过拟合的。

还有一些在币圈比较可怕但又不得不考虑的事情:

  • 合约插针扫损,如果在参数中加入止损回测结果大打折扣;
  • 山寨币低流动性轧空,也就是很多散户看到的一个币可以一天涨几十个点的情况,只能通过流动性与合约数据剔除掉部分异常资金费率与流动性欠佳的币种;
  • 滑点,流动性差的币种maker难成交,taker费用高,投资组合优化建议用成本感知方法,加入换手惩罚或换手率上限;
  • 要给代币贴标签,如PoW、PoS、DeFi等,做工具变量,非常麻烦
  • 大部分代币都会退市,消失,要维护黑名单

我认为必须从数据源做功课,互联网上可获取的免费、公开数据带来的Alpha增量很有限,有实质性增量Alpha或风险分散作用的因子也少。

最终的策略是能跑,但是它只是拟合历史大部分时间的周期与模式,加上我缺少PIT(Point in Time)的时点数据,怎么想都感觉不靠谱,还是要将数据层做好也行,数据脏那就去做数据治理。

这个项目先存档了,以后哪天有优秀的数据源再回来研究。

DSH的插件开发

DSH的设计是“一切皆插件”,也就是它暴露基本功能的接口,但不像以上所说的工具一样直接把Skills、MCP、持久化、对话导入导出等功能做成GUI可开箱即用的程度,我为此根据Cursor的设计为DSH开发了两款插件:

  • dsh-mcp-tools,类 Cursor 风格的全局 MCP 控制:自由添加、停用、删除 MCP 接口与工具,适合 MCP 测试、按需请求、拓展上下文等场景。
dsh-mcp-tools插件,在设置中能管理用户的MCP Server,添加、删除、按需开关MCP,并查看MCP工具的介绍文本
dsh-mcp-tools插件,在设置中能管理用户的MCP Server,添加、删除、按需开关MCP,并查看MCP工具的介绍文本

dsh-mcp-tools Github仓库

  • dsh-skills-tools,DeepSeek Harness 的 Skills 管理器。从 Git 仓库或本机目录导入 Agent Skills,按仓库分组管理,随时启用、停用、补齐和查看内容。
dsh-skills-tools插件,在设置中能管理用户的Skills,添加、删除、按需开关Skills,并查看Skills的介绍文本,定期上游仓库检查更新。
dsh-skills-tools插件,在设置中能管理用户的Skills,添加、删除、按需开关Skills,并查看Skills的介绍文本,定期上游仓库检查更新。

dsh-skills-tools Github仓库

可以直接在Deepseek Harness桌面版添加插件页面,输入dsh-mcp-tools或dsh-skills-tools就能直接安装获得和Cursor同款的GUI Skills与MCP插件。

怎样才能用好AI

我可能和大部分人想的不同,我认为用好Agent不需要刻意去学什么MCP、Skills、提示词工程,应该专注于:

  • 认识完成一项任务的基本概念与方法论,例如技术选型,要使用怎样的工具栈搭配;什么是BM25、TF-IDF、向量召回;UI的侧边距移动多少px/REM;诸如此类,掌握某种技术或工作流的集合符号;
  • 理清需求与目标,不需要写的很规范和宏大,想到什么写什么,模型会帮你理顺的,也就是提供当前任务的完整背景;
  • 了解这个任务需要什么资源或支持,提前装好需要的运行库与开发环境,装载对该任务有帮助的MCP和Skills,甚至蒸馏专业书籍与文章的知识,形成长期记忆与上下文持久化;
  • 让模型专注于做完形填空,也就是把完成这项任务所需的一切都喂到模型嘴边,而不是和一些小白一样幻想着几乎零样本提示对着AI许愿。

浅谈评估AI数据标注的准确率

2026-10-13 08:00:00

浅谈评估AI数据标注的准确率

以下文章源自笔者一次关于AI数据标注内容的技术分享的公开演讲

数据标注是数据生产中最基础的一环,而大模型的普及正在改变它的实现方式:不少团队开始让模型批量打标,把非结构化原文加工成标准化的标签 JSON。问题也随之而来——模型打得对不对?如果没有足够的人力做抽样验收,质量评估与提示词改进能不能用工程化的方式完成?

本文沿着三个问题展开:如何科学地改进模型标注的提示词、如何科学地评估模型标签的准确率,以及为什么在缺少完整金标的条件下,刻画标签质量更适合去「证伪」,而不是统计一个孤立的准确率。

模型标注的问题

什么是模型打标

数据标注是指对图片、文本、视频等结构化与非结构化数据进行处理,标记对象的特征与符号。例如文本情感分析、文本枚举分类、信息提取,具体来讲,比如从一份研报里抽取事件的枚举主题与分类字段,或者从会议纪要里提取关联题材。

以往大多依赖无监督学习(如聚类)、有监督学习(分类器)、字符串/分词/正则匹配、人工标注这四种方法。这些方法并没有消失,只是现在多了一种更灵活的方式:让大模型批量完成标注。

大模型自动化标注(模型打标),是指批量调用大模型的对话,把非结构化数据、Skills、提示词、上下文传入,最终稳定输出标准化标签 JSON 的过程。它的整体结构如下图所示。

图表:"非结构化原文研报 / 公告 / 会议纪要" / "标准化 JSON枚举 / 实体 / 数值 / 嵌套对象" / "下游业务表题材召回 / 文本翻译 / 主题提取" / "科学评估标签准确率并改进打标提示词"

问题是:采用了大模型批量打标之后,标签打得对不对,大多数团队仍要靠人工抽检来验收;如果没有这样的人力物力,能不能从软件工程的角度实现自动化的 Review 检验与 Improve 改进?这就是本文想讨论的内容,具体包括三个问题:

  1. 如何科学改进用于模型标注的提示词:编程而非提示;
  2. 科学评估模型标签准确率;
  3. 为什么刻画模型标签准确率更适合去证伪,而不是统计准确率。

模型标注提示词的改进

遇到模型输出不及预期,大部分人都会使用以下提示词优化方法:

问题 具体表现 解决方案
提示词过于零碎,表达不充分 套模板(如 CRISPE 框架),描述清楚字段业务含义,标准化输入输出,适当增加规则 结构规范化 + 指令优化
上下文供给不足 外部数据是否 ETL 到位、临时表是否对齐、JSON 是否正确传入、要不要开联网搜索、联网搜索是否指定了搜索内容、按需联网还是强制联网 想清楚喂哪些上下文进单轮对话
思维链(CoT)与 Skills 冗余妨碍模型能力 随着模型迭代,大部分旧 Skills 和思维链能力已被内化 宁缺毋滥,能删就删,写清楚业务字段口径即可
约束与规则的写法 写「不要 XXX」反而让模型更往那个方向想 改成正向陈述标准
请求参数 effort / temperature / top-p / top-k / 词频惩罚 / batch 批次 全局参数调整,根据模型实际输出情况调试

冗余本身也在伤害模型:Transformer 的注意力是 softmax 归一化,新增 token 会改变权重分配,相关 token 之间会相互竞争;旧技巧堆得越多,真正重要的字段口径反而越容易被淹没。

以上这些旧的提示词方法,可优化的方向太多,就像一个黑盒,且不好诊断,具体表现在以下场景:

  • 针对 Bad Case 的直觉调参:提示词凭感觉改,可能只是在局部「刚好能用」,而非最优解;凭理解瞎调、重跑历史样本、人工注释金标、A/B 对照,费时费力,还可能误伤其他本来正确的 Case,后期还得补规则比对。
图表:"看到一个 Bad Case" / "上线"
  • 模型版本升级:换到新模型后,旧提示词的效果反而变差,一套提示词可能只在某个系列模型上适用,需要重新评估它在不同模型上的适用性。

费尽心思调整出来的提示词,可能只是刚好能用,而不是最优解。提示词的优劣原本是一个可以被度量的东西,我们缺少的只是度量它、搜索它的手段——这正是提示词优化工具要解决的问题。

在庞大而崎岖的解空间里,人工调参往往只能抵达离自己最近的一处局部最优。
在庞大而崎岖的解空间里,人工调参往往只能抵达离自己最近的一处局部最优。

科学优化提示词的方法

提示词优化有两条截然不同的路线:一条在有标准答案的前提下,让程序自动搜索更优的指令与示例;另一条则放弃寻找「标准答案」,转而把模型犯过的错误作为优化信号。下面分别来看。

基于金标集的优化方法

DSPy 是由斯坦福大学自然语言处理小组开发的提示词框架,它主打「编程,而不是提示」,是一种使用 LLM 进行构建的声明式方法,将任务描述为结构化的输入和输出。它不需要手动修改提示词,而是使用「声明程序 + 编译程序」的方式。

DSPy 的三块拼图:签名对应行为,模块对应策略,优化器对应自我改进;三者分别取代手写提示、手工拼接的提示链与人工调参。图源:DSPy 项目文档。
DSPy 的三块拼图:签名对应行为,模块对应策略,优化器对应自我改进;三者分别取代手写提示、手工拼接的提示链与人工调参。图源:DSPy 项目文档。

它的几个核心概念构成了一套最小抽象:

原语 类比 作用
Signature(签名) 函数签名 声明任务契约:任务描述(字段业务含义)、输入输出的类型以及预期行为,只说什么进、什么出,不管措辞
Module(模块) 函数体 构建与语言模型交互的程序的基本单元,经过通用化处理,可以接受任何签名,同时抽象出 few-shot、思维链等提示技术
Example(样本) 测试用例 训练集与验证集样本,在有监督场景中附带参考输出
Metric(度量) 损失函数 衡量当前输出数据质量好坏的度量指标,决定什么叫「更好」
Optimizer(优化器) 编译器 利用带注释的输入输出样本提升模块性能,可以自动改进提示与少样本示例,生成性能更优的新模块,如 BootstrapFewShot、MIPROv2、GEPA
DSPy 程序的最小结构:声明式的签名与模块经由优化器编译,Adapter 负责把签名、指令与示例组装成真正发给语言模型的提示。图源:DSPy 项目文档。
DSPy 程序的最小结构:声明式的签名与模块经由优化器编译,Adapter 负责把签名、指令与示例组装成真正发给语言模型的提示。图源:DSPy 项目文档。

以 MIPROv2 这个优化器为例,它可以同时优化指令和少样本示例,大致分三步:

  1. Bootstrap few-shot 候选:自举法重抽样,跑训练集,为签名生成 few-shot 的候选集;
  2. Propose instructions 提出指令:把「训练集摘要 + 程序代码与该 predictor 的职责 + bootstrap 出的输入输出样例 + 一个随机 tip」喂给用于生成和优化指令的 LLM(prompt model),批量生成人类可读的新指令;
  3. Bayesian Optimization 选组合:在(指令候选 × 示范候选)的笛卡尔积上探索,贝叶斯优化会根据已经试过的组合和得分,推测哪些还没试过的组合更有可能得高分;每轮先在小批量上评估,再在完整验证集上复核。

最终,优化器把表现最好的指令和示例配置到对应的 Predictor 上;程序运行时,Adapter 根据签名、指令、示例和当前输入,动态构造出发送给 LLM 的最终提示词。也就是说,有了 DSPy 这套框架,我们只需要维护好字段定义、数据集、反馈函数,就能自动生成提示词。

那么,提示词优化具体在优化什么?主要就是两件事:

  • Few-shot 示例:优化器可以添加、移除或修改模型在推理期间参考的示例,这是成本最低的优化方式;添加示例时,优化器不会改动整个提示,只是把示例放进提示的「辅助信息」部分;
  • 用户指令:MIPROv2、SIMBA、GEPA 等优化器可以重写提示中的任务指令。算法探索的空间比人脑大得多,能找到比人工措辞更优的语句,比如更清晰的任务分解、边界条件和验收标准。

所以,只需要给出签名(任务描述)和有一定样本数量的训练集,就能自动生成出 Few Shots 和指令。

传统提示工程与 DSPy 的对比:前者由人反复改写提示,后者由优化器基于样本与度量自动编译提示。图源:DSPy 项目文档。
传统提示工程与 DSPy 的对比:前者由人反复改写提示,后者由优化器基于样本与度量自动编译提示。图源:DSPy 项目文档。

适用场景:

  • 适用于有标准答案的打标任务,能够人工标注的训练集,且存在一个度量指标衡量准确率或好坏;
  • 输入输出高度结构化,输出标签大多在枚举值范围内,且大多不存在歧义。

缺陷:

  • 依赖度量指标的合理性;
  • 对有歧义的字段敏感。

基于错误优化的方法:GEPA

GEPA 将提示词优化过程视为一个进化过程,我把它称作基于错误的帕累托优化方法——一种「通过反思自然语言中信息的序列化轨迹(例如指令、推理步骤、工具调用等)来有意识地学习自然语言」的算法。它的特别之处在于:除了标量分数,还把「这个样本为什么得分低、违反了哪条约束」这样的自然语言反馈,一并交给反思模型。分数负责判断好坏,反馈负责解释原因,以及下一版提示词应该改什么。

GEPA 的优化循环:候选池在不同任务上评测,各任务的最佳候选汇入帕累托前沿,反思模型基于文字反馈提出新候选,循环直到预算耗尽。图源:GEPA 论文。
GEPA 的优化循环:候选池在不同任务上评测,各任务的最佳候选汇入帕累托前沿,反思模型基于文字反馈提出新候选,循环直到预算耗尽。图源:GEPA 论文。

它先从初始化系统的「候选池」开始,池中包含多个初始提示词;然后在不同任务上测试,挑出每个任务表现最好的候选,送入「帕累托前沿(过滤池)」,避免单一指标过拟合。帕累托改进指的是,在没有使任何人境况变坏的前提下,使得至少一个人变得更好——在这里,就是让这个提示词尽可能通过更多的测试案例。

接着是反思式变异:结合训练数据,让大模型反思这些优秀提示的不足,变异生成一个新的候选者;随后进入训练集检验。这个「挑选—反思—测试」的循环会一直运转,直到预算耗尽。简单来说,就是让 AI 不断反思错题,并尽可能适应不同类型的任务。

这两种方法论都被内置在 DSPy 这个包里,它还提供 ReAct 等模块;但 ReAct 是一种程序/模块范式,不等于 GEPA 这样的优化器。这里重点讲的是两种优化方法论本身,小结如下:

提高准确率(拟合金标) 降低错误率(通过错误案例去修复)
隐含前提 有标准答案,能算出「对了百分之多少」 没有标准答案,但「哪些是明显错的」可以独立判定
需要什么 金标库、人工抽检、交叉验证 证据(原文)+ 业务口径 + 一个会挑错的审判者
指标形态 精确率 / 召回率 / F1 / AUC 「标量分数 + 文本反馈」的复合体
投入方向 证明真 让模型少犯明显的错误
对应假设检验错误 同时涉及一类/二类错误。若阳性=错误:精确率偏控一类错误(实际正确却判错) GEPA 防的是二类错误(实际错误却判成正确,漏掉明显错误),同时用业务口径和审判者控制一类错误(实际正确却误判为错误,误伤)

这两种方法都能显著改善准确率,而不是凭直觉瞎改提示词。它们的共同点是:先把「什么算更好」定义清楚,再让程序去搜索、去迭代,而不是让一个黑盒去碰运气。

基于统计学原理的 A/B 对照测试

如果我们想换新的模型或新的提示词,怎么知道是否真的有改善?

我们最初借鉴了模型蒸馏中教师-学生模型的角色分工,以及前面 DSPy 的思路:建立训练集和统计准确率,用一个更强的海外模型和一个性价比较高的国产模型,对同一任务进行同时标注,最终以教师模型的输出作为金标,来获得以下统计值:

步骤 内容
① 原假设 H₀ 新提示词(或新模型)并不比旧的更好(两个比例无差异)
② 备选假设 H₁ 若只关心「有没有变好」,用单侧 H₁:新的更好;若只关心「有没有变」,用双侧 H₁:两者有差异
③ 计算统计值 独立样本用两比例 z 检验
④ 是否拒绝 H₀ 双侧 α = 0.05:\lvert z \rvert > 1.96 拒绝 H₀;单侧:z > 1.645;否则不显著

先把混淆矩阵里的四个格子说清楚:TP(真正例,标出来了并且标对)、FN(假负例,该标没标,漏召回)、FP(假正例,不该标却标了,误报 / 无中生有)、TN(真负例,没标,本来也不该标)。常用的指标如下:

指标 公式 一句话含义
召回率(真阳性率) TP / (TP + FN) 真实正例里,有多少被找出来——漏召回的计量
精确率 TP / (TP + FP) 判为正的里面,有多少是真的——误报的计量
假正率 FP / (FP + TN) 真实为负的里面,被误判为正的比例
F1 2PR / (P + R) 精确率与召回率的调和平均
准确率 (TP + TN) / (TP + FP + FN + TN) 整体正确率

由于没有人工标注的金标做锚,这套流程必然存在以下问题:

含义 代价
一类错误 α(假阳性) H₀ 为真却拒绝了它 上线了一个其实没变好的模型
二类错误 β(假阴性) 真有提升却判成没提升 错过收益,把好模型换掉

以上方法论适用于模型平替这类场景:想换成更廉价的模型,统计准确率会受影响多少,一次 A/B 对照测试就能给出量化答案。但实际上,单一的标签准确率并不能很好地覆盖模型标签出错的真实情况。

标签错误的真实形态

真实的生产数据里,标签错误至少有六种形态,它们各自对应不同的计量方式与业务后果:

形态 具体表现 常用计量 业务后果
漏召回 本该标出来的,没标出来 召回率 = TP / (TP + FN) 标签缺失
误报 / 无中生有 标出来了一堆,但其中很多并不成立 精确率 = TP / (TP + FP) 噪音污染下游,大概率是模型幻觉
张冠李戴(错位) 值本身是对的,但挂到了错误的主体、时间或位置上 难以用传统指标表达 最危险:格式合法、字面全对、语义错
格式与契约违规 JSON 不合法、枚举值超出白名单、该给数组却给了字符串 结构合法率 下游解析直接失败或静默丢字段;常见于上下文过长,一般通过多次重试打标解决
口径偏离 标的内容没错,但不符合业务定义 需人工或裁判判定 数据「能用但不对味」
标注歧义 就算是人工标注,都可能标不一致,标准本身模糊 标注者间一致性(Kappa 一致性检验) 字段定义不清晰或存在歧义,同义标签随机打标

所以,评估系统不能只有一个总分,而要把错误按类型拆开:结构问题可以自动校验,事实问题要看证据,口径问题要看业务定义,歧义问题要先回到标注规范。这也解释了为什么「一个准确率数字」在工程上是远远不够的。

如何监控准确率

最初的设计与它的硬伤

最初的设计是:用更强的海外 T0 梯队模型重复打标,默认海外模型打出的就是金标,再按任务类型统计准确率、召回率、相似度匹配、F1、bootstrap 等统计值。但这套设计有几处硬伤:

硬伤 说明
「更贵的模型」≠ 金标准 我们在打标上用的模型,在「输出严格 JSON」这一场景本身就处于第一梯队,无证据表明更贵的海外模型更强。把更贵模型的输出当金标,没有统计学依据。
场景没有划分 有的任务该用向量相似度,有的只查枚举白名单,有的根本不需要 F1。一套指标硬套所有任务,等于都没适配。
没有人工金标做锚 没有人工抽检金标作锚,召回率 / F1 / AUC 算出来也无意义——它们只是两组模型之间的互相打分。
模型会「共谋」犯错 两个模型很可能存在教师-学生的蒸馏关系或共享相似的训练数据,遇到同一个难例会一起错:两方一致只能说明稳定,不能说明正确。

而现实约束恰恰是:

  • 没有人力物力去搭建金标库;
  • 没有常态化的人工抽检;
  • 新任务上线前没有交叉验证;
  • 部分标签候选本身存在摇摆——枚举字段有歧义,人工标注也不一定能完全做对。

三条可行的路径

围绕「没有完整金标时如何评估标签质量」,我们梳理出三条可行路径:

评估模型标签准确率的方法论 思路
模型 Review 找 Bad Case 只提供字段含义和标签结果,删除所有思维链和中间指令,让另一个模型专门只找错,且这个错误必须有证据——即把原假设给证伪了
教师-学生模型重复打标交叉检验 符合大数定律,通过传统统计学的指标进行测量,必须真的抽足够多的、彼此独立的样本
标签输出后走一次检验才可落库 所有模型标注在出去之前都必须经过模型 Review 证真;代价是容易误伤,造成漏召回

三种方法都可行,但经过我的长期测试,让模型去「证伪」,比让它去「证真」更有可行性。

从「证实」到「证伪」

以上我们都在讲怎么把提示词或模型的评估与改进做得更科学与严谨。但即使把统计做对了,还有一个更根本的问题:我们到底在证明什么?

卡尔·波普尔在《科学发现的逻辑》中提出:科学知识无法通过「证实」来归纳,只能通过「证伪」来检验。一个理论如果无法被证伪,就不是科学理论;一个理论越容易被证伪、却又经受住了严格的检验,它就越坚实。

把这句话翻译到提示词工程:

传统的提示词优化是一种证实陷阱。 我们准备 20 条标准输入,跑一遍提示词,全部通过,于是宣布「这个提示词没问题」。这个动作在逻辑上做的是归纳证实——它永远无法证明提示词是对的,只能证明「在这 20 条上还没错」。而真实数据进入产线的那一刻,它面对的是一万种你没见过的形态。

图表:证实路线:传统提示词优化 / "准备 20 条标准输入" / 证伪路线:错误驱动 / "给证据 + 业务口径 + 标签结果"

基于 GEPA 优化提示词找错改进指令的思路和波普尔证伪理论的启发,我们意识到:应该专注惩罚第二类错误(本来有错,却判定为正确),而不是把主要精力花在第一类错误(本来正确,却判定为错误)上。落到工程上,就是三处转变:

步骤 做什么 最终效果
换目标函数 从「精确率」转向「错误率」 错误率不需要金标,只需要证据
换判定方式 LLM as a Judge:让 Agent 扮演批判性的检验者,只给证据原文、业务含义、标签结果,开联网搜索并给上下文,去掉中间产物与思维链,要求「只有严谨证据证明是错的才算错」 去掉思维链,是为了防止裁判被候选答案的推理锚定
换产出物 不看一个总分,而是看一份自然语言描述的 Bad Case 清单,交给开发者按 GEPA 的方式去改提示词,也可以直接套用 DSPy + GEPA 去改进提示词 形成自动化找错并改进提示词的闭环

平台落地:证据驱动的错误发现闭环

基于上面这一整套方法论,我们开发并部署了一个数据标签校验监控平台,专门去给生产环境里的模型标签跑「证明为假」这件事:平台会重新调取原文、业务口径和必要的外部证据,对每个字段独立裁定,只有当证据足以证明标签错误时才判错,并把每一处确定的错误连同证据整理成 Bad Case 清单,提醒对应的开发者据此改进提示词。跑通之后,「科学改进提示词、评估模型标签准确率、主动监测模型标签质量」就不再是三个孤立的环节,而是一个可以持续运转的闭环。

我认为模型打标这个场景非常适合做提示词优化,从而增强它的准确率和鲁棒性。

数据标签校验监控平台的总览页:按任务统计标签质量,逐日跟踪准确率趋势,并对异常任务排序。(图中信息已脱敏)
数据标签校验监控平台的总览页:按任务统计标签质量,逐日跟踪准确率趋势,并对异常任务排序。(图中信息已脱敏)

小结

总结一下,本文讲了三件事:

  • 通过 DSPy 与 GEPA 优化提示词,让模型打标不再是黑盒,而是可以编译、可以搜索、可以用错误反馈迭代的程序;
  • 用统计学方法做模型之间的 A/B 对照测试,评估模型与提示词的绩效;
  • 用模型审判找错来自动监测标签质量,以错误证据驱动提示词改进。

模型打标不是一份「一次写对」的提示词能够解决的问题,它更像一条产线:有输入契约、有质量度量、有反馈回路。希望这套方法论能对大家使用 AI 有一点帮助——让提示词优化不再靠直觉,也让「模型到底打得对不对」从一句模糊的质疑,变成一组可以验证、可以追踪、可以持续改进的工程问题。

参考资料

  • DSPy:Programming—not prompting(dspy.ai),及论文 DSPy: Compiling Declarative Language Model Calls into Self-Improving Pipelines(arXiv:2310.03714);
  • GEPA:GEPA: Reflective Prompt Evolution Can Outperform Reinforcement Learning(arXiv:2507.19457);
  • MIPROv2 优化器:见 DSPy 官方文档;
  • 卡尔·波普尔:《科学发现的逻辑》。

存在主义,另一种形式的不人道

2026-08-30 08:00:00

存在主义,另一种形式的不人道

萨特的存在主义将自由意志无限放大,要求人不断超越自我,可这种“必须不断自我创造”的压力,恰恰是当代焦虑与倦怠的深层来源,它真的是人道主义吗?

我始终无法接受萨特对存在主义的那套描述——将人推向未来,用自我意识主导人生规划,用新的宣言重新定义自己。这套流程读起来很燃,像是一部浪漫主义电影:主角只需要写好自己的剧本,就能一路顺利通往结局。

人就是人。这不仅说他是自己认为的那样,而且也是他愿意成为的那样——是他(从无到有)从不存在到存在之后愿意成为的那样。人除了自己认为的那样以外,什么都不是。这就是存在主义的第一原则。而且这也就是人们称作它的“主观性”所在,他们用主观性这个字眼是为了责难我们。但是我们讲主观性的意思除了说人比一块石头或者一张桌子具有更大的尊严外,还能指什么呢?我们的意思是说,人首先是存在——人在谈得上别的一切之前,首先是一个把自己推向未来的东西,并且感觉到自己在这样做。人确实是一个拥有主观生命的存在,而不是一种苔藓或者一种真菌,或者一棵花椰菜。在把自己投向未来之前,什么都不存在;连理性的天堂里也没有他;人只是在企图成为什么时才取得存在。可并不是他想要成为的那样。因为我们一般理解的“想要”或者“意图”,往往是在我们使自己成为现在这样时所作的自觉决定。我可以想参加一次宴会,写一本书,或者结婚——但是碰到这种情形时,一般称为“我的意志”的,很可能体现了一个先前的而且更为自发的决定。 ——萨特:《存在主义是一种人道主义》

被悬置的肉体

第一个谬误是:人是不能脱离来自现实生活的情感与感受,直接用理性和情绪跳过生命的过程,直接用主观意志去决定事物的意义。 存在主义预设了一个能量充沛、意志健全的主体,仿佛人只要意识到自己是自由的,就能立刻去行动。萨特说人「首先是一个把自己推向未来的存在」,好像推动自己不需要任何前提条件。

对一个身陷虚无、丧失生命热情的人要求“去超越你自己,去行动”,无异于对一个双腿骨折的人喊“跑起来你就能赢得比赛”。萨特把人比作“不是一种苔藓或者一种真菌”,言下之意,安于现状或沦为“末人”是一种堕落。但倘若一个人此刻的全部力气只够维持呼吸和日常生活,要求他“把自己投向未来”,这哪是哲学,这是精神暴力。

人不能脱离来自现实生活的情感与感受,跳过生命的过程,直接用主观意志去裁定事物的意义。意义不是被决定出来的,它是在具体的、有时是痛苦的日常经验中慢慢生长出来的。

进一步问,“我”为什么会想写一本书或结婚,这里边有多少是属于自己的,“我是谁,是什么角色”,这个身份认同是从何而来的,拥有这些投向未来的欲望有多少是发自本能又有多少是外界环境带来的,所以第二个谬误是:没有多少事情真的是自己在自由选择并承担责任。人在做出所谓“自由选择”之前,已经被他的基因、原生家庭、语言结构、社会阶级和潜意识深深地塑造了。认为自己“想写一本书”的意志,往往是社会评价体系或潜意识创伤投射的结果。要求一个人对所有这些自己无法控制的先决条件承担“绝对责任”,是一种近乎残忍的苛求。我们的品味、抱负、对未来的想象,乃至“我觉得我应该成为什么样的人”这一信念本身,都是特定阶级位置和社会场域在身体中沉淀的产物。一个工人家庭的孩子“选择”不去读大学,和一个中产家庭的孩子“选择”去读大学,这两种“选择”背后的结构性约束完全不同。所谓的自由意志,很大程度上是权力关系在个体层面的反映。

存在主义的无神论并不意味着它要全力以赴地证明上帝不存在。毋宁说,它宣称就算上帝存在,它的观点也改变不了多少。并不是我们相信上帝的确存在,而是我们觉得真正的问题不在于上帝存在不存在;人类需要的是重新找到自己,并且理解到什么都不能使他挣脱自己,连一条证明上帝存在的确凿证据也救不了他。在这个意义上,存在主义是乐观的。它是一个行动的学说,而基督教徒只有靠自我欺骗,靠把他们自己的绝望同我们的绝望混淆起来,才能把我们的哲学形容为没有希望的。

存在主义者会说「存在先于本质」,高喊上帝已死,把有神论、把「我从何而来」这些根本性设定统统拆掉。拆完之后呢?他们发现我们的世界观和信念都建立在虚无之上,都是脆弱的,于是转而要求人「成为你自己」,去行动,去超越。但他们忘记了一件事:自己只是个人类。「想要成为」与「行动实践」是两回事——前者是一个想法或一种心理状态,后者是一个需要时间、资源、社会支持和身体能量的完整过程。

人始终处在自身之外,人靠把自己投射出去并消失在自身之外而使人存在;另一方面,人是靠追求超越的目的才得以存在。既然人是这样超越自己的,而且只在超越自己这方面掌握客体(objects),他本身就是他的超越的中心。除掉人的宇宙外,人的主观性宇宙外,没有别的宇宙。这种构成人的超越性(不是如上帝是超越的那样理解,而是作为超越自我理解)和主观性(指人不是关闭在自身以内而是永远处在人的宇宙里)的关系——这就是我们称作的存在主义的人道主义。之所以是人道主义,因为我们提醒人除了他自己外,别无立法者;由于听任他怎样做,他就必须为自己作出决定;还有,由于我们指出人不能返求诸己,而必须始终在自身之外寻求一个解放(自己)的或者体现某种特殊(理想)的目标,人才能体现自己真正是人。

萨特把“不断把自我投向未来”定义为人的尊严所在,但这种“必须不断超越”的伦理,在二十一世纪已经与现代资本主义的绩效逻辑完成了合流。当代社会的剥削不再来自外部强制,而是来自“我应当做得更好”的自我驱迫。主体不再被他人剥削,而是剥削自己,并且将这种自我剥削体验为“自由”。

萨特的存在主义,在这个意义上,无意中为绩效社会提供了哲学注脚。如果一个人不想超越,只想安静地做一棵「花椰菜」或一块「苔藓」,存在主义似乎就在贬低他的存在价值。这种必须不断「自我创造」的压力,恰恰是当代焦虑与倦怠的深层来源。它不是人道主义,它是另一种形式的不人道。

对于那些在虚无中挣扎的人,不少人对这个世界已经失望至极。为什么还要求一个习得性无助的人去热爱生活?存在主义在这里变成了一种自欺:它把结构性的困境转化为个人的意志问题,然后指责个人不够努力。所以存在主义者是不诚实的,他们只能体会到“需要意义来生活”或“被意义所拷问”。

寻死得不到答案

海德格尔在《存在与时间》中提出「向死而生」,认为唯有直面死亡的确定性,此在才能从「常人」的沉沦中醒来,获得本真的存在。但它忽视了「我怎么看这个世界」这一前反思的情感维度。一个人无法继续热爱生活,未必是因为他没有思考过死亡,更可能是因为活着本身已经耗尽了他的全部力气。把「对生命的审视」绑定在死亡这一终极议题上,到头来不过是把问题丢回给那个已经丧失生命热情的人。通过想死,来换取“想怎样活”的答案。可一个习得性无助的人,无论怎么想,都得不到答案。意义从何而来的问题,被原封不动地抛回给了最无力回答它的那个人。

加缪在《西西弗神话》的结尾写道:「应当想象西西弗是幸福的。」这句话被无数人引用为存在主义的勇气宣言,但仔细想想,它要求的是什么?它要求一个人用意志和选择得出的结论,去覆写对生活日常的全部记忆。石头滚下来,再推上去,再滚下来——加缪说,你要在这无尽的徒劳中感到幸福,因为推石头这个动作本身就是对惩罚与荒谬的反抗,是自由与骄傲的体现。

但如果生活不及预期,如果灾难就是灾难,为什么非要美化它?将西西弗的行为解读为「对荒谬现实的轻蔑与反抗」,看透一切仍然选择死磕,这当然是一种反抗的姿态。但要求每一个被石头压着的人都必须摆出这种姿态,否则就是自欺。不是每个人都有力气在推石头的同时乐观。承认「我很累,我推不动了,我恨这块石头」,难道就不是真实的、有尊严的回应?

意义是在日常琐事中生长出来的

虚无与存在是双生的。如果否定了神与信仰,拆掉了一切外在的意义锚点,那么同时也杀死了支撑自己活着的某些基础。存在主义试图在废墟上重建意义,但它选择的工具——纯粹的主观意志与情绪,恰恰是最脆弱的那一个。方向是对的,但路是死的。

人绝对不是“从无到有”的主观存在。人首先是一具有重量的肉身,活在特定的历史、地理、阶级和关系网络里。意识不是悬浮的纯粹主体,而是需要通过肉身与世界打交道。我们的自由是打过折扣的自由,是在泥泞中挣扎的自由,而不是天堂里的积极自由。

意义不是被意志「决定」出来的,也不是靠一句「我选择赋予它意义」就能凭空生成的。意义是基于现实活动的产物,它需要行动在先,需要经历与体验,需要记忆的沉淀与反复的思考。它生长于具体的关系、具体的劳动、具体的痛苦与具体的快乐之中,而不是生长于一个孤立的主体对虚空的凝视之中。你望向深渊,看到的只是习得性无助的自己。

存在主义最大的不人道,在于它把一个被社会结构、被肉体局限、被唯物史观、被社会关系深深嵌入的个体,抽象成了一个孤零零的、必须独自为一切负责的意志。它把自由变成了一种义务,把超越变成了一种道德命令,然后对那些做不到的人说:那是你的选择,你要为此负责。

真正的意义不必总在远方拔地而起,或经过深思熟虑后下大命题的定义,它往往就蛰伏在日常中。如果一味要求人去不断超越、去创造定义自己的宏大叙事,仿佛不这么做,生命就沦为了平庸的消耗,未曾起舞的日子难道就不值得过?

回想那些被日常琐事填满、健康而幸福度过的每一天,聆听雨声、安静地睡一个好觉,这些片刻的充盈根本不需要任何夸张的“超越性”来背书。在一个充满无常和重压的世界里,一个人能够安顿好自己的肉身,维持着内在的秩序,仅仅是健康、平静地活着,这就已经是了不起的成就。真正的人道主义,不该是逼迫每个人都去推那块沉重的石头,而是温和地承认:你不需要证明什么,允许你作为一个普通人健康地活着、去感受这平淡的日常,这已经构成存在的意义了。

意义是基于现实活动的产物,需要先行动、经历体验、回忆和思考作为基础。

“灵活就业即自由”言论背后的晚期资本主义特征与国家去责任化

2026-08-22 08:00:00

“灵活就业即自由”言论背后的晚期资本主义特征与国家去责任化

前言

近日,北京大学国家发展研究院经济学教授张丹丹参加了财经访谈节目《聊一波》。在被问道“2亿零工在做什么工作”、“有什么社会保障”等问题时,张丹丹说:灵活就业本身就是一种福利。她说:“从劳动经济学角度讲,他们灵活,本身就是一种福利。”张丹丹还说,朝九晚五、有五险一金的人,是牺牲了自由才换来的社保。而灵活就业人员就是要灵活,他们要的是自由度,能最大化实现自己对自己的管理,而自己管理自己,肯定不需要别人给他缴纳社保。最后,张丹丹得出结论:“我们不能把灵活就业想成啥也没有,他有的是灵活。”

大部分人对于这类不食人间烟火的言论大多基于道德层面持批判态度,认为张丹丹和林毅夫等人都是政策合理化导向的宣传者,负责输出无用大话,但拥有如此多title的张丹丹的逻辑与论证令人大跌眼镜:把经济学的「闲暇」概念与自由混淆,又将新自由主义的可选择空间与福利划等号。

本文借这个争议去阐述当代社会学与晚期资本主义的特征,这位学阀经济学学者的“灵活就业即自由”论点背后是国家机器对公众福利与保障的去责任化,并将原有社会承诺的公共资源与福利保障的支出转嫁给后人,而个人面对的是高度充满高度流动与风险的社会。

晚期资本主义

德国社会学家乌尔里希·贝克和英国社会学家安东尼·吉登斯在20世纪80年代末提出「风险社会」理论,晚期资本主义和现代性会出现社会将集体风险转嫁给个人的现象,制度性的矛盾和失败为归因为个人失败。

在现代化社会,个体虽从习俗、宗教迷信等传统观念中获得形式上的解放,但如同佛洛依德的《文明及其不满》中提到的文明是建立压抑人类本能的自然欲望与需求之上,这是文明规范与集体利益所需要做出的割舍。

到了现代化极盛的阶段,现代文明滋生出技术与官僚的结合体,单纯统治问题变成庞大的社会工程,催生出技术官僚和张丹丹这样的学阀。

第三条道路的背景,是西方福利制度的集体退场,背后的原因有:

  • 社会保障福利支出过多,财政赤字问题和国债违约等一连串连锁问题
  • 像里根和撒切尔的政策,借着新制度经济学的理论,试图通过通过社会劳工市场改革,修改制度推向熊彼得式的自由竞争来获得新的增长
  • 人口结构少子与人口老龄化,为了控制养老金的覆盖率、替代率,以及民意共识,政府基于现实难题只能推迟养老年限。

但这些问题终究是全球化竞争与收入分配不平等的缩影。

法国案例

法国是为数不多的在坚持第三条道路中最为持续改革的发达国家,并将“工作换福利”落实到劳工市场。

像法国的养老金收入高于成年劳工的收入,在一众发达国家中都极为罕见
像法国的养老金收入高于成年劳工的收入,在一众发达国家中都极为罕见

法国基本养老金在2022年至2026年间累计上涨约15%。

法国国家统计局(Insee)公布2026年第一季度,法国公共债务总额达到3.5361万亿欧元,相当于国内生产总值(GDP)的117.5%。与2025年底相比,法国债务增加了756亿欧元。2025年底,法国公共债务总额为3.4605万亿欧元,占GDP的115.7%。虽然当时债务规模较前一季度有所下降,但与2024年底的3.3061万亿欧元(占GDP的112.6%)相比仍继续上升。

法国审计法院发布报告,对法国公共财政状况发出严厉警告,认为“所有信号都已亮起红灯”。报告指出,法国是欧元区唯一一个债务占GDP比例超过新冠疫情时期峰值(2020年的114.9%)的国家,并对债务利息支出的“大幅增加”表示担忧。

法国的财政赤字占GDP的比例远超欧元区的平均水平
法国的财政赤字占GDP的比例远超欧元区的平均水平

作为仅次于德国的欧元区第二大经济体,法国却是欧元区财政纪律表现最差的国家之一。

作为仅次于德国的欧元区第二大经济体,法国却是欧元区财政纪律表现最差的国家之一。
作为仅次于德国的欧元区第二大经济体,法国却是欧元区财政纪律表现最差的国家之一。

法国财政部数据显示,截至2026年6月底,法国中央政府财政赤字约1070亿欧元,较政府预算计划高出14.4%。与此同时,惠誉已将法国主权信用评级由AA−下调至A+,理由包括债务负担持续攀升、政治不确定性加剧以及财政整顿缺乏可信路径。

据路透社报道,Lecornu政府将调整重点放在大型企业和高收入群体。其中,对年营收超过10亿欧元企业征收的特别税延期执行,预计可增加约73亿欧元财政收入;针对高收入人群征收的特别税预计增加约6.5亿欧元收入。综合各项措施,政府预计可改善财政约90亿欧元。

不过,相较于数千亿欧元规模的财政缺口,这部分收入仍十分有限。市场普遍认为,法国目前采取的措施更多是在填补短期预算,而福利体系、养老金、移民支出以及公共部门效率等结构性问题仍未得到实质性改革。

目前法国政府支出占GDP比重约57%,是欧盟福利支出最高的国家之一。为了解决这个问题,法国这些年推动了什么政策?

  • 将失业金领取条件与“积极求职”强制挂钩。领取最低生活保障(RSA)的人必须每周进行15小时的“活动或培训”,否则将被扣发补贴。
  • 将法定退休年龄从62岁推迟至64岁。
  • 2024年起将原有的国家职业介绍所(Pôle Emploi)改组升级为 France Travail,强化对失业人群的动态监控与考核,国家化身为“职业经理人”,通过技术和官僚手段催促个人适应弹性化的资本主义市场,将结构性就业岗位不足转化为个人“找工作不够积极”的监管问题。
  • 《2026年社会保障融资法案》(LFSS 2026)及病假/失业管控,严格限制医生开具的初始病假时长(如封顶1个月),并赋予保险机构提早介入复核的权力。通过技术官僚手段严格限制个人利用社会安全网(如病假、福利)“避风”的空间,逼迫劳动力维持在高效运转状态。

法国也是中国留学生归国人数比例最高的发达国家之一。

西方福利制度的退场

法国是一个相对好观察的case,但这种退场我归纳各个国家的问题有以下的共同点:

  • 长期的全球化竞争激烈,本土去工业化,为留住资本竞相削减人力成本,这是没有办法的办法,不是所有高新产业都能创造新增岗位;
  • 上一代人通过债务累积增长获利,为后人留下天量财政债务,当下的财政在各种约束与限制下做trade-off,自然是不可能有财政空间去做出任何改变的,这种压力只会传导到劳工身上;
  • 来自美国的金融压迫,美元潮汐和金融危机外部化,导致资本的流动异常活跃,影响物价、汇率,每一次美元潮汐都带走了这些国家的流动性。

在左翼政党(如英国新工党、美国克林顿民主党)和极右翼自由放任(撒切尔主义)之间做平衡,听起来非常美好,实际上这是新自由主义的陷阱:劳工看似有自由选择的权利,实际上都是没有自由,都是在被迫劳动且接受任何烂工作,政府鼓励失业者去参与培训、积极求职,才有资格获取福利。福利从财政再分配变成需竞争甚至是惩罚性的。用看似包容、积极的制度去掩盖劳工市场自由竞争的剥削性。

公民的生命周期中最为关键的教育、就业、健康、养老等领域的风险越来越被政治合理化为个人选择的结果。

张丹丹不是第一个主张社会责任个体化的学者,吉登斯曾在政治上提出的“第三条道路”和政策上主张社会福利是“没有无责任的权利,也没有无权利的责任”(No rights without responsibilities, no responsibilities without rights),认为福利国家需要社会主义式的集体投资与公民责任,英国1997-2007年在野党的布莱尔政府为削减福利开支、推行“以工作换福利”。吉登斯自认超越左与右,但这一言论也为福利国家削减开支提供了合法性理论支持,将社会结构性问题通过占据公众话语权的方式被归因为个人能力问题。例如,失业不再被视为经济需求不足或产业转型的后果,而被解释为个人技能不足或求职意愿不强。

鲍曼在《液态的现代性》与《工作、消费主义和新穷人》更是指出,在消费型社会中,穷人越来越被定义为“有缺陷的消费者”,没有消费能力是个人的问题,其社会结构化且人为制造的贫困陷阱个体化与道德化。

从宏观经济学与劳动弹性化的角度来看,资本主义晚期将系统性的不稳定转化为对个人品格的要求,使个人承担制度变迁的代价。

基于以上现象,我们进一步讨论这一社会变化如此普遍的原因。

治理术

福柯在《生命政治的诞生》指出,新自由主义并非简单的国家解除福利制度,而是一种新的治理理性:市场是制度上公认的真理机制,个体被建构为“企业人”(entrepreneur of the self),需要对自身的人力资本进行投资与管理,公民个体承担生命周期的所有成本,包括教育、生育、养老、医疗等。国家不再通过财政与再分配来保障个人,而是通过塑造竞争性主体来治理风险。

参与社会保险、赋予自我管理的自由、灵活就业等看似代表现代化进步主义的话语,实际上是一种治理技术,使贫困者、失业者被要求自我负责、自我改善,进而自我剥削,而国家的结构性责任被淡化,每个公民都是企业化的主体,自己承担连带企业的无限责任,还要为原有政府承诺的空头支票买单,医保集采问题、养老金亏空、地方财政失去土地财政繁荣后枯竭、非税收入等问题和现象只是福利保障违约的开端。

市场普遍认为养老金在 2035 年之前耗尽
市场普遍认为养老金在 2035 年之前耗尽

市场普遍认为养老金在2035年之前亏光

医保的结余情况还算乐观,但大多靠集采和医疗质量下降换来的,且到 2030 年 1 月 1 日,全省累计缴费年限统一为男职工 30 年、女职工 25 年(注意之前是 15 年),动辄翻倍,跨度非常大。
医保的结余情况还算乐观,但大多靠集采和医疗质量下降换来的,且到 2030 年 1 月 1 日,全省累计缴费年限统一为男职工 30 年、女职工 25 年(注意之前是 15 年),动辄翻倍,跨度非常大。

医保的结余情况还算乐观,但大多靠集采和医疗质量下降换来的,且到2030年1月1日,全省累计缴费年限统一为男职工30年、女职工25年(注意之前是15年),动则翻倍,跨度非常大。

债务问题是全世界大部分国家都有的代际负担
债务问题是全世界大部分国家都有的代际负担

债务问题是全世界国家都有的代际负担

不论如何修改口径,青年失业率再次达到新高
不论如何修改口径,青年失业率再次达到新高

不论如何修改口径,青年失业率再次抵达新高

全国3.2 亿灵活就业人口,占城镇就业逾四成;以往被认为高流动性的外卖员、快递员、家政服务员的流失率在逐步降低,月度流失率不到3成,灵活就业将成为新就业的常态
全国3.2 亿灵活就业人口,占城镇就业逾四成;以往被认为高流动性的外卖员、快递员、家政服务员的流失率在逐步降低,月度流失率不到3成,灵活就业将成为新就业的常态

从经济学的角度来看,将这一转型可概括为从凯恩斯主义福利制度国家向熊彼特主义工作福利国家转变,即有工作的公民才有资格去获得福利和保障。国家更关注提升劳动力市场的灵活性和竞争力,而非保障公民的社会权利。

工作福利的核心不是单纯减少财政支出,而是将福利领取与强制工作、道德规训结合起来,重塑穷人的行为,这是现代社会的劳动改造,你我都是罪人。

新的改变

学者占据公众媒体的资源最终目的是为政策转变做铺垫,拥有了官僚系统提供的权力,也拥有了对专业知识的话语权和解释权。经济学本身不提供具体的解决方案,它是官僚系统与权力架构的衍生物,最终是要为政策支持理论与研究上的支持。

韦伯认为科层制的存在,是因为它垄断了专业知识,以及去人性化的技术与流程形成了铁笼,社会保障去责任化只会成为行政命令下的常态。

大卫·哈维从资本积累角度揭示,新自由主义改革通过私有化和市场化,将原本由公共部门承担的再分配责任重构为市场自发(其实是被迫的)购买行为,完成了对个体责任的重构。

新自由主义国家的特征不是简单撤出,而是社会国家与惩罚国家的转变:一方面削减福利,另一方面扩张刑罚与规训,通过道德化贫困和惩罚性管理来应对社会结构化问题。以个人责任为名,将贫困者置于社会规训、工作伦理、高强度烂工作、微观行为监控之下,这些都是隐藏在现代社会的奴隶制和强迫劳动行为,正将劳工市场打造成全景敞视监狱。

不论大众是否喜欢张丹丹的言论,张的研究覆盖了对平台经济买方垄断、青年失业率、AI替代效应等领域,并提出平台方应按收入高低阶梯制补贴骑手个人社保的部分支出,她揭露了当下正发生的问题。

但平台补贴个人部分社保支出是一个脱离现实的建议:

  1. 谁来承担这个成本,最终成本仍然转嫁到用人成本和商家上,谁来监管?如何落实?
  2. 买最低档的社保有意义吗?对于企业很可能只是合规手段,而非解决社会保障的关键
  3. 现实中通过提高社保基数和系数来转移,当然也可以理解为加税,会不会导致更多人退保?
  4. 打工人优先缴纳个人养老金(模仿美国401k),而非社会统筹养老金有没有可能更好?政策刚推行,还缺少证据,需自然实验;
  5. 基于合作社、特定群体的商业保险或企业内部的自保险有没有可能优于社会统筹基金?

然而这些问题的根源是:

  1. 产业转型的阵痛,结构化增长,也就是大部分传统行业持续失血,不同行业对经济的体感差异大
  2. 平台经济有基础设施和寡头垄断特征,且长期缺少反垄断监管
  3. 社会对各种现收现付制基金软着陆的期望,代际转移问题
  4. 社会保障和福利是需要打工人花钱买,且收入越低,保险成本占税前收入的比例越大,社会保险的公平问题
  5. 财政再分配应不应该在社会保障方面发挥更大作用

以上每个问题单独拿出来都是大命题,但我想说的是当前的各种灵活就业、社会保障、就业难等问题,绝非中国才有的,但张的言论毫无疑问刺痛了无数打工人的心。

美好的时代过去了。起风了,唯有努力生存。

2026年的比特币有了新的逻辑?

2026-08-03 08:00:00

2026年的比特币有了新的逻辑?

回顾

2022年,塔勒布在其论文《Bitcoin, Currencies, and Fragility》中指出,比特币波动率长期维持在60%至100%的区间,且与纳斯达克指数的相关性过高,在成为货币的道路上已经失败了。

在繁荣期间,大部分人都愿意持有它甚至想拥有更多,以至于没有人愿意使用它作为支付工具;在熊市,没有商家愿意接受长期贬值的货币。萨尔瓦多总统布克尔反其道而行之,为刺激消费和旅游,将比特币设为法定货币,并购买比特币作为储备资产。

——2022年时的观察《批判比特币和Web3》

2025年1月29日,萨尔瓦多立法议会通过与IMF的协议,正式撤销了比特币的法定货币地位,这场闹剧以妥协告终。

回到当下,美元流动性泛滥、美债信用危机、法币贬值,很多人尝试押注这一叙事,但这一天迟迟未兑现,由于美国通胀顽固,联邦基金利率高企,叠加AI资本开支泡沫对风险偏好的虹吸,比特币在2026年的表现显得逊色。截至7月底,BTC价格在63,000至65,000美元区间震荡,距2025年10月的历史高点已回撤约近五成。不过比特币占加密货币市场总市值的比例仍维持在五成以上,这说明其他竞争币都没对比特币的地位构成实质性威胁。比特币仍然是加密世界中流动性最好、共识最牢固的币种。

比特币占有率常年在50%以上
比特币占有率常年在50%以上

关机币价分析

"关机币价"是指当币价跌破矿工的可变成本(主要是电费),微观经济学告诉我们,矿工应选择关机止损,这一价格被认为是币价长期的锚。

以当前主流矿机Bitmain Antminer S23 Hydro为例:功耗比9.5 J/TH,单台功耗5,510 W,单台算力580 TH/s。事实上矿机购置成本已摊销完毕,仅计算边际运营成本:

  • 电费:北美平均工业用电成本约0.10美元/kWh,单台日耗电132.24 kWh(5,510 W × 24 h),日电费13.22美元;

根据2026年7月26日的数据,BTC全网挖矿难度为126.23 T(126,231,507,121,868),对应全网算力约904 EH/s。单台S23 Hydro的日产出为0.00028884 BTC。当日币价64,544美元,日收入约18.64美元,尚覆盖可变成本。

令日收入等于日成本,可解得关机币价:

P_{shutdown} = \frac{13.22}{0.00028884} \approx 45{,}769.28 \text{ 美元}

比特币的边际生产成本对应的关机币价在45,000至50,000美元区间。一旦币价持续跌破这一水平,高成本矿工将被迫退出,全网算力下降触发难度下调,直至剩余矿工的收支重新平衡。

减半周期

下一次比特币减半预计发生在2028年4月17日,届时区块奖励将从3.125 BTC降至1.5625 BTC。按照过往三轮周期的经验,市场通常在减半前一年左右开始定价这一预期,而减半事件本身往往成为"买预期、卖事实"的兑现节点。

减半对价格的长期影响机制在于抬升关机币价的下限。 区块奖励减半意味着同等算力下的日产出减少一半。以当前挖矿难度和北美工业电费推算,减半后美国本土矿工的关机线将上移至约9万美元。

这并不意味着2028年中旬币价就能稳定在9万美元以上。减半后全网算力可能因部分矿机关机而下降,触发难度下调,使得剩余矿机的单位产出回升,从而压低实际的停机线。换言之,难度调整机制是一个负反馈回路,它会部分对冲减半带来的成本冲击。

比特币的算力并没有显著下滑
比特币的算力并没有显著下滑
比特币的难度有一定回撤会增加挖矿产出
比特币的难度有一定回撤会增加挖矿产出

如上图所示,比特币的全网算力与挖矿难度始终跟随币价呈周期性波动:币价上涨→利润扩张→算力涌入→难度上调→成本抬升;币价下跌→利润压缩→矿机关机→难度下调→成本回落。

美元流动性

根据公开的哈希率分布数据,美国至少拥有全球约35%至40%的比特币算力。那么在美元经济圈内消耗如此大量的能源和资本去维护一套去中心化账本。

从流动性传导的视角看,比特币挖矿的经济实质是:将无处安放的美元通过能源消耗与挖矿的方式销毁掉,同时在虚拟的区块链系统中增加“对应价值”的流通量。

美元流动性的传统路径是从货币类资产(国债、贷款、回购协议)蓄水池溢出,流向风险资产(股票估值扩张、风险溢价压缩),再流向黄金、加密货币、艺术品等非生产性资产。

2026财年美国联邦赤字已达1.9万亿美元,净利息支出突破1万亿美元,国债总额逼近39万亿美元。在美债危机愈演愈烈、美股估值极端高企的背景下,未来若美联储被迫大幅降息以削减利息支出,甚至走向财政赤字货币化,美元流动性的传导路径有可能发生质变——从信贷扩张直接转化为对比特币的需求。

不稳定的MicroStrategy

Strategy在2026年6至7月已停止买入比特币,甚至开始净卖出:5月底卖出32 BTC(约250万美元),6月底至7月初又卖出3,588 BTC(约2.16亿美元)。相对于其843,775 BTC的总持仓,卖出比例不足0.5%,但信号意义远大于实际抛压。

其mNAV(市值与所持比特币净值之比)已跌破1,这意味着市场不再愿意为Strategy的"比特币杠杆"支付溢价。过去牛市中,mNAV远大于1,Strategy通过发行股票和可转债加杠杆买入比特币,形成正反馈;如今mNAV破1,杠杆效应消失,公司转变为单纯支付利息、持有大量现金以熬过熊市的防守姿态。

MicroStrategy在牛市用杠杆吸引投资者,熊市发行带息证券补充流动性、降低杠杆率,只要有足够现金兑付利息,就不存在挤兑和违约。但笔者必须指出,现实不会像模型假设那样理想。加密货币财团公司普遍缺少传统金融机构所面临的内外部监管约束,FTX在2022年11月因80亿美元客户资金缺口而崩塌,Terra-Luna在2022年5月因算法稳定币脱锚引发连锁清算,这些"已知的未知"都在说明,币圈的流动性危机往往在最不被预期的时刻爆发。

基本属性

稀缺性

黄金的稀缺性由贵金属的化学元素特征决定。除非人类实现低成本的小行星采矿并将贵金属运回地球,否则其供给上限在物理意义上是刚性的。

比特币的稀缺性则高度依赖区块链账本的共识层:SHA-256工作量证明(PoW)机制与2,100万枚的供给上限。不少机构人士质疑这一上限的可信度——毕竟代码可以被修改。但事实是,BCH、LTC等众多PoW赛道的竞争币均沿用了比特币的技术架构,经历多次分叉后,BTC的共识非但未被稀释,反而愈发稳固。用塔勒布的术语来说,比特币的共识呈现"反脆弱性":每一次试图杀死它的攻击,都使其共识网络变得更加坚韧。在这个意义上,比特币的稀缺性共识与黄金具有结构上的可比性。

需要注意的是,我们是站在数千年文明积淀之上讨论黄金的价值共识,而比特币的历史不足三十年。时间尺度上的巨大不对称,使得任何轻描淡写的类比分析都不足以构成定论。

共识与价值

"韭菜的共识也是共识"——这句戏谑之语道出了一个严肃的命题。比特币确实缺少传统意义上的内在价值:它不产生现金流,不支付股息,本质上是一种零息资产的变种。其价格主要取决于美元流动性和实际利率水平。与黄金相比,比特币对流动性的敏感度更高,而黄金对中短期利率变动的响应更为显著。

从后结构主义的视角追问:共识资产的合法性究竟从何而来?为什么数百万人认同一种没有实体支撑的数字记号具有"价值"?一种常见的批判是:价格的暴涨暴跌本身构成了投机叙事的基础,而投机需求又反过来维系了价格——这是一个自我指涉的循环。这种批评并非没有道理,但缺少内在价值不等同于没有资产配置价值。黄金同样不产生现金流,但没有任何严肃的资产管理者会因此将黄金排除在组合之外。

避险属性

"黄金能避险"是金融市场上最根深蒂固的叙事之一。但仔细追问:黄金具体如何避险?个人能带着实物黄金顺利离境吗?能进行便捷的离岸交易吗?大部分流通黄金,不是存放在瑞士银行的保险柜里,就是在运往第三世界央行金库的路上。

避险本质上是一种投机叙事与集体信念。微观层面,2024至2026年的黄金牛市由三重因素驱动:全球央行持续大规模购金(2022至2024年连续三年净购金量超过1,000吨,2026年一季度央行净购金244吨)、美债违约风险的长期化定价、以及法币购买力的持续稀释。黄金在2026年已超越美国国债,成为全球最大的储备资产类别。

在流通性、价值储藏、支付手段这三项货币基本属性上,比特币均优于实物黄金:可无限切分、跨境传输近乎即时、无需物理保管。理论上,以实物黄金为底层资产的RWA(真实世界资产)代币是比比特币更优的价值中介——它兼具黄金的信用基础和数字资产的流通效率,弥补了比特币在小额支付和跨境结算中的角色缺位。

至于战乱年代的避险功能,其逻辑是成立的:当央行滥发货币、主权信用违约时,法币的价值不过是一种幻觉。不是黄金在涨,而是法币在跌。资产的价值始终是相对主义的。

流动性

2020年的DeFi Summer,美联储将利率降至零并启动无限量化宽松,叠加2021年3月拜登政府1.9万亿美元的财政刺激计划,流动性严重过剩。大量溢出资金涌入区块链协议进行投机,DeFi锁仓总量从年初的7亿美元飙升至150亿美元。不少上市公司将账面现金投入比特币理财:特斯拉在2021年初购入价值15亿美元的比特币,并一度支持比特币购车,后又以"环保问题"为由取消。

比特币天然是美元流动性溢出的观测器。2024年底,比特币与纳斯达克100指数的30日滚动相关系数一度高达0.7,为两年之最;此后随着币价跌入熊市,与纳指的相关性一路走低,转而与COMEX黄金呈现中度正相关(相关系数超过0.5)。这种相关结构的漂移说明:比特币缺少一个稳定的价值锚。 它"是什么"或"不是什么",取决于当下市场的主导叙事。

共识决定了比特币价值的下限——四年一减半的供给收缩与2,100万枚的绝对上限,决定了其底部价格将随时间不断抬升;流动性与叙事决定了短期价格的上限——市场需要一个理由去交易比特币,为投机赋予合理性,由此促成索罗斯所言的反身性正反馈。

资产配置视角

有趣的是比特币和黄金的相关系数越来越高
有趣的是比特币和黄金的相关系数越来越高

笔者在风险平价回测系统项目上新增了加密货币相关系数看板。数据显示:2024年底,比特币与纳斯达克100指数的Pearson线性相关系数(回溯三个月)高达0.62;2026年币价跌入熊市后,比特币与COMEX黄金的价格波动相似度上升,相关系数超过0.5,呈现中度正相关。

比特币升值是美元贬值是先行信号
比特币升值是美元贬值是先行信号

从BTC-DXY(+3个月)图表中可以观察到,比特币的增值往往领先于美元指数的贬值。这一领先-滞后关系意味着,比特币作为对冲法币购买力下降的工具,在时间维度上具有一定的前瞻性配置价值。

未来的共识变量

不论是黄金还是比特币,它们自身的物理属性或协议参数不会发生显著变化。真正改变的,是外部货币环境:美联储的货币政策路径(FOMC利率决议、量化宽松或紧缩、资产负债表的扩缩)、美国财政部如何偿付国债利息、以及财政支出能否被有效削减。

  • 对比特币最乐观的场景:财政支出刚性不可削减,只能借新还旧。为偿还每年超过1万亿美元的利息支出,美联储被迫重启量化宽松,走向财政赤字货币化,以通胀稀释实际债务负担。在这一路径下,法币购买力持续下降,比特币和黄金作为"非主权价值存储"的需求将结构性上升。

  • 对比特币最不友好的场景:美债实现软着陆,找到新的边际买家(他国高位接盘),或美联储在通胀可控的前提下进一步降息。但在地缘冲突频发、能源价格高波动的当下,任何了解央行运作逻辑的人都清楚,维护远期价格稳定(而非下个月或下半年的短期波动)始终是美联储的首要职责,财政可持续性在优先级排序中必然居于其后。

黄金的共识,正如李新野所言,是"五千年前的大饼"——一种跨越文明周期的信用沉淀。从唯物主义的角度看,比特币确实是缺少内在价值且是虚无主义的,比特币和黄金的价值都带有彻底的建构性:它们不产生效用,不创造产出,其价值完全是社会价值观和货币与价值关系的投射。这种建构性在市场上体现为价格的高度波动,以及定价逻辑和锚定物的缺失。

当美元体系自身的信用裂缝不断扩大,当全球央行以每年千吨级的速度增持黄金、当美国国债利息支出超过国防预算,比特币和黄金便被复魅了新的逻辑,共识资产因新的叙事、共识、投机与交易创造的新的集体价值。

对于缺少定价方法的资产而言,问题从来不是比特币还值不值多少钱(本来就没有价值锚),而是美元还会不会继续贬值、货币的共识是什么,后者法币秩序的崩塌会引发一系列非理性的投机与金融泡沫。

我全栈开发的第一个产品:Balanced Portfolio 多资产风险平价全天候策略回测系统

2026-07-11 08:00:00

我全栈开发的第一个产品:Balanced Portfolio 多资产风险平价全天候策略回测系统

为什么要做这个产品

去年在券商自营工作时,我时常怀疑全球大类资产配置的合理性:所谓「配置」,难道只是给买入持有和不定期调仓披上一层合理化外衣?做过一轮研究后,我得到三条结论:

  • 在不考虑极端股债双杀的前提下,配置盘里必须有一定比例的资产,在大部分时间与其余持仓呈零相关或负相关。
  • 买入多个波动高度相关的资产,只是形式主义:既没有分散系统性风险,也没有降低集中度,安慰剂效应居多。
  • 再平衡调仓不一定带来 Alpha;它本质是风险管理。若不调仓,组合会被动承担比预期更多的风险。

那时我认为,传统四象限风险平价早已过时,更该用《因子投资》里的方法,把宏观、行业、市场预期自上而下映射成因子再回测——详见《浅谈风险平价模型》。今年想法有所修正:很多机构和散户并不执着于资产之间的严格独立性(即对协方差矩阵做极致优化、规避多重共线性)。若目标函数只是「持有一篮子核心资产,并通过组合管理平滑单位净值曲线」,而不再纠结流动性危机、股债双杀等尾部情景,那么这个需求其实有一套相对确定的解法。

身边同事和朋友真正需要的,往往是:能控制最大回撤、追求缓慢而稳健的财富增值、不必盯盘、调仓频率较低的投资组合。市面上几乎没有对症的产品;即便有,也多停留在簿记、风控指标、基金绩效计算等基础功能——毕竟多数工具服务于卖基金场景的财富管理产品,用不上复杂的组合优化。

于是我下定决心:把原本只在 Python 环境里跑的风险平价组合管理与回测程序,做成可交互的 Web 产品。顺带把 Alpha 策略和场外衍生品对冲管理里常看的股指期货年化升贴水,以及场外期权结构化产品定价,一并放进系统,方便投资者和研究者查阅使用。

产品介绍

Balanced Portfolio 是一套基于桥水基金风险平价思路的投资组合管理与回测系统,同时提供中金所股指期货描述性统计,以及场外自动敲入敲出(autocallables)结构化产品定价。

主要功能:

  • 风险平价组合管理与回测:按 GDP 增长 / 通胀二分法划分四象限,在四种经济情景下配置该情景占优的品种。优化算法支持最大化夏普或 Sortino;方法包括象限内最大优化指标 + 象限间等风险贡献、全资产风险平价、全体最大化优化指标、按优化指标分配风险预算共四种。输出含优化权重、净值、调仓记录、风险指标、相关性与绩效归因。
  • 中金所股指期货数据看板:跟踪 IF、IH、IC、IM 及对应指数,按同一交易日口径展示收盘快照、期限结构、历史年化升贴水与统计分位。
  • 场外结构化产品定价:覆盖雪球、凤凰、气囊与障碍类产品,支持 Monte Carlo、BSM、积分法定价;输出公允价值、PV、PoL、Delta / Gamma / Vega / Theta / Rho,以及存续路径状态。
  • 机构级可视化:把常用金融工程方法做成开箱即用、可交互的分析与回测界面。

风险平价管理界面

风险平价 dashboard 页
风险平价 dashboard 页
编辑四象限投资品种
编辑四象限投资品种
选择默认优化方法与优化指标
选择默认优化方法与优化指标
配置组合信息、回测窗口、基准、集中度约束、再平衡带、交易成本
配置组合信息、回测窗口、基准、集中度约束、再平衡带、交易成本

股指期货界面

股指期货看板自动更新至最新日收盘行情,计算历史年化升贴水率、分位值等描述性统计
股指期货看板自动更新至最新日收盘行情,计算历史年化升贴水率、分位值等描述性统计

场外衍生品定价界面

场外衍生品定价、簿记、估值,A 股交易日历,股指历史波动率
场外衍生品定价、簿记、估值,A 股交易日历,股指历史波动率

风险平价方法论

基于桥水基金创始人达利欧(Ray Dalio)的风险平价框架,把全球大类资产按宏观周期放入四象限,以历史波动率与协方差为风险度量,目标是构建长期夏普比率大于 1 的全天候指数组合。

下文按顺序说明:风险平价定义、四象限假设、四种优化方法与求解器、回测与再平衡、交易成本、绩效归因、相关性展示,以及我对模型有效性的看法。

风险平价(Risk Parity)

传统组合常按资金等额或主观比例配置,结果往往是少数高波动资产贡献了组合绝大部分风险——典型的「看似分散、实则集中」。风险平价反其道而行:让每个资产(或每个象限)对组合总波动率的边际贡献尽可能相等,从而在风险维度上真正分散。

形式上,资产 i 的边际风险贡献为

\text{MRC}_i = \frac{(\Sigma w)_i}{\sigma_p}

其中 \Sigma 为协方差阵,w 为权重,\sigma_p 为组合波动率。等风险贡献(ERC)即对所有 i,j 有 \text{MRC}_i = \text{MRC}_j。

系统用过去 N 个交易日(默认 156)的日收益方差 / 协方差作为风险输入,约覆盖大半年市场状态:既足以估计二阶矩,又尽量避免把过时的相关性、或对近期噪音的过拟合,一并带进决策。

需要强调:风险平价并不以最大化历史收益为目标,而是追求风险调整后收益的稳健性。因此最终优化目标统一落在最大化夏普或 Sortino。象限之间再平衡风险预算,是为了让组合穿越宏观周期,而不是押注单一环境。

经济情景四象限

经济环境沿「增长」与「通胀」两个维度循环,两两组合得到四种宏观象限。不同资产在不同象限表现占优:增长上行利于权益与商品,通胀上行利于商品,通胀下行利于债券与成长股;经济下行时的占优配置缺少统一理论,故因人而异。

基于国内市场的精简版四象限
基于国内市场的精简版四象限

在四个象限中各放入一类「在该象限占优」的资产,再用风险平价分配风险预算,即可得到对单一环境不那么敏感的全天候组合。

若你认为债券和黄金应当长期持有,可以在每个象限都加入它们——这通常不会破坏框架。反过来,若象限内样本过少或多重共线性严重,协方差可能退化(破坏正定性),优化器便难以收敛到「权重之和等于 1」的可行解。

同一资产可以出现在多个象限(例如商品同时用于过热与滞胀对冲)。系统允许标的跨象限重复;在象限层面做风险平价时,这种重叠暴露会自然体现。

将哪些占优资产正确地放入四个象限,是该策略最核心的假设与参数。

四种优化方法

每个组合可任选以下四种方法之一;后台异步任务会同时算出四种结果,便于对照。

比率指标可在夏普比率与 Sortino 比率之间切换(默认夏普)。约束统一为长仓 w \ge 0、\sum w = 1,并可设单资产集中度 max_weight(默认 33%;品种较多时可调至公募常见的 20%)。不建议超过 33%。

方法 说明
象限内最大化优化指标,象限间风险平价(默认) 先在每个象限内最大化所选指标(夏普 / Sortino)得到内部权重,再令各象限波动率贡献相等(ERC),两层权重相乘。 兼顾象限内进取与象限间平衡。
所有投资品之间风险平价 经典风险平价:忽略象限,让每个基础资产对组合波动的边际贡献完全相等。易重仓先天低波动资产(如债券、黄金),低配高弹性资产;适合品种数量较少的情形。
全体最大化优化指标 马科维茨均值–方差框架下,直接最大化组合历史优化指标;对样本高度敏感,适合自动跟踪趋势。
按优化指标²分配风险 各资产风险预算 \propto 单资产指标²,给予历史表现更优者更高风险预算——动量与风险平价之间的折中。

为什么要在波动率平价之外引入夏普 / Sortino?因为波动不完全是坏事:拿固收与权益的绝对波动直接比权,往往没有意义——承担风险可能换来更高期望收益。最大化夏普(收益 / 波动)或 Sortino(收益 / 下行波动),是在风险预算与收益质量之间找平衡。

默认的象限内最大指标 + 象限间风险平价优化方法,据我所知在公开工具里并不常见。桥水强调的是:不猜测未来经济落在哪个象限,而是问“不同情景下谁受益、谁被杀估值“。把占优资产放进对应象限后,情景内追求指标最大化,情景间假设四种宏观状态概率相近并做风险平价———请不要尝试当一名经济学家去预测未来。

为避免协方差退化,建议至少输入 5 种以上走势相对独立的品种;否则在权重之和为 1 等约束下,可能找不到最优解。品种越少,回溯窗口(建议超过 1 个月)和回测区间(建议至少 2 年)越应拉长。

求解器实现

  • ERC / 风险预算:Spinu 循环坐标下降(CCD)闭式迭代。每次固定其余权重,对单一资产有闭式更新,收敛快、精度高于通用规划器,且无需求逆。
  • 最大比率:SLSQP 约束规划;支持热启动(以上一交易日权重作 x_0)与预算入参(回测逐日传入预计算的 cov / mean),使逐日调用只需一次热启动求解。
  • 比率可选夏普(对称波动)或 Sortino(仅下行波动),影响最大比率目标与单资产风险预算的计算口径。

回测系统

回测采用单位净值法,逐交易日推进,并严格隔离未来信息:

  • 决策与结算时序隔离:每个交易日 t,先用滚动 156 日窗口(仅使用 \le t 的数据)重算最优目标权重;当日 NAV 用当日收益 r_t 更新;新权重自 t+1 起生效——「今日决策、明日执行」,决策与收益结算不共享未来信息。
  • 成分逐步纳入:历史行情信息不足的品种权重暂为 0,不拖后组合起点;待其历史行情累积到 min_window(默认 60 日)后自动纳入。
  • 再平衡触发:任一品种的实际(漂移)权重与当日最优目标偏离超过 rebalance_band(默认 5 个百分点,绝对值)时,整体再平衡回当日最优,确保调整后无任一品种偏离超过 5%。默认满仓;若有剩余资金按目标补足,分红通过复权序列再投资。
  • 性能:用前缀和滚动维护每日窗口的均值 / 协方差(S_1、S_2 加减),将逐日成本从 O(window \cdot n^2) 降为 O(n^2);优化器以上一交易日权重热启动,避免重复冷启动。

即使回测结束日之后的未来价格发生变化,也不会改写该日之前的 NAV 与历史权重;日常只需对新增交易日做增量回测。

交易成本

回测可按组合设定三项费率,仅在触发再平衡时扣费,按比例从当日单位净值中扣除:

费率 默认 缴纳方
手续费 0.015%(万 1.5) 双边(买 + 卖)
滑点 0.015%(万 1.5) 双边(买 + 卖)
印花税 0.05% 单边(仅卖出)

设再平衡日权重变化 \Delta w = \text{目标} - \text{漂移},记 turnover = \sum |\Delta w|(买 + 卖双边绝对值之和)、sell\_turnover = \sum \max(0, -\Delta w)(净减仓),则:

\text{cost} = turnover \times (\text{手续费} + \text{滑点}) + sell\_turnover \times \text{印花税}

即:建仓 / 买入缴手续费 + 滑点;卖出缴手续费 + 滑点 + 印花税。这是比例换手模型,用于研究级摩擦近似,不含印花税分档、最低佣金等非线性规则。

基于 Brinson 思路的绩效归因

Dashboard「绩效归因」将区间总收益拆为四个可加桶。实现受 Brinson 业绩归因启发,但不是经典 Brinson–Fachler 的「相对基准行业配置 / 选股 / 交互」三分法;此处「截面选择」指按组合自身平均权重静态持有时的结构贡献,请勿与研报中的选股 Alpha 划等号。

桶 日度含义 如何理解
系统性 Beta \beta \cdot r_b 组合对所选基准的线性暴露;\beta = \text{Cov}(r_p, r_b)/\text{Var}(r_b),全区间估计一个常数 \beta。
截面选择 \sum \bar{w}_i r_{i,t} - \beta \cdot r_b 若每天都按平均配置持有,相对「纯 Beta」多赚或少赚多少——体现选了哪些资产、结构如何。
时序调仓 \sum (w_{i,t} - \bar{w}_i) r_{i,t} 实际权重偏离平均权重的动态部分——再平衡、漂移、偏离带触发的调仓价值。风险平价主要赚截面与 Beta 的钱;时序调仓只要不大亏,通常就算合格。
残差 — 实际净值总收益 − 上述三桶(Carino 链接后)。主要吸收手续费 / 滑点 / 印花税,以及无法用上述因素解释的口径差。

每个交易日(税前)恒等成立:\text{Beta} + \text{截面选择} + \text{时序调仓} = \text{组合日收益}。跨多日用 Carino 对数链接将日度效应累加为几何总收益,使各桶可加且合计贴近区间总收益。若设置了交易成本,残差会明显反映费用;未设成本时残差应接近 0。

Dashboard 图表包括:收益拆解瀑布(四桶逐步累加到组合总收益);各资产收益贡献拆为静态(选品)与调仓(择时)两列;逐次调仓贡献展示每次再平衡持有区间的几何收益及对总收益的链接贡献。

相关性与协方差矩阵

Dashboard 展示近回溯窗口(默认 156 日)内各成分日收益率的相关系数与年化协方差。相关系数 \in [-1, 1],衡量收益同向或反向程度;分散化时追求低相关或负相关(相关不等于因果)。协方差绝对值越大,共同波动越强;风险平价优化器直接使用协方差阵。成分较多时可勾选子集查看,默认展示跨类别(指数、ETF、债券、商品等)的多样化样本。

模型有效性:我怎么看这套假设

若以历史 N 日波动率作为风险,波动低时买更多、波动高时卖出,行为上会接近某种「反波动趋势」:下跌时波动往往比上涨时扩张更快。因此,风险平价更适合具备买入并持有逻辑、呈现慢牛或周期性特征的资产;一句话——尽量避开历史上大部分时间都在阴跌的品种。

N 怎么取?我更推荐中长期用 156 个交易日滚动估计,调到 89 日通常也大差不差。窗口不宜过小(例如 15 日),否则模型容易过拟合近期噪音,而不是刻画样本区间内的统计特征与资产间相关性差异。也可以用机器学习在不同区间搜索「最优 N」,但很容易过拟合,实盘未必更好。

股指期货数据看板

中金所(CFFEX)四大股指期货——IF(沪深 300)、IH(上证 50)、IC(中证 500)、IM(中证 1000)——的收盘监控与历史升贴水分析。

该功能受 Alpha / 多空策略 / 期权对冲管理启发:交易员需要盯基差与贴水,决定交易哪份合约,以降低对冲成本。因此除基本行情外,系统还会计算年化升贴水率、综合升贴水率、分位值等描述性统计。

升贴水率反映期货对现货指数的偏离:

\text{升贴水率} = \frac{\text{期货价格} - \text{现货指数}}{\text{现货指数}} \times 100\%
  • 正值 = 升水:期货高于现货,常见解读是市场对未来偏乐观。
  • 负值 = 贴水:期货低于现货(如 IC、IM 长期深贴水);持有期货多头可能获得展期收益。

基差(Basis)= 现货指数 − 期货价格,与升贴水率互为相反数。年化升贴水率按剩余天数折年:

\text{年化升贴水率} = \text{升贴水率} \times \frac{365}{\text{距离交割天数}}

为规避当月合约临近交割的价格异常,平台采用加权合成口径:

\text{合成年化升贴水率} = 0.6 \times \text{次月年化} + 0.4 \times \text{当季年化}

即只看次月与当季,完全排除当月权重——在保留期限结构信息的同时,削弱到期日前后基差剧烈波动带来的噪声。

数据更新机制

  • bp_ingest 调度器每 BP_CFFEX_SYNC_HOURS 小时(默认 2h)通过 akshare get_futures_daily 增量拉取 CFFEX 日行情;有新交易日则落库并重算升贴水,无增量则跳过。
  • 前端读取最新交易日收盘快照,标注「已收盘」与数据日期时间;页面挂载时拉取一次,无轮询。
  • 后端以 Redis 30min TTL 缓存收盘快照,多客户端并发时只打一次库。
  • 前端 ECharts 支持时间轴拖拽缩放,以及叠加指数价格的双轴对比。

场外结构化产品定价

场外期权自动敲入敲出(autocallables)结构化产品定价与簿记模块,覆盖雪球、凤凰、气囊、障碍四类常见结构。

观测与日历

  • 敲入(KI):按 A 股实际交易日路径逐日观测(离散),未来交易日需人工维护,明年的需要等到年底交易所公布节假日安排。
  • 敲出(KO):仅在月度敲出观察日收盘判定,观察日之间上穿敲出线不构成敲出事件,且锁定期内不安排敲出观察。
  • 非交易日观察日按下一交易日递延。路径步长按实际交易日(默认252个交易日)折现。

票息与计息

雪球采用双票息约定:

  • 敲出票息(coupon_out):在敲出观察日触发敲出时,按一年365天年化应计支付。
  • 红利 / 期末票息(coupon_div):存续至到期且未敲出、未敲入时支付。

凤凰为条件派息结构;气囊 / 障碍按参与率与障碍类型结算。

估值状态与终止

估值日根据已实现路径判定状态:alive存续 / knocked_in敲入 / knocked_out敲出 / expired到期。

  • 已敲出:合约终止,现值记为 0,当前盈亏锁定为已实现敲出票息;示意图截断至敲出观察日。
  • 已敲入未敲出:按敲入后条款继续估值。

技术栈与实现故事

系统分四层:

akshare → bp_ingest(落库 / 清洗)→ PostgreSQL 18 + TimescaleDB → bp_api(FastAPI 量化引擎)→ web(Next.js)
组件 技术 说明
数据源 akshare A 股 / 港股 / 商品 / 海外指数行情
数据库 PostgreSQL 18 + TimescaleDB ≥ 2.23 日行情 hypertable、压缩、增量更新
后端 FastAPI + psycopg3 + SQLAlchemy 量化引擎 + auth + repositories
计算 numpy + scipy ERC 用 Spinu CCD;最大比率用 SLSQP
任务队列 Celery + Redis 异步回测 / 全量拉取 / 定时巡检;无 Redis 时回退 BackgroundTasks
鉴权 PyJWT + bcrypt + pyotp JWT + TOTP 两步验证 + httpOnly Cookie
前端 Next.js 16 App Router + React 19 Tailwind v4 + shadcn/Radix + ECharts

我本来就有投资组合管理与风险计量的经验,写博客时也熟悉 Next.js 与 React;今年跳槽后又补上了数据开发、数仓与模型交互。真正吃力的是后端接口层:我把从前做组合优化的 Python 脚本交给 Claude Code + GLM / DeepSeek 协助生成 ORM 与 API,后端仍是 FastAPI。产品原型用 Figma 出图,前后就只花了两周打磨出可用版本。

行情方面,A 股、指数、ETF、全球指数与期货数据主要走 akshare。东方财富反爬较严,优先用新浪与腾讯源;加 Cookie 也未必管用,且有限速。因此产品不会默认拉取全市场品种落库:需管理员在资产管理菜单添加品种,或直接改 bp_index_config 表。仓库 DDL schema 里已预置一批主流指数与 ETF,方便起步。

写在最后

Balanced Portfolio 不是「保证赚钱」的黑箱,而是一套把风险平价假设、优化约束、再平衡与摩擦成本写清楚、跑得出来的工具。我把它开源并写成这篇长文,是希望同样在琢磨配置与回撤的人,能复现、能质疑、能改参数。让更多人了解怎样才算是分散风险,为什么买多个品种不等于分散风险,协方差矩阵什么时候失效。

我选择将它开源并写下这篇长文,是希望所有同样在死磕投资组合优化和资产配置管理的朋友,能够无缝复现、敢于质疑、自由调整参数。

最后,欢迎大家试用产品(测试账号与密码均为:test1)。目前暂不开放注册,主要是因为服务器资源有限,回测任务极度消耗 CPU 和内存。不过产品完全开源,我也在文档中提供了详细的本地部署方案。

Balanced Portfolio 这个产品,是我对毕业后在券商自营工作两年多生涯的一个交代,是阶段性的终点。