Wednesday, November 5, 2025

IBKR Bull Spread MTM 的P&L是怎么计算的

一位群会员(下面用代号 NF)在群里贴了两张图,提了一个问题。

第一张图如下:

Oct 31, 2025,NF 做了一个 Bull Spread。

第一条腿是这样的:

  • 标的:IBIT
  • 下单详情:NOV 07 '25 63 Call, Sold 7, 0.96 Limit, Day
  • 成交详情:以 $0.96 成交,成交总金额 $672,佣金 $3.71
  • 成交时间:06:45:59

第二条腿是这样的:

  • 标的:IBIT
  • 下单详情:NOV 07 '25 62 Call, Bought 7, 0.97 Limit, Day
  • 成交详情:以 $0.97 成交,成交总金额 $679,佣金 $3.69
  • 成交时间:06:45:59

到期日相同的看涨期权,一个卖高行权价,一个买低行权价,所以这两条腿形成了一个 Bull Spread。

两条腿同时下单,但是分别设置了 Limit,当日有效。难道 IBKR 不能关联两条腿,用 Net Debit/Credit 下单而不用分别设置 Limit?

两条腿关联起来的 spread 是 -$0.96 + $0.97 = $0.01,因此是 Net Debit = $0.01。在 BMO IL 里可以直接设置 Net Debit 下单。

$672 和 $679 都用正数,在概念上不是很清晰。在加拿大几大银行的券商会显示 -$672 和 $679:

  • -$672 (= 7 x 100 x -$0.96)
  • $679 (= 7 x 100 x $0.97)

第二张图如下:

第三张如下,NF 表述他遇到的问题:

NF 在 IBKR 上做 option 的 paper trading,熟悉操作界面,针对 IBIT 做了 option 交易,其中一个是 Call Spread (也就是 Bull Spread),头寸还活着,但是他在 IBKR 看这个还活着的交易的时候,IBKR 显示的(也就是第二章图里的展示)和他计算的( 他提供了 Excel 计算过程)不一样,而且非常离谱的结果。他希望有人能解释一下。

第四张图是他的 Excel 的一张 sheet 的截图和他的疑问: 


NF 在群里很活跃,所以我知道他的一些情况。他是上海人,将近五十岁,以前是专业人士,先在上海,后来在香港,在大的金融机构做期货和固定收益。一年多前离开香港登陆温哥华。目前没上班,更像是财务自由了。

他的 Excel 里很多专业术语,比如 Notional、Risk Facility、MTM 等。从他平时的发言可以看出他的  risk–reward 控制很严,这也是他经常用到的一个词。他不碰个股,只买 ETF,看好哪个赛道或板块就买该赛道 ETF。固定收益方向他买 TLTW,也因为他不上班,需要现金流,这是他自己说的。加密币敞口,他持有 IBIT。不受群里的其他人高额回报的影响。一切以稳为主。这种理念不同于一般散户,只有经过专业训练或经过大风大浪的人做得出。

不同于 TLTW,IBIT 自身不使用 BuyWrite Strategy “收租”,所以他就拿 IBIT 来练习在 IBKR 上做期权。这是我的猜测。

发问之后,隔夜都没人回复他的问题。借助 AI,我就班门弄斧了。


第二张图是什么?

这张图是 IBKR 展示的还活着的一个 Bull Spread 的 MTM 情况。

MTM = Mark-to-Market,按市价计价,或者 “盯市”。他在 Excel 里用到了这个专业术语,他肯定是懂的。在交易账户里,MTM 用于确定未平仓头寸(open positions,通俗语言就是还活着的)的每日盈亏,并用于结算你账户中的每日盈亏。


我们再来拆解图中的数字。

Last 是当前价或最新价,如果今天已经关盘,那么就是今天的收盘价 / 最新价:NOV 07 '25 62 Call 那条腿的最新价是 0.66;NOV 07 '25 63 Call 那条腿的最新价是 0.37。

Change 是 Last - 昨收(不一定是昨天,是前一个交易日)。NOV 07 '25 62 Call 那条腿的 Change 是 -0.88;NOV 07 '25 63 Call 那条腿的 Change 是 0.66。

Position 是仓位,两条腿分别都是 7 张,不过一个是买期权(7),一个是卖期权(-7)。

P&L 是今日盈亏(P=Profit,L=Loss,Today P&L)。NOV 07 '25 62 Call 那条腿的是 -582.90;NOV 07 '25 63 Call 那条腿是 442.89。他搞不懂这两个数字是如何计算出来的。

MTM 的记账法则是以当前的公允市场价格来评估未平仓头寸的价值,且在不断重新评估。这种方法通过反映持仓的当前价值,更准确、实时地反映投资者的财务状况,从而实现每日损益的记录,尤其对于股票和期货等交易活跃的工具而言更是如此。

如果账户使用了保证金,券商还根据 MTM 的方法来决定是否要追加保证金。

IBKR 对股票持仓也展示 MTM 的记账显示,而加拿大几大银行的券商没有这个。

那这个公允市场价格的变化(口径差)是多少呢?

我们来反推一下:

  • 582.90 / 7 / 100 = 0.83,与前面的 0.88 有点差别;
  • 442.89 / 7  / 100 = 0.63,与前面的 0.66 有点差别。

MTM 记账法的标记价格一般是 (Bid+Ask)/2 或模型价。今日盈亏使用的口径差等于 (今日 Mark − 昨日 Mark)。具体数值并没有在图中展示,所以很难理解 P&L 是怎么来的。

两条腿加起来:-582.90 +  442.89 = -140.01,也就是 IBIT Bull Spread 的 P&L,图中显示的是 -140.02,那是四舍五入造成的一点点误差。

第二张图最上面的 Daily P&L -197,这又是什么鬼?

  • -197 / -140.01 =  1.407

这不就是 USD:CAD 的汇率吗?

加拿大居民在 IBKR 开户的时候,base currency 可以选择加元,也可以选择美元。从第一张图可以看出,NF 选择的是加元,那么最终的 Net Liquidation Value、盈亏等数字最终都以加元计。

补充一点:我个人推荐选择加元,最终出的报税单不用自己再换算汇率,IBKR 全部出好了,我从来没找出过错误,直接拿来报税就可以了,比加拿大几大银行强太多。


“自成交以来” 的 P&L

从第一张图我们已经知道成交是这样的:买 62C @ 0.97,卖 63C @ 0.96,净借记 0.01。

第二张图里是 62C @ 0.66,63C @ 0.37,当前价差 0.29。因此自建仓以来:

组合盈亏 = (0.29 − 0.01) × 100 × 7 = +196(如果成交,再扣点佣金,净大约 190 左右)。

组合总体是盈利的,但当天的 Today P&L 却显示小幅亏损(原因:与昨收相比,当天价差回吐了一截)。

这是理想的计算方法。从第二张图里我们可以看出 IBIT Bull Spread 的实际情况是:

  • BID 421 x 0.25 | 0.28 x 244 ASK

截图时刻 spread 是 0.25~0.28,分别挂着 421 张和 244 张,那么 mid 是 (0.25 + 0.28) /2 =  0.26/0.27,所以前面用 0.29 来计算是不切实际的。

如果想平仓(close),我们当然可以挂 0.29 的 limit 单,但是只能等待回弹时才能成交;如果想即时成交,那么挂 0.25~mid 这个区间比较合理。

从这里也可以看出 MTM 记账才是十分接近真实情况的。 


尽管 IBKR 十分强大,我也有 IBKR 账户,经常开着它看盘,但是我很少在上面交易,主要原因就一个:它与银行之间的资金往来太麻烦了。这也是我避开 Questrade、WealthSimple、Qtrade 等的原因。

这次我解决了别人的疑问,自己也更加熟悉了 IBKR,何乐而不为呢?


The Globe and Mail 每年都会对加拿大的主要券商进行排名,2025 年的排名是这样的。显然,这个排名没有考虑期权交易这个因素。

Sunday, November 2, 2025

Happy Valley Forest Trail

今天去了 Happy Valley Forest Trail。这个地方我惦记了很久,错过不少次,今天终于第一次成行。

上图来自官方页面,链接在此处; 第三方游记可参考这篇文章

谷歌地图对这一片可用信息不多。可在谷歌地图搜索 Goldie Feldman Nature Reserve 对应上图中的停车点。在 AllTrails 搜索 Happy Valley Forest 可获取更详尽的线路信息。

图中居中的几条已标注里程的小径,全部走完约 9 公里。步道维护良好:交叉点配有地图,沿途指示清晰,无需打开导航即可完成路线。低洼地段设有木栈道,基本避免踩泥。

Happy Valley Forest Trail 景色优美:夏季林中凉爽,秋季落叶铺径。路线起伏明显,整体为中等难度。天气晴好的周末徒步者较多。


图中南侧为 Oak Ridges Trail(约 5.8 公里),人气也很高。主要路段在 Humber Source WoodsLove Mountain Nature Reserve 一带。可将车停在 Weston Rd 路边(在谷歌地图搜索 Oak Ridges Trail–Happy Valley 可定位到停车点)。

图中西北角的 Happy Valley Tract 路段较短;AllTrails 上提供了更详细的路径图。

本次未涉足这两段。


自万锦 Toogood Pond 出发,常见的三条自驾线路:

  1. 完全避开高速;
  2. 仅走一段 404
  3. 401 → 400(高速为主)。
我选择线路 2。

秋季选择前两条线,在进入 King City 一带时,两侧林木与豪宅区景色尤佳。

Saturday, November 1, 2025

Lynde Shores Conservation Area

林德湖岸自然保护区踏查笔记

位置与行政区划

林德湖岸自然保护区(Lynde Shores Conservation Area,下文简称“林德湖岸”)位于 安大略省惠特比镇(Town of Whitby)西南角,坐落在安大略湖北岸的林德溪(Lynde Creek)入湖口一带,并包含蔓越莓沼泽(Cranberry Marsh)。 惠特比镇隶属杜伦区(Durham Region);我所在的万锦市(Markham)隶属约克区(York Region),两区相邻,驾车前往十分方便。

约克区(York Region)

地貌背景

林德湖岸位于史前伊罗魁湖(Lake Iroquois)的旧湖床上。该古湖属冰川消退阶段形成的前冰川湖, 岸线遗迹与湖床沉积塑造了今天相对平坦的地表,底质以黏土为主。 黏土底质与低起伏地形使林德溪在入湖前形成缓弯曲流与沼泽带,并在河口一带发育沙洲与滩涂。

生境分区

  • 沼泽地(marshland):爬行动物、两栖动物、鱼类与水禽的重要栖息地。因紧邻 Durham Regional Rd 22(Victoria St),物种多样性较部分偏远湿地略低,但在安大略湖畔的滨鸟与水禽迁徙通道中仍具关键意义。
  • 湖岸(lakeshore):约 6–9 米宽的沙砾质沙洲。
  • 开阔地(open field):历史上曾用于度假小屋与农田。
  • 林地(woodlots):呈小片分布,一片在区内道路西侧,另一片位于东南角。

保护区概况

林德湖岸建立于1972 年,面积272 公顷(约 670 英亩), 覆盖林德溪河口与蔓越莓沼泽周边。它是安大略湖北岸少数遗存的沿海湿地,被指定为省级重要区域, 并持续开展流域管理研究。区域向公众开放,可进行徒步、垂钓、独木舟等活动, 年访客约10 万人。区内步道总长度约5 公里(3.1 英里), 其中包含安大略湖滨步道(Waterfront Trail)的一段。

交通与停车

路线(万锦市 Toogood Pond 出发,无需高速)
沿 Hwy 7 向东 → 右转 Lake Ridge Rd 向南 → 左转 Victoria St W → 立即右转 Halls Rd S 抵达。
提示:Victoria St W 转入 Halls Rd S 的路口不显眼,行经时请放慢车速留意。

停车
主公共停车场:623 Halls Road,按“付费并展示票据”(Pay-and-Display),费用 CA$7/天
1225 Victoria Street 停车入口现仅限年票(Annual Parking Pass)持有者使用。
以上信息以官网公告为准:Lynde Shores 官方页面

步道总览与颜色对照

  • Blue Heron Trail:天蓝色
  • Bobolink Trail:紫色
  • Chickadee Trail:深黄色
  • LeVay’s Lane Trail:绿色(最长环线,约 2 km)
  • Lake Ontario Trail 1:浅黄色
  • Lake Ontario Trail 2:红色
  • Canoe Launch Trail:黑色
  • Cranberry Marsh N. Lookout:灰色
  • Cranberry Marsh S. Lookout:浅绿色
  • Cranberry Marsh E. Lookout:橙色
  • Waterfront Trail:粉色(贯穿全图)

建议行程

路线 A:东侧湖滩与观景点(约 7.5 km)

  1. Blue Heron(天蓝) → Waterfront(粉)向东 → Chickadee(深黄)。
  2. 转入 LeVay’s Lane(绿)东侧,前往沼泽与芦苇观景点。
  3. 接 Lake Ontario Trail 1(浅黄)至湖边沙滩;回程走 LeVay’s Lane(绿)西侧。

小贴士:Chickadee Trail 是著名“喂鸟”步道,可带少量黑油葵花籽、去壳葵花仁或无盐花生碎;白米、玉米等吸引力较弱。

路线 B:西侧长滩与蔓越莓沼泽观察

  1. 从主停车场沿 Waterfront(粉)向西,经 Halls Rd S 南行至 Bobolink(紫)。
  2. 转入 Cranberry Marsh S. Lookout(浅绿),再走 Lake Ontario Trail 2(红)至更长的湖滩。

若不想沿 Halls Rd S 步行太久,可驾车至地图最南端的 “P” 路边停车,再步行上述几段。

形态小记

从卫星图上看,林德溪入湖水域形似“马蹄”,两侧沙洲围合成内湾,颇有趣味。

入湖口就是下图马蹄掌上的那根“小刺”。此处水流湍急,深浅变化快;岸边沙砾塌陷速度快,请与水缘保持距离,谨防滑落水中。

Wednesday, October 29, 2025

PFU Ricoh ScanSnap iX2500 Home 脱连问题

2025 年 10 月 17 日收到 ScanSnap iX2500,今天 10 月 29 日,使用还不到半个月,我就遇到了一个十分烦人的问题。

ScanSnap iX2500 是配置成 WiFi 和 USB 两种模式都连接到电脑的。电脑是 Windows 11 Home 最新版。

问题如下: 

  • ScanSnap 从睡眠模式唤醒后显示没有连接的设备。
  • 在电脑上打开 ScanSnap Home 也找不到 iX2500。
  • 前几天,偶尔还能连接上,今天已经完全找不到了。
  • 但是,在 Windows 11 里的 Printers & scanners 列表里显示  iX2500 是连接上了的,只不过状态是 idle。

这够奇怪的。这可够烦人的。

从设备列表里 remove iX2500,卸载 ScanSnap Home,然后重启电脑,重装 ScanSnap Home,这种常见方法并不能解决问题,是浪费时间。

只能更进一步。

其实,经过移除设备和卸载程序,重启电脑,还保留了大量残余,必须彻底清理干净,再重启电脑。

然后把 iX2500 重置到出厂状态,当成全新开箱的机器,一步步按照提示安装。

这样就成功了。

ChatGPT 说可能的原因有:

  • 某次更新后,Windows 可能给设备套了“通用相机/图像(WIA)”驱动,而 ScanSnap Home 只认自家的 PFU/RICOH 驱动,结果表现就是“系统看见、ScanSnap Home 找不到”。
  • ScanSnap Home 依赖 ScanSnap Home Main Service (SsHomeS)。若升级/杀软/优化软件把服务启动方式改了、或服务崩溃不重启,ScanSnap Home 也会“找不到扫描仪”。
  • Windows 的“USB 选择性挂起”、Acer/OEM 的省电驱动、或主板 USB 控制器驱动与最近的 Windows 更新碰撞,可能让设备“半连接半掉线”。重新装驱动+改电源策略就稳定了。
  • 第一次安装时如果设备已插上、或系统正忙着装别的驱动,有时会留下“半装状态”。后续再怎么插拔都用的是同一份错误绑定,只有“清残留→重装→先插后装/先装后插(按正确顺序)”才能洗掉。

大概率是 Windows 11 的每个月重大升级造成的。

在互联网上搜索,Windows 升级多次造成 ScanSnap 整个系列的机器出现这种问题。在 ScanSnap 的官网上有许多许多这样的用户反馈和重大提醒。

Tuesday, October 28, 2025

Acer Predator Helios 300 PH315-52-78VL

Acer Predator Helios 300

  • 型号: PH315-52-78VL
  • 制造日期: 2019/06/16
  • CPU: Intel Core i7-9750H, 6 cores
  • 内存条: 两个,2 x Kingston ACR26D4S9S8ME-8, DDR4 SODIMM, 2666MT/s
  • 硬盘:一个,SK Hynix NVMe HFM256GDJTNG-831(256GB,M.2 2280 NVMe)

问题:硬盘太小,满了,经常清理也没有多大效果。

解决办法:换大的硬盘。 

电脑有两个 M.2 插槽。还有一个 2.5" SATA 位。

我有两个老的 2.5 寸 SSD,一个 500 GB,一个 750 GB,挂在了 NAS 上,如果拿过来装,需要买托架和排线套件等,装起来也麻烦,那么老的 SSD 拿来当系统盘,说不定哪天就崩溃了,放弃重新利用的想法。

空位加一条 M.2 2280 NVMe,PCIe 3.0 x4。也可以买 PCIe 4.0,会向下兼容。

+++++ 

ChatGPT 推荐

  • WD Black SN770 / WD Blue SN580(PCIe 4.0,向下兼容)
  • Samsung 970 EVO Plus(PCIe 3.0)
  • Crucial P5 Plus 或 P3 Plus(向下兼容)

如果为了将来重复利用,那么推荐:

  • Samsung 990 EVO Plus PCIe 4.0

我想要现货,且不能太贵。最后搜到:

  • Samsung 990 EVO PCIe Gen4.0 x4/5.0 x2 NVMe 2.0 Internal SSD - 1 TB - Model: MZ-V9E1T0B/AM(Staples)— $119.99
  • Western Digital Black SN770 1TB PCIe Gen4 NVMe M.2 2280 Solid-State Drive Read:5150MB/s,Write: 4900MB/s (WDS100T3X0E)
  • Western Digital Blue SN580 WDS100T3B0E 1TB Solid State Drive - M.2 2280 Internal - PCI Express NVMe (PCI Express NVMe 4.0 x4) - Blue - Notebook Device Supported - 600 TB TBW - 4150 MB/s Maximum Read Transfer Rate - 5 Year Warranty

附近的 Staples 有一个 990 EVO 现货,店员去仓库里找出来了,清仓货,只要 $97.97,比网站上列出的价格还便宜不少。

PCIe Gen 3 是过时产品了,现在货极少,价钱也贵。

后来问 ChatGPT 为什么 990 EVO 怎么货也那么少?原来这个产品定位很尴尬,虽然是  PCIe 4.0 x4,还兼容 PCIe 5.0 x2,表现都不出色,属于过度型的中端产品。Samsung 990 EVO Plus 现在是主流 PCIe 4.0,是更稳妥的 Gen 4 高速产品,未来重复利用价值更高。

Samsung 990 EVO Plus 价钱只要 $149.99,其实比那些低一个档次的 Gen 4 贵了也不算太多。

我已经将  990 EVO 买回家了,还拿到了一个极优惠的价格,反正也是 Gen 4,速度还是杠杠的,性价比极高,算了,不打算去退了,先用上再说吧。

+++++

旧硬盘上主要是系统程序和安装的应用程序,没有多少其它数据,所以将它上面的非应用数据挪到新的硬盘也腾不出多少空间,所以旧硬盘继续当系统盘已经不可行,必须将新硬盘当系统盘,那么就要将旧硬盘克隆到新硬盘。

有三种方法:

  • Macrium Reflect
  • AOMEI Backupper Standard
  • 或者做个“Macrium/AOMEI 启动U盘”离线克隆

Macrium Reflect 或者 AOMEI Backupper Standard 试用版足够,但是都要注册。我不想注册。于是就用开源的 Clonezilla。我很久以前就想试试这个工具。

克隆完成,但是出了点问题,无法将新盘当做 C: 盘启动。想了各种方法修复、识别,但是还是不成功,引导区数据可能也被我搞乱了。我不想重新克隆再试一次。

既然买了 Samsung 的硬盘,可以免费使用 Samsung Magician 里的 Data Migration 来完成。这是最简单的挽救办法。又花了一个多小时,这次终于成功。

买 Samsung 硬盘有一个好处,总是带免费软件。我买的几块 Samsung 便携式 SSD 都是如此。

新盘当作 C 驱,旧盘当作 D 驱,用 powershell 把旧盘完全格式化。

在此把拆机、不断切换 BIOS、重启、F2、F12、F10、多次插上、拔下新盘、查看 device manager、运行 powershell 等过程省略。

2025 年 10 月 24 日星期五,从晚上十一点干到了第二天凌晨四点多。

+++++

效果是明显的。

原来系统缓存、页面文件、临时文件都挤在一起,写入放大严重;换到大盘后有大量空闲块,随机写和系统更新明显更顺滑。

新盘即使向下兼容,性能比旧盘好很多,读写速度快很多。

系统盘快,感觉自然十分明显。

花了大约 100 元,获得了十分良好的体验,电脑还可以用至少四、五年,十分值得。 

Thursday, October 16, 2025

PFU Ricoh Fujitsu ScanSnap scanners

上面这张图截取自 scansnapit.com,这是由 PFU (EMEA) Limited 拥有 / 运营的,用于 ScanSnap / PFU / Ricoh 在 EMEA(欧洲、中东、非洲)区域的市场宣传 / 产品 /新闻站点。它列出了 ScanSnap 当前生产和销售的 scanners:iX2500、iX1600、iX1400、iX1300、iX100、SV600。 

上面这张图也是截取自 scansnapit.com,它列出了现在停产的 ScanSnap  scanners:iX1500、iX500、S1300i、S1100i。

上面这张图是 ScanSnap 20 周年时的历史图,截取理光的网站上的 这个网页。

fi 系列分化出来,针对商业、政府等比较大的机构。ScanSnap 分化出来针对家庭办公室和小业主市场,从而成为过去二十年最受喜欢的小型扫描仪。

2006 年首次推出 S500,2012 年首次推出 iX 系列的 iX500,2014 年推出一款随身携带的 iX100,2018 年推出 iX1500,2021 年推出 iX1600、iX1400、iX1300,2025 年推出 iX2500。

最早推出的 S500 于 2013 年停产;至 2017-2018 年 S 系列基本全部停产,完全被 iX 系列取代。

2024 年停产 iX500 和 iX1500,推荐由 iX1600 和 iX2500 取代。

富士通(Fujitsu)、理光(Ricoh)和 PFU 的关系

在互联网上搜索 ScanSnap,有的网站卖的是 Fujitsu ScanSanap,有的网站卖的是 Ricoh ScanSnap,这到底是怎么回事?

富士通和理光是日本的两家大公司。ScanSnap 最初是富士通的子公司 PFU Limited(PFU Imaging Solutions) 制造。2022 年 4 月,富士通将 PFU 80% 股权卖给理光。ScanSnap、fi 系列等专业扫描产品线实际上现在是理光系统旗下的“PFU Ricoh” 生产,但仍保持 Fujitsu ScanSnap 品牌销售一段时间。现在新的型号会写成 "PFU / Ricoh" 或直接被 Ricoh 吸收进其 “Ricoh Imaging / Ricoh Scan” 产品线。

Costco Canada 长期良心价

Costco Canada 以前长期销售 Fujitsu ScanSnap iX500 Wireless Duplex Colour Scanner,现在销售 Ricoh ScanSnap iX1600 Scanner with Cleaning Kit。也长期销售销售竞争对手最受欢迎的一款 Epson RapidReceipt RR-600W Special Edition Desktop Receipt and Document Scanner。

爱普生(EPSON)于 2021 年直接上线了一款最强型号 RapidReceipt RR-600W 与 ScanSnap 竞争,在接下来的几年来才生产与 ScanSnap 对应的各种低价版。

2025 年 6 月推出的最新 iX2500 目前在知名商家里只有 Best Buy Canada 在销售,销售渠道是 Best Buy Business,优惠 $140 后价格是 $619.99。而 iX1600 在 Costco Canada 售价 $549.99,目前无货。Best Buy Canada 这个售价相当有吸引力。

Friday, October 10, 2025

BMO InvestorLine UI 问题

BMO InvestorLine 2.0 推出来才一年,又开始折腾了。昨天登录发现界面又改了,最主要的改动是调整了 Holdings 的展示方式。在 Firefox 143.0.4 下,Group 只能选择 All 才能列出 holdings。如果选择 Position type 或 Asset class 或 Settlement currency,holdings 列表会被折叠起来,看不到内容。看下图:

在 Microsoft Edge 上测试,没有这个问题。

调出 Firefox 的 Web Developer Tools,发现 Heebo-Medium.ttf / Heebo-Regular.ttf / Heebo-Light.ttf / Heebo-Bold.ttf 字体同时存在成功(200)和失败(404)的请求。看下图:前面四个成功的请求是带哈希的文件;接着四个失败的请求是裸文件名的路径,服务器返回的是 404 + text/html 的错误页;接着四个成功的请求又是裸文件名的路径;再接着四个成功的请求还是裸文件名的路径。


Holdings 的分组视图是标准的手风琴结构,Firefox 的渲染引擎在字体加载失败与成功切换时会反复重排,而页面的折叠/展开高度计算没有兼容这类重排,于是出现“展开又立刻折回”的现象,导致看不到列表内容。不分组的视图不依赖该高度的动画,所以能正常显示。为什么 Edge 正常呢?它的渲染引擎 Blink 会抓到可使用的字体请求,有失败的备用/并行请求也无妨。

必须等 BMO 移除或者更正那些错误的字体路径,分组视图就会恢复正常。

我就把这个问题报告给了 BMO InvestorLine。

BMO InvestorLine 已经在首页发布了一个维护通知,希望这个问题能在这次维护中得到解决。我猜一定还有很多其它问题存在。

We'll be performing system maintenance from Friday, October 10 at 9 p.m. to Saturday, October 11 at 7 a.m. EDT. There will be minor interruptions to BMO InvestorLine during this time. We apologize for any inconvenience.

在修复之前,我自己只能下载一个 User-agent Switcher 插件,把 Firefox 伪装成 Chrome,来正常分组显示。我使用的是 Header Editor,这是一个很小众的插件,但是功能足够,比 User-Agent Switcher and Manager 这个排名第一的 UA 插件还好用。我将其设置成只对 https://www.secure.bmoinvestorline.com/wealth/ 这个 URL 有效。

2025 年 10 月 11 日,星期六,11:52 EDT 更新

维护已经完成了,但是上面的问题并没有解决。

2025 年 10 月 12 日,星期天,10:05 EDT 更新

BMO IL 技术故障,整个页面只有一个通知如下:

问题如下:

We are currently experiencing technical difficulties. Our team is working to resolve this as quickly as possible. We apologize for the inconvenience.

If you have any questions, please contact us at 1 888 776-6886 from 8:00 AM to 5:00 PM ET, Monday to Friday. We apologize for any inconvenience this may have caused and thank you for your patience.

大概率是 BMO 的技术团队趁着长周末对这次的大改版进行纠错,结果搞出了意外。我对 BMO 的技术实力实在不敢恭维。

通知消失后,我上面关心的问题仍然未得到解决。