MoreRSS

site iconRamsay Leung修改

软件工程师,蚂蚁金服 - 微信 - AWS,使用Emacs 与Linux 
请复制 RSS 到你的阅读器,或快速订阅到 :

Inoreader Feedly Follow Feedbin Local Reader

Ramsay Leung的 RSS 预览

一天25小时导致的Chromium bug

2026-11-10 04:46:00

1 1天25小时?

看到标题,读者第一时间会很奇怪,一天不只有24个小时么?这不是常识嘛,怎么会出现25小时。

但是某些国家,比如加拿大,一年中会有1天有25小时,那天之后的半年,也会出现一天只有23小时。

要明白这个突然消失或者增加的一小时,就需要先了解一下夏令时和冬令时。

2 夏令时与冬令时

正如孔夫子临河感慨那般: 「逝者如斯夫,不舍昼夜」

时间就这么静静地流淌着,我们使用时钟来衡量时间的流逝,有一个总钟表 UTC,它永远不快不慢、不跟着季节调整,它叫 Coordinated Universal Time, 协调世界时间。

它就是时钟里的「基准」,不管你在哪个国家、是不是夏天,UTC 都一样。

慢着,为什么叫 UTC 而不是 CUT?

因为这个缩写不是英文词序的直译,而是英文 CUT 和法文 TUC(Temps Universel Coordonné)之间的折中缩写

而某个国家的本地时间就是 本地时间 = UTC + 时区偏移

下图的加减标识就是时区的偏移

比如中国的北京时区, 东8区就是UTC+8, 而巴西圣保罗就是UTC-3, 假如当前 UTC 时间是 2026-11-03 04:00:00, 那么北京的时间就是 2026-11-03 12:00:00, 巴西圣保罗的时间就是 2026-11-03 01:00:00

那什么是夏令时/冬令时呢?

以加拿大的温哥华或者200公里之外的美国的西雅图为例,正常情况下,他们的时区(太平洋标准时间 Pacific Standard Time, PST)是 UTC-8, 也就是当 UTC 时间是 2026-11-03 04:00:00, 温哥华和西雅图的时间是 2026-11-02 20:00:00

为了让大家下班后还能多晒到太阳、少开灯,政府就出了个奇怪的规定:「春天某天凌晨,全城把钟表统一拨快一小时」

因为 本地时间 = UTC + 时区偏移 , 拨快一小时相当于把时区偏移加一,即从 UTC-8 变成 UTC-7, 这个 UTC-7 就被称为夏令时(Pacific Day Time PDT);而 UTC-8 是标准时间,俗称冬令时(Pacific Standard Time PST).

假如温哥华在3月8日凌晨2点从冬令时切换到夏令时,在11月1号凌晨2点从夏令时切换到冬令时。

那么就会出现3月8日这一天只有23小时,11月1号这一天有25小时的神奇现象。

看到这里,我虽然明白一年中确实可能有一天 23 小时、一天 25 小时,但还是被绕晕了:这也太麻烦了。就不能只选一个时区固定下来吗?

好消息是,有些政府已经意识到这个问题,决定不再调回冬令时。坏消息是,只有部分省/州这么做,其他地方照旧切换。

比如温哥华所在的不列颠哥伦比亚省在 2026 年 3 月 2 日宣布永久使用夏令时1,不再调回冬令时;而东边的安大略省和南边的华盛顿州仍继续在夏令时和冬令时之间切换。

结果温哥华和西雅图相距仅 200 公里(差不多广州到香港的距离),却差了一个小时。

时间在软件开发中是非常容易出错的,当我看到这个夏令时和冬令时切换导致的,一天可能出现23小时或者25小时的情况, 我就断言只要假设了一天只会有24小时这个前提(开发者也会觉得很无辜,这明明是常识嘛),那么就一定会出现 bug。

话音未落,这 bug 不就来了嘛.

3 Chromium 的 bug

Chromium的代码里面就有一段假设一天只会有24小时引入的bug:

https://chromium.googlesource.com/chromium/src/+/refs/branch-heads/8078/components/sync/service/device_statistics_scheduler.cc#87

这段代码的核心逻辑等价于:

1
2
3
4
5
6
7
base::Time ComputeEarliestAllowedTimeToRun() {
  if (last_recorded_at.is_null()) {
    return now;
  }

  return (last_recorded_at + base::Days(1)).LocalMidnight();
}

这个函数的值会被 ScheduleNextRun() 用来启动定时器:定时器到 earliest_allowed 时才触发 Run(), Run() 里大概有这样的判断

1
2
3
4
5
if (earliest_allowed > now) {
  ScheduleNextRun();
  return;
 }
// otherwise execute

也就是说:

如果「最早允许时间( earliest_allowed )」还在未来,就继续等;

如果「最早允许时间( earliest_allowed )」已经过去,就执行任务,并更新 last_recorded_at ,然后再安排下一次。

这个 ComputeEarliestAllowedTimeToRun 函数的本意是:

「有些不大重要的任务,比如数据上报,保证任务最多大约每天跑一次,并且尽量在本地午夜之后才允许下一次运行。」

问题在于,它把「加一天」理解成了 加 24 小时 ,但现实中的本地日历 「一天」 不总是 24 小时, 所以上面的函数使用了 base::Days(1) 表示精确的 24 小时,也就是 86400 秒。

但是这是物理时间,均匀流逝,并不代表本地的时钟时间.

以我们上面的11月1号温哥华夏令时换冬令时为例,时钟回拨,就会出现一天有25小时的情况.

last_recorded_at + base::Days(1), 在11月1号那天, 加24小时 并不等于是「第二天的相同时间」,而是会落在同一天更晚的时间。

假如 last_recorded_at: 2025-11-01 00:30 PDT, 因为回拨导致当天有25小时, 所以 last_recorded_at + base::Day(1) 就会变成 2025-11-01 23:30 PST, 当前时间 now 是 2025-11-01 00:30 PDT, 而 earliest_allowed (last_recorded_at + base::Day(1)).LocalMidnight() 就会变成 2025-11-01 00:00 PST

时间比较是没有带时区的,所以 earliest_allowed < now 就会变成 true, 那么定时器就会被执行。

执行完更新 last_recorded_at = now , 然后再次 ScheduleNextRun()

但此时 now 仍然在回拨日的 00:00~01:00 窗口内,新的 last_recorded_at 也还在这个窗口内。再次计算:

1
2
last_recorded_at + 24h -> 仍然落在同一天
.LocalMidnight()       -> 又得到当天 00:00

又早于 now,定时器又立即触发。

了解完 bug 形成的前因后果之后,修复起来也很容易,思路是:

使用本地日历计算「上次记录所在日期的下一天午夜」,而不是先加固定 24 小时再取午夜

Chromium 已经在两周前把问题修复了, patch: https://chromium-review.googlesource.com/c/chromium/src/+/8655919

但是思路却是相当「清奇」: 因为夏/冬令时的切换导致会有1个小时的偏差,那么我就再加4个小时的可容纳误差范围,总不能调出4个小时的差异吧:

1
2
3
4
5
6
7
8
// The metrics should be recorded once per calendar day, so the next possible
// time is midnight on the following day. Add 4 hours before rounding down to
// midnight to account for DST "fall back" days (which are 25 hours long).
base::Time earliest_allowed =
  last_recorded_at.is_null()
  ? now
  : (last_recorded_at.LocalMidnight() + base::Days(1) + base::Hours(4))
  .LocalMidnight();

well, 你就说我修没修复吧。

枫叶国的秋

2026-11-09 04:06:00

1 广东的秋

对于在广东长大的朋友来说,秋天是个熟悉又陌生的季节,在课本上读到非常多关于秋天的词句与诗篇。

比如「自古逢秋悲寂寥,我言秋日胜春朝」称颂秋天的壮美

又或者「停车坐爱枫林晚,霜叶红于二月花」描述秋叶的绚烂。

但是广东没有秋天,只有十个月的夏天,和伴随冷空气突如其来的短暂冬天。

我也没有机会切实体会到「无边落木萧萧下」的意境,毕竟在广东的树木都是一年四季常绿的。

2 加拿大的秋

不知不觉,今年已经是来加拿大的第4个年头了,之前我还写过一篇春天的文章:《三月的樱花》

我居住的城市温哥华纬度非常高,对应的中国城市位置相当于黑龙江省黑河市

尽管纬度极高,但由于受太平洋暖流,以及东面落基山脉阻挡了西伯利亚的极寒冷空气,温哥华的冬天相当温和,远比同纬度的中国北方暖和得多

只是相应,温哥华的冬天就非常多雨,甚至持续数个月之久,所以在温哥华也很少看到秋天,夏天结束后开始下雨,冬天就来了。

今天却与往年不同,到11月雨季都还没有来,我也终于有机会领略加拿大的秋。

2.1 枫叶

今年夏天换了个公寓,新公寓客厅窗户正对外面的枫树,我把升降桌搬到窗前,夏天的时候抬头就能看到满眼的绿色,非常解乏。

令我非常惊喜的,随着秋天步伐的临近,窗前的绿叶像沾满红墨水一样,突然红得亮丽

住的公寓附近住满了枫树,每天上下班,只需要抬头就能看到满眼红叶;而随着深秋的到来,红叶也逐渐被风刮到地上,踩上去就会有「沙沙」之响

2.2 三文鱼洄游

三文鱼洄游是在温哥华每年秋季看到的非常壮观的自然现象:

三文鱼出生在淡水河流中,长大后游到太平洋生活,成年后又跨越数千公里,回到自己出生的河流产卵。

今年雨季延迟,终于有机会去领略这生命的奇迹。

和朋友一起去 Coquitlam River Park, 到了公园之后发现,目力所见的水流处,都是三文鱼

眼前是一段布满岩石与枯木的湍急河道,水流从高处奔涌而下,激起层层白色浪花

而就在这片看似不可能逾越的急流中,三文鱼正奋力向上游进发。

我驻足观察了30分钟,成功越过急流的却只有寥寥几条。

以前只在故事里听过「鱼跃龙门」,今天才真正体会到这四个字的震撼。

三文鱼离开海洋之后,就停止进食了,所以它一直在消耗此前存储的能量,冲刺失败后却无法补充。

原来,生命真的可以如此顽强,壮丽。

往主河道走去,就能发现更多的三文鱼,真的是多到拿根棒子都能随便打到鱼,望着流淌的河流, 我难免会想起《动物世界》的场景,总感觉河的尽头会有头熊守在那里,在河边捞鱼吃。

(神奇的是,有朋友在我的推荐之下也来了这个公园看三文鱼,真的看到有一家三口的黑熊出门捕鱼)

继续沿着河道走,我来到了 Blue Bridge, 也看到了最美的秋景。

秋水长流,层林渐染。阳光恰好,秋意正浓。

黄叶在秋风的欢送下,轻轻落入河面,随着流水缓缓漂向远方。 顺着落叶飘去的方向望下,清澈的河水中,竟是成群的三文鱼,摆动着尾巴,奋力逆流而上。

一边是随波逐流的落叶,一边是迎流而上的生命。一个告别枝头,一个奔赴故乡。

原来,秋天不仅是万物凋零的季节,也是生命归来的时节。

巴菲特的股东手册

2026-11-09 00:20:00

1 缘起

最近一直在看价值投资的书籍,提起价值投资,最负盛名的肯定是巴菲特老爷子。

本着尽量读一手资料,而非第三方解读的原则,我去读了1996年巴菲特给股东们专门编撰的一本小书,名为《Owner’s Manual 股东手册》1,以向股东诠释伯克希尔-哈撒韦(Berkshire Hathaway)的经营理念。

里面重提在1983年,蓝筹印花(Blue Chip Stamp)公司合并到伯克希尔-哈撒韦时,他向股东们分享的13条股东相关的商业原则

2 13条股东相关商业原则

2.1 合伙人态度(Partnership Attitude)

虽然伯克希尔在法律形式上是公司,但管理层的态度是合伙关系。

巴菲特和芒格将股东视为所有者合伙人,自己则是管理合伙人,公司只是股东共同拥有资产的渠道

2.2 利益一致(Eat Our Own Cooking)

董事和管理层的大部分净资产都投资于伯克希尔

管理层的财务命运与股东紧密绑定,不依靠高薪或股票期权占股东便宜,只有在股东赚钱时才以相同比例获利

这个和软件开发里面的吃自己的狗粮(dogfooding)有异曲同工之妙,即自己开发的东西,自己要首先用, 自己都不愿意用的东西,客户更不愿意用。

2.3 长期每股内在价值最大化(Maximize Per-Share Intrinsic Value)

公司的长期经济目标是实现每股内在商业价值年均增长率的最大化。

评价公司的标准是每股价值的增长,而非公司规模的大小。强调不会盲目扩张

2.4 优先直接拥有优质企业(Direct Business Ownership)

首选是通过直接收购能产生现金且资本回报率持续高于平均水平的多元化企业;

次选是在公开市场上购买优秀公司的股票

2.5 重视主要控股企业的具体盈余(Report Earnings of Controlled Businesses)

由于传统会计准则的局限,合并利润很难反映真实的经济表现

管理层更看重并公开各个主要控股企业的具体经营盈余和行业发展环境

即财报可能会误导人,要根据具体行为进行分析,不能唯财报是论

2.6 会计后果不影响决策与「透视盈余」(Accounting Consequences & Look-Through Earnings)

会计处理方式不应影响运营或资本配置决策

相比于按会计准则必须报告的1美元盈余,公司宁愿选择无法反映在报告上的2美元盈余,并通过「透视盈余」来衡量真实的经营成果

简而言之,就是不会为了财报好看而放弃优质的投资机会,或者为了财报好看,而买入非优质资产。

2.7 极具节制地使用负债(Conservative Use of Debt)

极少使用债务,借款时也尽量采取长期固定利率结构

宁可拒绝有吸引力的机会,也绝不让资产负债表承受过度杠杆的风险

又因为伯克希尔旗下有类似 Geico 这样的保险公司,可以免费地使用「浮存金」,即用户付费把钱给保险公司使用,所以伯克希尔就更不会主动负债。

2.8 拒绝为管理层私利收购(No Managerial “Wish List”)

管理层的扩张欲望不会由股东买单

绝不会为了扩大公司规模或进行所谓的多元化,而以忽视股东长期经济利益的高价去收购整家企业

2.9 留存收益的价值检验(Retention Test / $1 Rule)

定期检验留存收益的有效性:评估留存的每1美元盈余,长期来看能否为股东创造至少1美元的市场价值增值

2.10 慎重发行新股(Issuance of Common Stock)

只有在收到的商业价值与付出的价值完全对等时才会发行普通股

绝不在股票市值被低估时增发股票,避免损害原有股东利益

2.11 长期持有与拒绝轻易抛售(No Selling of Good Businesses)

无论出价多高,绝不出售公司持有的优秀企业;

对于表现欠佳的企业,只要其能产生现金流且管理与劳资关系良好,也不轻易抛售

因为好公司总是相对稀缺的,卖了可能就买不回来了。

2.12 在报告中保持坦诚(Candor in Reporting)

在向股东报告时保持高度坦诚,全面告知评估商业价值所需的正面与负面事实

巴菲特认为欺骗公众的CEO最终会在私下欺骗到自己,会被回旋镖打到

2.13 对具体投资意图保密(Secrecy on Investment Ideas)

尽管坚持坦诚原则,但对可交易证券的具体投资活动仅在法律强制要求的范围内披露

好的投资想法稀缺且具竞争价值,因此通常不对外公开讨论具体的股票买卖

3 实事求是与合作共赢

老巴这13条原则,看下来就是平平无奇嘛,觉得这些要求不是理所当然嘛?

但是正因为有太多为了财报,为了奖金,为了股价而做出各种骚操作的管理层,老巴才需要出来反复强调。

老巴的13条原则总结下来就是8个字:实事求是, 合作共赢。

我老巴会好好干,把企业搞上去,也不会用你们的钱给自己乱发奖金,我身家99%都在这家公司上,大家都是一荣俱荣,一损俱损。

4 分权与接班

老巴在《股东手册》里面还提到了伯克希尔的管理机制,伯克希尔旗下拥有约3.3万员工,但总部仅有12名员工。

子公司经理人拥有高度经营自主权,总部专注于跨行业的资本配置,以及为管理者创造理想的工作环境, 子公司就专注于业务运营并向总部输送多余的现金

有趣的是,老巴在这本96年的小册子里面就提到自己的接班问题,规定未来巴菲特的职责将一分为二, 分别设立一名主管投资的高管和一句主管运营的高管。

老巴在1996年就开始提退位接班的事,但是直到今年(2026年)9月,老巴才真正退休交班; 即使是1996当年就被老巴选为「太子」,也要30年后才能接班。

这让我不禁想到另外一位老太子的话:「天下岂有三十年之太子乎」

老巴还在本书的最后开了个玩笑:

「我热爱管理伯克希尔;如果享受生活能促进长寿,那玛土撒拉的记录恐怕要保不住了」(这位是圣经记载的最长寿的人物,据传活到969岁)

「太子」看到这话,估计要晕过去了。

战胜所有市场的男人,从拉斯维加斯到华尔街

2026-11-06 14:35:00

1 前言

空闲时间一直在断断续续地读书,刚刚读完了一本传记《A Man for All Markets》,副标题是《From Las Vegas to Wall Street, How I Beat the Dealer and the Market》

直译过来应该是《为所有市场而生的男人,从拉斯维加斯到华尔街,我是如何击败庄家和市场》,不过翻译成《战胜所有市场的男人》听起来更加霸气。

这本书是量化基金之父,著名数学家爱德华-索普(Edward Thorp)的自传, 自传的内容主要是分成三部分,分别是索普的艰辛的求学之路; 成为数学家之后,运用数学,通过算牌在21点中战胜赌场,从而名声大噪; 以及如何通过计算机和统计套利,成为了世界上最早的量化基金,并实现20多年每年都盈利的辉煌战绩;

2 艰辛求学路

索普出生在美国芝加哥,父母都是普通的工人,母亲是菲律宾移民,而他出生时正好赶上大萧条,所以他的童年记忆基本是与贫穷相伴。

索普最早的记忆是两岁时(1934年12月),在芝加哥阴冷刺骨的冬天,房东对父母说「我们不租给带孩子的家庭」,把他们一家拒之门外。

五岁时,索普就开始通过售卖饮料和铲雪打工赚钱。

为了攒钱上大学,11 岁起做报童攒学费,每天凌晨 2:30 到 3:00 起床,骑着旧自行车在二战灯火管制下的漆黑街巷里送报纸。

甚至有一次,因为极度缺乏睡眠,在骑车下坡时睡着发生车祸。

二战结束后,从菲律宾集中营幸存的 10 位避难亲戚都挤进他家。

生活虽然清苦,但是索普却天资聪颖,从小就喜欢通过实验来探究世界运行的规则, 他用送报纸赚来的钱购买电子零件、透镜以及化学品;甚至用化学来搞各种恶作剧。

但索普的家境根本负担不起高等教育的费用,而他极其向往学术界,那是他改变贫困命运的唯一出路。

高二修化学课时,老师 Mr. Stump 提到了全南加州高中化学竞赛,前几名可以获得加州各大学的奖学金, 为了拿到奖学金供自己上大学,他下定决心全力自学并冲刺化学竞赛。

为了准备竞赛,索普向老师借来了过去 10 年的竞赛真题进行题型分析,除了高中课本,他同时啃下了两本大学化学教材;最终在模拟真题时能拿到 99% 以上的高分。

考试当天官方临时允许使用计算尺(Slide rule),但高二的索普只买得起一个10美分的玩具塑料计算尺, 而其他高三考生都用专业精密计算尺,导致他在规定时间内没能算完最后大量计算的题目。

结果他在做完的873分题目中拿到了869分,最终获得第 4 名,错失了他最想去的加州理工(Caltech)和加州大学伯克利分校(UC Berkeley),另外,该竞赛规定次年不能重复参加。

到了高三,为了筹集大学学费,索普决定换赛道参加南加州高中物理竞赛, 由于高中物理老师并不懂这门学科,他完全靠自学和自己平日做过的各种电路与物理实验来准备。

最终索普以超过第2名50多分的 931 分的高分斩获全南加州第1名。

作为第1名,他拥有优先挑选奖学金的权利, 虽然加州理工提供了全额学费,但当地每年2,000美元的住宿生活费是他贫困的家庭无法负担的, 因此他最终选择了提供高额奖学金与低住宿费的加州大学伯克利分校。

他在大学里又经历了两次「换赛道」,索普最初的专业其实是化学,成绩高居第一。

但在期末实验样本分析中,助教做出了不公正的判罚把他的排名降到第 4,愤怒的索普直接退掉了化学课, 将专业改为了物理学,并在大二转学到了 UCLA.

在 UCLA 攻读物理学博士期间,为了解决量子力学计算难题,他发现自己需要学习极深的高等数学,干脆再次「换赛道」, 转而拿下了 UCLA 的数学博士学位。

但即使上了大学,贫困也并未就此远离索普;

上大学前夕,母亲因出轨与父亲离婚,并私自花光了他送报纸多年积攒的钱,让他几乎断绝了经济来源。

大一在伯克利时,他每月靠不到 100 美元维生。周日宿舍不供餐时,他会去教会的开放日充饥,喝免费的热巧克力、吃甜甜圈。

1956 年结婚时,索普所有的旧衣服洗得发灰,全部塞在一个扣子坏掉的单人皮箱里;

他和室友曾合买过一件 40美元的外套轮流约会穿,在结婚当日,舍友把他拥有的半件外套的所有权当作结婚礼物送给了索普。

3 击败庄家

1958 年圣诞节假期,当时在 UCLA 担任数学讲师,26 岁的索普和妻子去拉斯维加斯度假。

出发前,同事告诉他,几位数学家刚发表了一篇关于二十一点基础策略的论文,宣称能将赌场的优势降至仅 0.62%。

二十一点(Blackjack),是一种经典的扑克牌赌场游戏,玩家与庄家进行对决,通过抽牌让手牌的总点数尽量接近 21 点,但绝对不能超过 21 点;否则称为「爆牌」,玩家会立刻输掉本局赌注。

Ace 可灵活计为 1 点 或 11 点, 10、J、Q、K均统一计为 10 点, 2 ~ 9按牌面上的数字原值计点。

庄家点数小于 17 点时必须强制要牌,达到或超过 17 点时必须停止要牌,玩家无此限制。

索普便带着写有策略的小卡片,拿了 10 美元筹码在赌场试水。

在牌桌上,索普的「异类」打法引发了周围赌客和庄家的嘲笑与奚落,虽然他最终 15 分钟输掉了 8.50 美元,但这次体验让他产生了一个直觉:

赌场里弥漫着无知与迷信,即便是所谓的高手也根本不理解这个游戏背后的数学概率

回到 UCLA 图书馆查阅相关论文之后的索普突然意识到:

二十一点的规则本质是不放回抽样,随着牌一张张发出,残牌堆的构成时刻在变,玩家与庄家的数学优势会在两者之间剧烈波动, 只要玩家能动态跟踪打出的牌,并在优势偏向自己时下重注,就能从长期上击败赌场

所以索普只要计算出,残牌堆里面,剩下什么牌时对玩家有优势,他就可以根据胜率下注,从而击败庄家。

1959 年索普到 MIT 担任讲师后,起初用手摇计算器算得头昏眼花,几百年也算不完;随后他得知 MIT 拥有当时最先进的 IBM 704 大型计算机,便自学了 FORTRAN 语言编写程序,很快就穷举出结果:

  • 抽走全部 4 张 A:玩家劣势增加 2.51%(庄家优势大增)
  • 抽走全部 4 张 10:庄家优势增加 1.94%
  • 抽走全部 4 张 5:原本偏向赌场的 0.21% 优势,直接暴涨为对玩家有利的 +3.29% 优势

为了方便在赌场实时算出当下的胜率,索普还发明了动态计牌系统(Card Counting Systems),并在 1966 年提出了高低点数法(High-Low Point Count):

将小牌(2 ~ 6)记为 +1,中性牌(7 ~ 9)记为 0,大牌(10, J, Q, K, A)记为 -1。当牌桌出现一张牌时就心算 +1/0/-1, 当累积计数值显著为正时,说明剩余残牌富含大牌,玩家占优。

再通过凯利公式,按实时胜率动态调整下注比例:优势大时下重注,优势小或无优势时下最小注。

这样不仅能在数学上实现资本的长期指数级增长,还能从根本上规避爆仓的风险。

凭借这套「基础策略 + 动态计牌 + 凯利资金管理」的完整体系,在拉斯维加斯赌场进行了为期一周的实战验证,用 10000 美元本金斩获了 11000 美元净利润,彻底验证了数学对赌场的胜利。

并就此写了《击败庄家》1一书,名声大噪,从而被所有的赌场封杀。

4 击败市场

在赌场证明自己的理论之后,索普很快就被拉斯维加斯的赌场封杀,即使尝试各种易容也无补于事。

索普就意识到,既然他能战胜拉斯维加斯的赌场,为什么不去更大,更开放的赌场—华尔街来证明自己呢?

投资本质上是简化版本的赌博;既然二十一点可以通过数学概率战胜,那么华尔街也必定存在可以通过数学、统计学和计算机去发现的数学优势。

当然,和所有的投资者一样,聪明如索普,早期投资时因为对金融市场一无所知,也难免当韭菜:

开始他听信新闻买入了叫 Electric Autolite 的股票,结果股价直接腰斩。

他坚持要等到「涨回本」才卖,结果一等就是4年; 后来他在瑞士银行开户用 3倍杠杆炒白银,尽管他对白银供需的大趋势判断完全正确,但短期的价格剧烈波动和杠杆机制直接导致他爆仓被清场;这些失败让他意识到:

绝不能投资自己不懂的东西,且必须把风险管理置于核心位置

在踩了不少坑之后, 1964年索普搜集并研读了大量的金融著作。

1965 年 6 月,索普在一本关于股票认购权证(warrants)的小册子中发现了突破口。 他意识到权证与其对应的正股价格之间存在着明确的数学关系,无论公司的基本面有多复杂,两者的价格都会绑定变动.

索普提出对冲(Hedging)套利概念:

如果权证相对于正股被大幅高估,可以通过「买入相对低估的正股,同时卖空相对高估的权证」来锁定套利,并抵消价格波动的风险。

随后他在加州大学欧文分校(UCI)结识了同样研究权证的经济学家 Sheen Kassouf。

两人合作完善了权证对冲模型,并在 1967 年出版了开创性的著作《Beat the Market》(击败市场)2.

在《Beat the Market》一书,索普巧妙地将公式中不可预测的股票增长率和折现因子替换为无风险利率(美国国债利率), 独立推导出了计算期权合理价格的精确数学公式。

后来有两位经济学家布莱克(Fischer Black)与 迈伦·斯科尔斯(Myron Scholes)受此书启发, 给出了严格数学证明的期权定价公式(Black-Scholes Formula), 并且在1997年凭借此论文获得了诺贝尔经济学奖.

在 1973 年,针对缺少精确解的美式看跌期权(American Put),索普利用自己研发的「积分数值法」(Integral Method)率先在计算机上算出了精确的理论价格。

1974 年 5 月,索普受邀去芝加哥大学作报告,期间与布莱克共进晚餐; 由于索普此前已经轻松算出了美式看跌期权的数值解,他专门打印了一份计算结果带去晚餐,准备向布莱克请教学术界的技术路线。

结果还没等索普开口,布莱克就主动谈起自己正在研究美式看跌期权, 并大声叹息遇到了无法克服的数学计算瓶颈; 索普瞬间意识到,如果连布莱克这样的顶尖学术权威都没解决这个问题,说明整个华尔街和学术界都还没掌握这个算法。

为了保护自己对冲基金的独家交易优势,索普当即偷偷把那份计算纸重新塞回了自己的公文包里,绝口不提自己已经算出的答案。 学术界直到 1977 年才首次发表了美式看跌期权的数值计算方法

索普的Princeton Newport Partners, PNP对冲基金的核心理念是市场中性,即通过建立平衡的对冲头寸,消除了大盘整体上涨或下跌对组合的影响,使得收益仅来自于定价偏差的回归, 实现在牛市和熊市中都能稳定获利。

具体的策略如,可转换证券对冲:寻找同一家公司发行的不同证券(如正股、权证、可转换债券、可转优先股、期权)之间的相对定价偏差,买入低估证券的同时卖空高估证券;统计套利:通过计算机监控上千只流动性高的股票,找出短期内过度上涨与过度下跌的股票组合等等。

因为早年的爆仓经历,导致索普高度重视风险控制,策略会把「黑天鹅」事件和极极端崩盘(如单日暴跌 25%)也考虑在内,确保任何情况下都不会导致资金链断裂。

索普成立的 PNP 基金在近 20 年的运营中保持了年化近 20% 且没有一个季度亏损的惊人纪录,只是PNP基金却因一场与他本人无关的监管风暴而遗憾清盘。

他开创的套利模型和风险控制体系,直接启发并奠定了后来的 Citadel等万亿量化巨头。

5 价值投资与量化交易

当初了解索普的契机,是阅读关于价值投资相关书籍,引用到了索普的书。

有趣的是,索普曾经在1968年,与当时尚未名震天下的巴菲特会面并共进晚餐; 当时索普不知道的是,老巴刚刚结束了自己的合伙投资公司,其实在帮自己的老客户面试索普的PNP基金是否适合接手老客户的资金。

虽然老巴的价值投资理念,是通过自下而上评估公司基本面与内在价值,寻找被严重低估的优质企业并长期持有,与索普的量化与市场中性套利天差地别,后者不评估公司业务的好坏,而是寻找同一家公司不同证券或不同股票之间的相对定价偏差。

但是两人有类似的理解逻辑,两人都拒绝盲目跟风,强调只有在胜率(索普的数学优势)/概率(老巴的安全边际)站在自己这一边时才出手; 其次, 两人都是凯利公式的拥趸:两人都主张「在优势极大时重注,无优势时不下注」,并将避免爆仓视为投资的第一铁律。

可见成功的投资者即使投资的流派与手段不同,但是背后的思考却是殊途同归的。

这不禁让我想起年初半导体暴涨时,被称为「美股版本之子」的前 OpenAI 研究员、写下十万字 AGI 宣言《Situational Awareness》的 Leopold Aschenbrenner, 投资的基金从2亿干到了200亿规模。

涨幅这么大,背后肯定是加了高杠杆,但是盈亏同源,上涨的时候有多少风光,下跌的时候就有多少惨烈; 在7月底时行情回调时爆仓,不得不骨折价把整个组合卖给 Citadel; 8月份行情回暖之后他卷土重来,又在11月5号纳斯达克大盘下跌6%的行情,再次爆仓。

这不禁让我想起了,香港电影《头文字D》里面,阿木在飚车出车锅之后回家问老爸要钱买赛车,老爸安慰他, 不要太介怀车祸的情景:人没事,才可以做到世界冠军的嘛.

6 结语

随着年岁渐长,越来越习惯用常理的眼光来审视事物,在阅读的时候也是如此, 尤其是自传,因为人难免会美化/吹嘘自己.

比如索普说自己的书启发了诺奖作者的论文,我读下来难免会觉得是自我吹嘘,我因此还搜了相关资料,布莱克传记《Fischer Black and the Revolutionary Idea of Finance》的确提到了《Beat the Market》这本书:

The precipitating event for the suggestion seems to have been the publication in 1967 of Edward Thorp and Sheen Kassouf ’s Beat the Market, which purported to offer a scientific system for making money in the stock market by buying stock and at the same time selling short something called a “warrant” on the same stock. A warrant is a kind of stock option issued by a corporation that gives the holder the right to buy shares in the company at a specified price at any time up to a specified date in the future. In 1968 there was no organized options exchange, but there were over one hundred traded warrants. Thorp and Kassouf claimed to have found a way to identify warrants that were overvalued, and to profit by setting up an arbitrage with the stock.

促成这一建议的导火索,似乎是 1967 年爱德华·索普(Edward Thorp)与申·卡苏夫(Sheen Kassouf)《击败市场》(Beat the Market)一书的出版。该书声称提供了一套在股票市场上赚钱的科学体系:买入股票,同时卖空同一只股票上的一种叫作”认股权证“(warrant)的东西。认股权证是一种由公司发行的股票期权,持有人有权在未来某个指定日期之前的任何时候,以某个指定价格买入该公司的股份。1968 年还没有有组织的期权交易所,但已有一百多种可交易的认股权证。索普和卡苏夫 声称,他们找到了一种办法,可以识别出被高估的认股权证,并通过与股票搭建套利组合来获利。

索普当初并没有发表他的期权计算公式,所以无法验证他的公式是否真的布莱克发表的论文中的一致;不过就他的基金战绩而言,他启发了布莱克的论文这个说法,可信度还是相当高的。

索普也曾经说过,驱动他研究二十一点的并不是对金钱的欲望,而是「仅仅坐在房间里思考就能破解难」的科学挑战;我当然认可这是做科学研究的动机之一,但对于半生贫苦的索普而言,这是否是主因,就见仁见智了。

本书在2017年出版时,索普已经步入人生的暮年,年近85岁,在回顾完自己从赌场到华尔街的传奇历程后,索普分享了他的三条深刻人生感悟:

读书改变命运 :他的原话是:

教育为我带来了人生中所有的改变(Education has made all the difference for me)

索普强调,最宝贵的不是在学校被动接受知识,而是学会自学。 因为世界上没有课程会教你「如何算牌击败赌场」或「如何建立第一个市场中性基金」。

他奉行的原则是:绝不盲从所谓的专家或主流观点,凡事亲自去验证,用逻辑与数据做决定(我也是用他的原则去验证了一下他说的话)

知足常乐 :华尔街定义的成功是赚取最多的金钱;而对于我们来说,成功是拥有最美好的人生;他忠告读者多花时间在爱的人身上,常运动保持健康.

参与市场 :对于绝大多数没有精力或数学模型去寻找市场漏洞去「战胜市场」的普通人,可以通过购买低费率的宽基指数基金(如标普 500)并长期持有来参与市场;无论优势看起来多大,永远不要过度下注或使用高杠杆,「人没事,才可以做到世界冠军的嘛」;以及远离高息负债,利用复利。

索普从一个大萧条时期连裤子短了都买不起的报童,靠着自己的知识与思考,最终攻克赌场与华尔街,他的一生就是「理性、知识与独立思考改变命运」的最好写照

龙咬下的苹果

2026-07-28 19:42:00

1 龙咬下的苹果

《Apple in China: The Capture of the World’s Greatest Company》被《纽约时报》和《经济学人》评为2025年度迄今最佳书籍之一。作者帕特里克·麦基采访了两百多位前高管和工程师,并结合乔布斯未公开的会议记录、内部邮件及中国相关备忘录,揭示了苹果供应链与中国的紧密联系——远不止“把代工外包到中国”那么简单

除了大众「中国的工厂帮助苹果成为世界市值最高的公司」的认知外,作者也抛出了「苹果无意中塑造了当今的中国」这样一个与众不同的观点

有趣的是,这本书在 Amazon 上有4.7的高分, 但是它在豆瓣上却连词条都不存在,这意味着它其实是被「禁」了,就像18禁的电影更能吸引观众一样,我也对这样的「禁书」更感兴趣。


果然是被禁了,文章发出去之后被公众号秒删了


首先这本书的封面就非常有设计感,因为苹果的 Logo 就是被咬了一口的苹果,据说是不咬一口的话,苹果看起来就和樱桃很像。

而这本书封面:

被咬下的苹果的部分,刚好被龙的阴影所覆盖,而龙嘛,是 帝王之征 (脑子里总是会想起新三国的梗), 中国的象征, 所以封面中龙与苹果的关系就如书中描述的苹果与中国那般,相互交织了起来。

要理解苹果与中国的关系,首先就要理解苹果是家什么样的公司。

与谷歌,脸书,亚马逊这些科技巨头不同,他们更多都是互联网时代成长起来的,提供的是搜索,云服务,广告等在线服务;

虽说苹果也有软件服务,但是它更像是一家电子消费品企业,依赖制造业,需要有人帮他们把设计好的产品原型能制造出来,才可以销售给客户 而谷歌的搜索或者脸书的社交功能,就只需要工程师能把软件开发出来,就可以上线服务用户,并不需要中间商。

更通俗地理解,和苹果处境类似的,就是美股七姐妹里面的特斯拉,车设计好,总需要有工厂能制造出来。

差别就是,苹果自90年代开始,就不再拥有自己的工厂。

2 从台湾到中国大陆

从2010年开始,苹果就超过了微软,成为了市值最高的公司, 一直到近些年的AI浪潮兴起,苹果的市值第一地位才受到挑战,与微软、英伟达等公司交替领先。

乔布斯90年代重返苹果,整顿苹果业务,砍掉各种乱七八糟的产品线后,开始重新专注于个人电脑领域,定下了消费级与专业级、台式机与便携机的二维产品矩阵。

当时苹果为了扭转颓势,扭亏为盈,因此将在美国的最后的工厂也出售掉,只专注于设计

乔布斯回归后亲自操刀的第一款产品是iMac G3 (1998年),采用了颠覆性的半透明彩色塑料外壳,造型圆润像鸡蛋,是一台简洁的“一体机”:

设计非常美,但是制造起来却是非常高难度,苹果当时找到的是韩国的LG来作代工;而G3面市之后,凭借其精美的设计,可谓一炮而红,但是LG的产能一直上不去,并且良率也不是非常高,导致苹果无法快速铺货;

LG承诺的欧洲和美国的新工厂也因为种种问题难产,无法上线,更让苹果气恼的是,LG竟然觉得自己是核心供应商,想拿捏苹果。

因此苹果开始把目光转向其他供应商,尤其是当时冉冉升起的台湾供应商,其中的代表就是从手工作坊起家的鸿海科技, 不过它的另一个名字更为人熟知:富士康。

富士康老板郭台铭给当时主管供应链的库克打电话说,把订单给我, 我能解决所有的问题。

在千辛万苦拿下苹果订单后,郭台铭渐渐也遇到了和LG类似的产能问题,新建生产线是当务之急,问题在于,建在哪里呢?

制造业是劳动密集型行业,不是把生产线建好之后,流水线就能自动运转起来的,需要招聘大量的劳动力, 在订单爆单的时候,还需要能快速地招募到新工人。

随着改革开放的日益加深,中国大陆的大门缓缓打开,近乎无限量的廉价优质劳动力,非常优惠的税收,土地和产业政策, 让像郭老板这样的台商,把目光投向了海峡的对岸。

3 苹果掌握力

苹果硬件部门的组织架构:

苹果对品质有着非常高的要求,也非常热衷于挑战极限,书中提及的一个例子就是新款的 Mac Mini,设计负责人Jony Ive向ID工程师比划了一下 Mac Mini 的尺寸,问你能不能做出这个尺寸的电脑?这位工程师回复到,可以的。

Jony 比划的范围又小了一些,问到,这样呢?工程师,回复,可以的;Jony比划的范围再小了一些,问,现在呢?工程师回复,这个就非常难了。 Jony 就拍板说,我们就干这个尺寸的 Mac Mini。

这个就和孙子说的「取乎其上,得乎其中;取乎其中,得乎其下;取乎其下,则无所得矣」有异曲同工之妙。

但问题在于,原型设计是能设计出来,但是最终能如预期那般由工厂生产出来嘛?

这个就依靠苹果的MD工程师真的睡到工厂车间的地板上,和供应链的工程师一起优化生产流程。 为了保证制造的品质和工艺,苹果还会给「供应链」买先进的设备,放到工厂里面去,标明是「苹果专用」,在2012年,苹果就给在中国的工厂购置了超过73亿美金的「苹果专用」设备,到2016年,这个数字变成了133亿美金。

书中有一个趣事可以侧面印证苹果向中国外派工程师之多:

为了方便苹果的工程师去成都的工厂,苹果曾推动美国航空公司UA(United Airlines)开了一条从旧金山到成都的直飞航班,每周3个班次;而苹果承诺会订36个头等舱,来保证这条航线可以盈利;

因此,在疫情之前,旧金山飞上海的航班,往返含税约5000元人民币出头.

正因为此,苹果并不拥有「工厂」,但是却可以如臂使指那样掌控工厂; 有远见的代工厂也乐得与苹果合作,把苹果的各种先进制造工艺学到手,再回头接更多客户的单。

4 为什么是中国?

又回到最开始的问题,为什么是中国?是苹果一开始就高瞻远瞩,布局成这样的么?

读完全书之后,可以看到一个清晰的脉络,不是谁设计成这样的,而是多方博弈之后,演化出来的结果。

随着ipod, iPhone, iPad 系列的爆火,苹果需要能日产百万件设备的供应链,而有足够劳动力来满足苹果生产需求的国家或者地区也只有中国一家,苹果为了利用好中国的人力,就安排工程师去指导供应链的工厂;

而工厂出于自身扩张的目的,也乐见其成,有非常强烈的动力来学习苹果的技术,即使被苹果降低产品报价也在所不惜;而中国政府为了出口创汇,以及向科技密集型的产业转移,也非常希望可以引进先进产线,给地给贷款还给税收优惠;

多方作用之下,让中国的供应链形成了非常明显的人才,资源,成本的聚焦效应,可谓独占鳌头。

拥有廉价人力成本的国家,如越南,印尼,也想像中国那样提供税收优惠政策吸引外资,但是劳动力的数量,基础建设,人才密度比不上中国;而人口众多的印度,在人才密度和供应链成本上,也比不上中国;

库克曾多次表示,中国在高端精密制造领域的技能密度与产业工人规模具有巨大优势,其中他曾直言:在美国想开个模具工程师的会可能凑不够人,但在中国一个省能填满几个足球场。

诚然,中国的劳动力成本在上涨,但是中国供应链提供的成本和人才优势,又把产线转移到东南亚国家的劳动力成本给抹平了,如果生产线出问题没人能修,零件缺失还要回国内采购,停工带来的损失要远大于便宜工力省掉的成本。

而现在一直甚嚣尘上的供应链转换,更多是中美地缘政治,而非是企业基于生产成本用脚投票导致的结果。

5 红苹果

书中还有一大部分谈的是苹果和中国政府之间那种暧昧和微妙的关系,这部分估计也是本书被封的原因。

但是我觉得这政治部分的内容,更多是作者的一家之言,很多是属于臆测,从苹果的做法去猜测动机,然后再去影射中国政府。

在中国做生意,合规总是跑不了的,苹果在坊间一直有一个「在中国,外企中合规做得最好」的名头。

指望苹果这样的跨国巨头去和世界上最强大的政府之一正面硬刚,无疑是异想天开。

商业归商业,政治归政治,这才是苹果能在中国立足的根本。

理想主义者眼里的光

2026-06-07 05:30:00

1 前言

刚刚一口气看完了 JetBrains 对 Zig 作者 Andrew Kelley 长达一个多小时的访谈 Zig 2026 1,最打动我的,是 Andrew 谈及自己项目时眼里的光和发自内心,从嘴角溢出的笑容。

做自己喜欢的东西,眼里真的会有光的

2 Zig

最近 Zig 和 JetBrains 都有点处于舆论风口浪尖的样子, 鉴于不是所有的读者都有技术背景,先来介绍一下 Zig 和 JetBrains。

JetBrains 是一家成立于捷克、举世闻名的软件开发公司,专注程序开发工具,主要是IDE的开发,他们家的 IntelliJ IDEA 可以是Java程序员不可或缺的开发工具,甚至 Google 的 Android IDE也是基于 IntelliJ IDEA 二次开发的。

但是近些年来说 JetBrains 有点式微,据说一来是因为俄乌战争的原因,他们被迫与大量优秀的俄罗斯工程师中断合作,导致无法保证人手进行功能迭代;二来是在 AI Agent 的冲击下, 很多开发者已经没有使用IDE的必要了,而他们因为人手短缺又无法跟上 AI Agent 的开发,导致进一步落后,已经不再像以前那样被开发者所追捧。

Zig 是一种底层的程序开发语言,可以理解成 C语言的现代版本,而 Zig 的目标就是要替代C,成为更好的C。有技术背景的读者应该知道 C 在软件领域的影响力,C可以说是一切的基石,所以 Zig 的目标不可谓不宏大。

而 Zig 刚因两件事又出圈了,一个他们在官方博客宣布,代码托管平台要从 GitHub 迁移到非营利组织的 Codeberg, 因为他们抱怨 GitHub 太多 bug了, GitHub 的工程师又一直专注搞AI,连平台的基础能力都搞不好,整天崩溃(现在GitHub的可用性着实不行,每个月都崩个几回)。

另外一个事是,前段时间,使用 Zig 编写的 Javascript 运行时项目 Bun 被当红 AI 炸子鸡,下一个万亿巨头 Anthropic 收购了,因为 Anthropic当前最赚钱的产品 Claude Code 就是基于 Bun 编写的。

有趣的是 Zig 有一条明确的 AI 准则,就是不接受 AI 写的代码或者问题,Andrew 的原话是,AI写的代码就是垃圾,浪费时间来 Review, 但用 Zig 写的最知名的应用 Bun 又被最火的AI公司 Anthropic 所收购。

可能正因为 Anthropic 无法对 Zig 这个语言施加影响力,所以他们在3周前, 在自家AI的帮助下,用 Rust 把 Bun 重写,以取代 Zig, 这个 Rewrite Bun in Rust 的 Pull Request 仅新增了1百万行代码而已:

3 理想主义者

为什么说 Andrew 是个理想主义者呢?

因为他的目标太宏大了,他觉得现在的编程语言C, C++, Rust, Go 都不能满足他的诉求,所以他想写一个能满足自己的要求的编程语言,并且可以取代掉 C。

这个事情实在是太难了,因为 C, C++ 都已经成为行业标准近40年了,而像这些10来年冒起的编程语言: Go, Swift, Rust, Go 背后的是巨头 Google, Swift 背后的是另外一个巨头 Apple, Rust 背后也有 Mozilla 这个爹.

Zig 真的是开局什么都没有,连个能讨饭的碗都没有.

目标非常宏大,吹牛,说大话谁不会呢,但是难的是像 Andrew 一样为了自己喜欢的东西持续做了超过十年。

Zig 目前是由 Zig Software Foundation 这个非营利组织所托管,而这个非营利组织给 Andrew 开的年薪是15.4 万美金,这个薪水看起来不低,但就 Andrew 在编程语言和编译器方面的造诣,如果他愿意去大厂的话, 可以轻松翻2到3倍,甚至更多。

或者如果他对 Anthropic 妥协,Zig 甚至会推广得更好。

但是 Andrew 对此的原话是:

I’m comfy, I don’t need more (我现在很舒服,不需要更多了)

对更好的物质条件说不,坚持做自己想做的事情,或者我不应该说「坚持」,因为知足常乐,做自己喜欢的事,并不需要「坚持」。

而 Andrew 这种理想主义气质也一以贯之地影响了他对软件工程和开发的看法,他想写「不妥协」的代码(The bar that I want to hold software to is uncompromising perfection),而工程师应该清晰地知道自己在想的是什么。

就在这种信念的驱使下,Andrew 拒绝了AI贡献的代码,因为他认为提交PR的人并不知道代码到底在做什么,而只是简单地把AI返回的结果粘贴上来而已。

4 眼里的光

对于Zig 我之前也有所了解,对于 Zig 和 Andrew 宏大的目标,也想泼盘冷水,但是对于理想主义者来说,最不缺的就是泼冷水的人了,也就多我一个不多。

在各种AI冲击,取代软件开发的氛围烘托的当下, 看完整个访谈,真的很难不被 Andrew 开心的笑容所打动,看他分享着自己喜欢做的事情,让我这种满身「班味」的人也忍不住由衷地为他开心。

当主持人问道,对工作感到倦怠的开发者,有什么建议时?

Andrew 笑着回答到要好好运动,好好睡觉, 如果你在一家没有生气的公司工作,那就不要再尝试努力,准点下班回家。

他还分享起工作之外的趣事,自己跑的唯一一次马拉松,当他跑了21英里时候,实在跑不动,就开始走了,然后被旁边一个大爷超过, 这大爷肯定超过70岁了,他就问自己:「你怎么这样啊?」

但是他就还装死,继续走。

他自己说完,笑得不行了,我看到这里,也笑出声来了。

看完访谈,我回想起上周和朋友去科学馆的经历,把里面的各种科学设备都玩了个遍,还听了一堂科学课,周围的小朋友都非常踊跃地上台参与。

在课程结束后,课堂上左边的结束语是: THE WORLD NEEDS MORE NERDS(世界需要更多的‘书呆子’)

右边,刚好是一位希望成为计算机科学家的9岁小女孩

这个世界还是需要更多眼里有光的人的。