它卖什么。公司自己在年报里写:它设计、生产 TFT-LCD 显示模组(就是液晶屏加驱动板那一块,用在消费电子、户外大屏、车载屏上),也生产偏光片(贴在液晶面板两面的一层膜)。2025 财年(截至 2025-09-30)收入 3,968 万美元,其中偏光片占 49%、显示模组 38%、其他 13%;九成卖在中国大陆。毛利率只有 6.4%——这是理解它后面所有融资动作的起点:这门生意本身赔钱,2023、2024、2025 三个财年每年净亏 1,000 万美元上下。
它的结构。你在纳斯达克买到的 OST,是一家开曼群岛公司(Ostin Technology Group Co., Ltd.,2019 年 9 月成立)。它通过英属维京群岛和香港两层中间公司,持有南京的运营公司「江苏奥斯汀光电」。上市前它用的是中概股常见的 VIE 合同控制结构,2022 年 2 月解除、改为直接持股,2022 年 6 月买齐剩余股份成为全资,2023 年 11 月又转出 1%,现在持有 99%。
它怎么上的市。2022 年 4 月 27 日开始交易,IPO 发行价 4.00 美元,卖了 3,881,250 股(含超额配售),毛募 1,552.5 万、净得约 1,241 万美元。承销商代表是 Prime Number Capital 和 Shengang Securities。
IPO 最终招股书:424B4,2022-04-29,accession 0001213900-22-022398。上市第一天价格:Yahoo 日线(本机 market/ 目录)。业务与收入结构:20-F FY2025,2026-01-26,accession 0001213900-26-007702,Item 4 与 Item 5。VIE 解除与持股比例:同一份 20-F Item 4A。
什么是反向拆股。公司宣布「每 10 股合并成 1 股」。你原来有 1,000 股、每股 0.50 美元,合并后变成 100 股、每股 5.00 美元。总价值 500 美元不变。公司这么做几乎只有一个原因:股价低于 1 美元,纳斯达克要求它把股价抬回 1 美元以上(第九步)。
OST 做了两次。
| 生效日 | 比例 | 股东会批准 | 合并前在外 A 类股 | 合并后 | 面值 |
|---|---|---|---|---|---|
| 2024-12-31 | 1 合 10 | 2024-11-26 特别股东会 | 约 18,114,552 | 约 1.81 百万 | $0.0001 → $0.001 |
| 2025-08-05 | 1 合 25 | 2025-07-17 特别股东会 | 约 132.43 百万 | 约 5.29 百万 | $0.001 → $0.025 |
两次相乘:10 × 25 = 250。所以:
用 OST 走一遍。2023 年 9 月 30 日公司有 14,006,250 股。÷250 = 56,025 股(今天口径)。今天在外 A 类股 5,963,920 股。也就是说,两年间股数在同一口径下涨了 106 倍——一个 2023 年持有全公司 1% 的人,什么都没做,今天持有 0.0094%。
再看价格。起诉书说 2025 年 4 月 14 日收盘 0.80 美元、6 月 26 日最高 9.40 美元。这两个数都是 1 合 25 之前的口径。换成今天口径:0.80 × 25 = 20.00;9.40 × 25 = 235.00。而今天停牌价是 1.695。所以从 2025 年 6 月 26 日的顶到停牌,跌幅是 1 − 1.695 ÷ 235 = 99.3%。如果你不换口径,会误以为「9.40 跌到 1.695,跌了 82%」——差了一个数量级。
1 合 10:6-K 2024-11-27(0001213900-24-103497,股东会结果)、6-K 2024-12-20(0001213900-24-110728,原定 12-26 生效)、6-K/A 2024-12-23(0001213900-24-112018,改为 12-31 生效)。1 合 25:6-K 2025-08-06(0001213900-25-072546)。「约 132.43 百万 → 约 5.29 百万」出自 20-F FY2025 风险因素。Yahoo 复权价与起诉书数字的核对:2025-04-14 复权收盘 19.975(÷25 = 0.799)、2025-06-26 复权最高 235.0(÷25 = 9.40)、收盘 13.75(÷25 = 0.55),三个数与起诉书第 25、39、41 段一致。
全舰口径(2026-09-17):「反拆时授权股有没有跟着缩」不是公司的固定做法,同一家公司两次反拆可以两种处理,必须逐次查一手件。补充说明:反拆改的是「在外股」,而「授权股」是章程里允许发行的上限,两者是两回事——授权股缩不缩,要看股东会决议和修订后的章程怎么写。
货架注册是什么。公司先提交一份 F-3 注册声明(外国公司用 F-3,美国公司用 S-3),说「我未来三年可能卖这些类型的证券,总额不超过 X」。SEC 宣布生效后,公司每次真要卖,只需再提交一份薄薄的「招股说明书补充」(424B5),几天甚至当天就能成交。这就是为什么 OST 2025 年 4 月 15 日签协议、当天就交割。
OST 的货架。2024 年 5 月 7 日提交 F-3(文件号 333-279177),5 月 28 日生效,名义上限 2 亿美元,可卖 A 类股、优先股、债券、权证、权利、单位。这个货架至今仍在用——2026 年 6 月的 6-K 还写明「并入 F-3 注册声明」。
小盘货架上限(baby shelf)。F-3 表格的一般指引 I.B.5 规定:如果公司非关联方持有的股票市值低于 7,500 万美元,那么任何 12 个月内从货架上卖出的证券总值,不能超过非关联方持股市值的三分之一。2024 年 5 月 OST 非关联方持股市值约 503 万美元,所以 2 亿的货架当时实际只能用约 206 万美元。
F-3:0001213900-24-040491(2024-05-07);生效通知 EFFECT 9999999995-24-001659(2024-05-28)。baby shelf 数字(非关联方 11,901,602 股 × $0.423 = $5,034,377.65;可发行约 $2,062,944.35)见 F-3 封面。四张 424B5:0001213900-24-054549(2024-06-21)、0001213900-24-099962(2024-11-19)、0001213900-25-032063(2025-04-15)、0001213900-25-059624(2025-06-30)。
公司发新股给特定买家(不是向公众公开发行),常见三条路:
| 方式 | 依据 | 买家拿到的是什么股 | 能不能马上卖 | OST 用过的例子 |
|---|---|---|---|---|
| 注册直接发行 Registered Direct Offering | 从已生效的货架(F-3)上拿 | 已注册股,与市场上流通的股票完全一样 | 可以,交割当天就能卖 | 2024-11 Strattners;2025-04-15 九百万股;2025-06-30 四千一百万股(反拆前) |
| 私募 PIPE / Private Placement | 证券法 4(a)(2) 或 Regulation D | 受限制股(带限制性图例) | 不能,要等 Rule 144 持有期(外国私人发行人通常 6 个月或 1 年)或公司另行注册转售 | 2024-01 Streeterville 票据;2025-02 PIPE(另加 20 个月锁定) |
| 境外私募 Regulation S | 卖给美国境外的人 | 受限制股,有 40 天至 1 年的分销遵从期 | 不能马上在美国市场卖;OST 后来专门为买家注册了转售 | 2024-02 MIDEA International 280 万股(反拆前) |
Rule 144 是什么。它是 SEC 的一条安全港规则:拿到受限制股的人,只要满足持有期(6 个月或 1 年)、公司信息公开、并且(对关联方)遵守成交量上限和申报 Form 144,就可以不经注册在公开市场卖。「关联方」指高管、董事和持股一般在 10% 以上的人,他们卖任何股都受 144 的量限制(三个月内不超过在外股数的 1% 或四周平均周成交量)。
为什么这在 OST 案子里是核心。起诉书第 33 段写:2025 年 4 月的注册直接发行和 5 月的权证换股协议「没有对这些投资者的交易能力施加任何限制——例如股票归属期或锁定期。因此,这些投资者一收到股票就可以卖」。共同首席执行官给券商的邮件写「两人的股票都是非受限的」("Both guy's shares is non restricted")。也就是说,选「注册直接发行」而不是「私募」,就是选了一条买家能立刻抛售的路。
Rule 144 条文:17 CFR 230.144。MIDEA 认购协议与登记权协议:6-K 2024-02-07(0001213900-24-010707);F-1 转售注册:0001213900-24-057320(2024-06-28),生效 9999999995-24-002726(2024-09-05)。PIPE 20 个月锁定:20-F FY2025 Item 4A(0001213900-26-007702)。起诉书第 33、45、48 段:pr/doj_indictment_1413971.pdf。
普通权证。公司卖你 1 股,附送 1 张权证:未来 N 年内你可以按 X 美元再买 1 股。股价涨过 X 你就行权赚差价;不涨就作废。它对公司是「以后可能再收一笔钱」,对老股东是「以后可能再被稀释一次」。
OST 2025 年 4 月 15 日那批权证。公司卖 9,090,908 股(反拆前),每股 0.55 美元,附 18,181,816 张权证,每张可买 5 股,合计可买 90,909,080 股——是所卖股票的 10 倍。行权价名义上 0.80 美元,但年报补了一句招股说明书没有的话:「发行后第七个日历日,行权价重置为 0.16 美元」。
权证换股(Warrant Exchange)。更关键的一步在 18 天后。2025 年 5 月 3 日,公司与权证持有人签「权证换股协议」:持有人交回全部 18,181,816 张权证,公司不收一分钱,直接发给他们 70,909,082 股新股(每张权证换约 3.9 股)。这样一来:
起诉书第 30 段还指出一个细节:从 4 月 15 日到 5 月 3 日,股价已经从 0.80 涨到 3 美元以上,按 0.16 行权早就大赚,可是没有一个人行权过一张——他们在等免费换股。原告据此主张换股是预先安排好的。
预付权证(pre-funded warrant)。2025 年 6 月 30 日的第二笔 500 万发行用了另一种工具:买家买 10,500,000 股,另外买 31,166,667 张「预付权证」,行权价只有 0.001 美元——也就是几乎全款先付、股票以后再拿。为什么不直接发股?因为买家想避免一次性持股超过 9.99% 触发申报和关联方身份;预付权证带一条「持股上限 9.99%」,让买家可以分批把权证变成股票、始终停在 9.99% 以下。年报权益变动表显示这批预付权证到 2025 年 9 月 30 日已经全部行权,1,246,667 股(今天口径)进入了在外股数。
4 月发行:424B5 0001213900-25-032063(2025-04-15)、6-K 0001213900-25-032330(2025-04-16,含证券购买协议与权证格式)。0.16 重置:20-F FY2025 附注 17。权证换股:6-K 0001213900-25-042085(2025-05-12)。6 月发行与预付权证:424B5 0001213900-25-059624、6-K 0001213900-25-060348(2025-07-01)。2 月 PIPE 与无现金行权:20-F FY2025 附注 17、6-K 0001213900-25-013776(2025-02-14)。起诉书第 26–35 段。
可转换票据是什么。公司向投资者借一笔钱,投资者可以选择到期收回现金,也可以选择把债换成公司股票。关键在转股价怎么定:如果是固定价,它像普通债券加一张期权;如果是「按市价打折」的浮动价,那么股价越跌、换到的股越多,卖出去又压低股价——这就是「死亡螺旋」。
OST 的两张票据(都借自 Streeterville Capital, LLC)。
| 2024-01 票据 | 2024-06 票据 | |
|---|---|---|
| 本金 / 实收 | $550,000 / $500,000 | $1,360,000 / $1,250,000 |
| 利率 / 期限 | 7% · 12 个月 | 7% · 12 个月 |
| 转股价 | 前 10 个交易日最低日均价的 80% | 同左 |
| 地板价 | $0.1436 | $0.086 |
| 何时可转 | 第 6 个月起 | 交割当天起 |
| 每月最多转 | $200,000 | $500,000 |
| 持股上限 | 4.99%,市值低于 1,000 万时自动放宽到 9.99% | 同左 |
| 转股股票能不能卖 | 受限制股(走 Rule 144) | 已注册(从 F-3 货架登记) |
| 结局 | 2024-06-24 全额偿还,从未转股 | 转了四次共 912,098 股(反拆前,约 $420,000),2024-12-30 偿清余额 |
两条容易被忽略的附带条款。一是「最优惠待遇」(MFN):票据在外期间,公司若给任何人更优惠的条款,投资者可以要求同等待遇。二是「限制发行」:未经投资者同意,公司不得再发任何可变价格证券。2024 年 11 月公司与 Strattners Bank 签的补充协议把发行价改成了「买方转售价的 50%」——一个可变价格——而 6 月票据要到 12 月 30 日才偿清。文件里没有提到是否取得了同意。
1 月票据:6-K 0001213900-24-007014(2024-01-26,含票据与购买协议全文)、Form D 0001213900-24-007016。6 月票据:424B5 0001213900-24-054549、6-K 0001213900-24-056684(2024-06-27)。四次转股与偿清:20-F FY2024 0001213900-25-007016 附注 18、20-F FY2025 附注 17。Strattners 补充协议:6-K 0001213900-25-006052(2025-01-23)。
双重股权是什么。公司把普通股分成两类:A 类一股一票,B 类一股多票。B 类通常只发给创始人,让他在持股被稀释后仍能控制股东会。
OST 什么时候有的。上市时只有一类普通股。2024 年 3 月 28 日的特别股东会通过:把已发行的 16,806,250 股全部改为 A 类;同时公司以 200 美元(面值)从董事长凌涛控制的 SHYD Investment Management 手里回购 2,000,000 股 A 类并注销,再向 SHYD 发 2,000,000 股 B 类,每股 20 票,不能转换成 A 类,不分红。这一换,凌涛的投票权从约 23% 跳到约 76%。
后来怎么变成 100 票。2025 年的第四或第五次修订章程把 B 类改成每股 100 票。年报没有写明是哪一次、哪一天;Item 14「股东权利无重大修改」的表述与此并列。
今天的账。在外 A 类 5,963,920 股(一股一票)、B 类 28,000 股(一股 100 票 = 2,800,000 票)。总票数 8,763,920。凌涛持 A 类 7,635 股 + B 类全部 28,000 股:
为什么从 76% 掉到 32%。因为 2025 年发了太多 A 类股:A 类从约 180 万股(2025 年初,今天口径约 7.2 万)涨到 596 万股,B 类的 280 万票被稀释了。这意味着 2025 年 5 月那批持有约 75% A 类股的买家,如果一致行动,在股东会上已经压得过控制人。年报仍写「我们不知悉任何可能导致控制权变更的安排」。
2024-03 双类股与换股:6-K 0001213900-24-022654(2024-03-14 通告)、0001213900-24-029356(2024-04-02 结果)。76.5% 投票权:20-F FY2025 Item 4A。100 票与授权股本:20-F FY2025 Item 10.B 与 EX-2.1。32.04%:20-F FY2025 Item 6.E 与风险因素。股权激励授予:20-F FY2025 附注 17 与 Item 6.B。
先说清性质:以下是弗吉尼亚东区联邦大陪审团 2025 年 9 月 10 日起诉书(案号 1:25-cr-00259)的指控,被告是当时的共同首席执行官 Lai Kui Sen 和一名自称理财顾问的 Yan Zhao(化名 Hank Shi、Hank Shu、Altman、Bob)。公司本身没有被起诉。两人推定无罪。
起诉书把整件事拆成六个动作:
结果。4 月 14 日收盘 0.80,6 月 26 日盘中 9.40(涨 1,075%),市值从约 2,200 万变成 10 亿以上。6 月 26 日当天从 9.40 跌到收盘 0.55,单日蒸发超过 9.5 亿美元、跌 94%。起诉书称共谋者获利超过 1.1 亿美元;司法部已扣押约 1,000 万美元。
公司当时说了什么。6 月 27 日公司发新闻稿:「公司没有任何未披露的重大事项,也不知道 6 月 26 日股价异常波动的具体原因」,并称不再就此发表评论。这句话后来成为集体诉讼指控的虚假陈述之一。
执行摘要第 1 段;渠道第 21–24 段;4 月发行第 25–30 段;权证换股第 31–35 段;推广第 36–41 段;开户与邮件第 42–49 段;卖出明细第 51–52 段(CC-4 363,636 股卖得 $1,509,089;CC-1 363,636 股 $1,495,137 + 2,027,134 股 $10,117,023 + 809,227 股 $372,438;CC-2 436,364 股 $1,770,596;CC-3 854,545 股 $3,600,716 + 3,908,616 股 $23,749,959);国债 ETF 第 53 段;反拆第 56 段;1.1 亿第 57 段;没收清单第 22–23 页。文件:pr/doj_indictment_1413971.pdf,文本 deep/gapfill_2026-09-16/doj_indictment_text.txt。
第一道:1 美元。纳斯达克资本市场要求股票收盘买价不低于 1.00 美元(上市规则 5550(a)(2))。连续 30 个交易日低于 1 美元,交易所发缺陷函。OST 2024 年 1 月 19 日收到第一封。
第二道:180 天,可以再来 180 天。收到缺陷函后有 180 天恢复(连续 10 个交易日回到 1 美元以上)。到期还没恢复,如果满足其他首发标准并书面承诺必要时反拆,可以再给 180 天。OST 2024 年 7 月 18 日拿到第二个 180 天,期限 2025 年 1 月 13 日。它在 2024 年 12 月 31 日做了 1 合 10,1 月 16 日收到恢复合规通知。2025 年 8 月 5 日的 1 合 25 又是同一个目的——起诉书第 56 段直接点明:反拆「使 OST 股价回到 1.00 美元以上,这是纳斯达克经常据以摘牌的门槛」。
第三道:T12 停牌。2025 年 9 月 12 日中午 12:24:23(美东),起诉书解封后,纳斯达克以代码 T12(「等待公司提供额外信息」)停牌,最后成交价 1.695 美元。这种停牌没有法定期限,直到交易所认为公司已充分回应为止。截至 2026-09-16,纳斯达克现行停牌名单上 OST 仍在,恢复日期为空。也就是说,已经整整一年没有一笔成交。
第一封缺陷函:6-K 0001213900-24-006120(2024-01-24)。第二个 180 天:6-K 0001013762-24-000739(2024-07-24)。恢复合规:6-K 0001213900-25-005102(2025-01-21)。停牌:6-K 0001213900-25-092424(2025-09-26);Nasdaq Trader 停牌名单 RSS(本机 pr/nasdaq_tradehalts_rss_2026-09-16.xml,HaltDate 09/12/2025、HaltTime 12:24:23、ReasonCode T12、ResumptionDate 空)。规则号:5550(a)(2)、5810(c)(3)(A)、5550(b)。
上面第九步讲的「180 天,可以再来 180 天」,是 OST 2024 年实际走过的流程。但纳斯达克的规则后来收紧了,有两条要单独记住(原件存在 USstock/_rules/nasdaq-bid-price-reverse-split/):
三个数就够。拿最新的 2026 年 3 月 31 日中期报表(未审计):
| 2026-03-31 | 2025-09-30 | 2024-09-30 | |
|---|---|---|---|
| 现金及等价物 | 1,796,105 | 5,074,702 | 1,024,569 |
| 流动资产合计 | 15,125,814 | 18,374,551 | 20,844,359 |
| 短期借款 | 25,370,310 | 23,248,346 | 25,006,630 |
| 应付关联方 | 3,590,461 | 5,142,781 | 4,778,690 |
| 流动负债合计 | 40,868,415 | 39,735,454 | 40,961,435 |
| 营运资金缺口 | −25,742,601 | −21,360,903 | −20,117,076 |
| 归属母公司股东权益 | 2,522,735 | 6,999,814 | 5,192,233 |
| 累计亏损 | (33,297,191) | (28,543,211) | (18,527,479) |
怎么读。「流动负债」是一年内要还的钱,「流动资产」是一年内能变成现金的东西。缺口 2,574 万美元,意思是就算把库存、应收款全部按账面收回,还差 2,574 万才够还一年内到期的债。这家公司靠什么活着?看短期借款:2025 年 9 月 30 日有 14 笔银行短贷合计 1,496 万美元,年报脚注写「除 210.7 万外,全部由公司主要股东凌涛先生及其直系亲属担保」,并写「所有上述短期银行贷款将在到期时续期」——这是假设,不是承诺。另有 829 万来自第三方公司和个人的借款,「无担保、见索即付」,利率 0%、4%、8%。
持续经营存疑是什么意思。审计师在意见书里加一段:这些情况「使人对公司持续经营的能力产生重大疑虑」。它不是说公司马上倒,而是说如果银行不续贷、股东不再垫款、也融不到新钱,公司在 12 个月内可能撑不下去。OST 的审计师 2024、2025、2026 三份年报都写了这段;2026 年 6 月的中期报告公司自己也写了。
2026-03-31 中期报表:6-K 0001213900-26-069877(2026-06-18)EX-99.1/99.2,只有资产负债表、损益表、权益变动表,没有现金流量表和附注。2025-09-30 数字与银行贷款明细:20-F FY2025 0001213900-26-007702 附注 13、16。审计意见:同 20-F,Audit Alliance LLP(新加坡)2026-01-26。
2025-05-29 八份 13G:accession 0001213900-25-048470、-048474、-048887、-048889、-048890、-048891、-048892、-048893;修正见 2025-06-13、06-25、07-15、08-14 各件;另有 0001851416-25-000015(2025-06-30)。Form 144:0001213900-24-046513 / 0001213900-24-046516(2024-05-24)、-087051/-087052(2024-10-11)、0001213900-25-019744(2025-03-04)、0001213900-23-088823(2023-11-20)。Form 3:0001213900-26-038823 / 0001213900-26-038844 / 0001213900-26-038880(2026-04-02)。MIDEA 13D:0001213900-24-015082。
刑事案。United States v. Yan Zhao and Lai Kui Sen,弗吉尼亚东区联邦法院,案号 1:25-cr-00259-MSN,主审法官 Michael S. Nachmanoff。起诉书 2025-09-10 归档、09-12 解封,四项罪名:合谋证券与电信欺诈(18 U.S.C. 1349,最高 20 年)、证券欺诈(1348,最高 25 年)、电信欺诈(1343,最高 20 年)、证券交易欺诈(15 U.S.C. 78j(b),最高 20 年),另附没收通知。公开卷宗(RECAP)只收到起诉书、封面和逮捕令三件;两名被告是否已到案、是否传讯、有没有审期,公开来源里查不到。公司 2025 年 10 月 21 日把 Lai Kui Sen 从董事和共同首席执行官职位上罢免,并成立仅由独立董事组成的特别委员会调查。
集体诉讼。Gordon et al. v. Ostin Technology Group Co., Ltd. et al.,纽约南区联邦法院,案号 1:26-cv-01288-DEH,法官 Dale E. Ho,2026-02-16 起诉。原告 7 名散户(以色列、加拿大、美国、德国、荷兰、瑞士),代表 2025-05-11 至 06-26 期间买入者。被告:公司、凌涛、Lai Kui Sen、CFO 谢巧云、董事殷晓红、CTO 翟晓东、秘书袁博、独立董事 Heung Ming Wong、John Carl Mein、何强。诉由:交易法 10(b)、20(a)、规则 10b-5,另加民事 RICO。
集体诉讼现在走到哪一步。美国的证券集体诉讼有一套固定流程(《1995 年私人证券诉讼改革法》):起诉后 20 天内公告 → 60 天内有意做首席原告的人提出申请 → 法院指定首席原告 → 首席原告提交修正起诉书 → 被告提出驳回动议。OST 案:首席原告申请截止 2026-04-17,三组申请人;法院原定 05-21 听证。之后公开卷宗只显示 7 月两条程序性条目,首席原告是否已指定、修正起诉书是否已交,公开来源查不到。公司的答辩期被推到指定首席原告之后。
起诉书:pr/doj_indictment_1413971.pdf;司法部案页与新闻稿:pr/doj_vns_case_us_v_zhao_sen_2026-09-16.html、pr/doj_opa_pr_indictment_2025-09-12.html。集体诉讼起诉书(58 页):pr/cl_nysd_gov.uscourts.nysd.658027.1.0.pdf;排期令 #24(2026-04-20)、#33(2026-05-07)同目录。公司披露:6-K 0001213900-25-092424(2025-09-26)、0001213900-25-100708(2025-10-21)。
为什么要算这个。很多小盘股在反拆前后会出现剧烈波动:有的是反拆后被拉起来(先低后高),有的是反拆后继续跌(先高后低)。把窗口和口径定死,才能在不同票之间比较。方法:
OST 第一次(1 合 10,2024-12-31 生效)。窗口 2024-12-09 至 2025-02-14。
OST 第二次(1 合 25,2025-08-05 生效)。窗口 2025-07-15 至 2025-09-17。
日线:market/OST_yahoo_daily_splitadj_2022-04-27_to_2026-09-16.csv(Yahoo 复权到现口径)。窗口逐日明细表在 Claude 轨主页「反拆窗口」一节。复权准确性用起诉书三个价格点核对过(第二步抽屉)。
https://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=1803407(OST 的 CIK 是 1803407)。你会看到 134 份文件,最早 2020 年 9 月,最新 2026 年 6 月 18 日。nasdaqtrader.com 的 Trade Halts 页面搜 OST。justice.gov/criminal/criminal-vns/case/united-states-v-yan-zhao-and-lai-kui-sen,页面底部有起诉书 PDF 链接。做这类研究,最容易出错的不是算术,而是底子不全却以为全。对账要拆成四个数:应有份数(台账说有多少)、实际取回份数(真的下下来几份、且每个文件都不是空的)、可全文检索份数(转成文字、能搜的有几份)、未转文本件数(PDF 与图片还剩几个没转)。OST 这四个数是 134 / 134 / 134 / 231。下面是怎么核出来的:
filings.recent 只是最近一批,更早的会被切进 filings.files[] 分片;OST 的分片是空的,所以 134 就是全量。别只看 recent 的长度。index.json)。这一步查出两份申报本机是空目录——2022-03-30 的 F-1/A 第 11 号 0001213900-22-015945 和 2021-12-17 的 SEC 意见函 0000000000-21-015062,原因是当时的抓取脚本解析目录失败,不是 EDGAR 上没有。已补齐。文档级合计 988 个。\bRate Limit\b 照样会命中「sepa-rate Limit-ed Power of Attorney」这种正常条款。所以短词一律不进指纹集,只留整句。另外还有两个动作:先拿一份人造的限流提示页试一下脚本、确认它真的抓得住(不然「0 命中」可能只是脚本坏了,而坏掉和干净长得一模一样);扫描时要把自己写的回查笔记排除掉,否则笔记里引用的那些字样会自我命中。不过顺带查出 2 份「图片版附件」:FY2024 年报的附件 4.16(那份 Dasheng 贷款协议)和 2025 年 4 月委托书的代理卡,正文都只在图片里。所以本票的「可全文检索份数」要写成 132 份完全可检索 + 2 份附件是图片,而不是含糊的 134。script/style → ②剥 HTML 标签 → ③实体还原( 等)→ ④NFKC 归一(只折全角等兼容字符)→ 显式删软连字符 → 显式折破折号(更正本页前一版的说法:NFKC 并不折 en/em 破折号、也不去软连字符,本机 unicodedata 实测 – — − 经 NFKC 后原样不变,只有全角连字符 - 会折成 -;照抄「NFKC 归一(破折号、软连字符)」的人会以为自己已经折过,所以这两步必须各写一步显式做)→ ⑤连续空白折单空格 → ⑥转小写 → ⑦再取一份「只留字母数字」的变体,与第 ⑥ 步做 OR(第 ⑦ 步是必需的:剥标签时标签位置变空格,Unde<span>clared</span> 会被切成两个词,只走六步就查不到——本票用 ZJYLClaude 的词内断标签对照件实测,六步 2/4、七步 4/4;第 ⑦ 步只许用于整句指纹,三字母以内短词禁用,否则会粘字误命中),指纹与待搜文本走同一个函数(次序不能颠倒:先剥非字母数字会把 <b> 里的字母混进正文,反而漏掉)。阳性对照用「难版」——整句同时被换行、 、标签与软连字符打断,3/3 全中;SACH 型连字符误报样本 0 命中。把关改用 NVNIClaude 的全队公共对照件(postest/ 规整版 · 难版 · 阴性件):难版该件实含 3 句,本票管线 3/3 全中(原始子串只得 1),阴性件 0 命中,把关通过后按七步正式重扫,结果按三态分开报(静默跳过会把「取件失败」混进「已扫」,分母就没被证明过):取件失败 0 · 取到但解析失败 0 · 真正过了管线 1,515 个文件(实际读入 268.1 MB)· 命中 0,其中「只有第 ⑦ 步才抓到」的件数也是 0,阴性对照件加了第 ⑦ 步后仍 0 命中。这一轮连工具自身的上限也拆了:原脚本每个文件只读前 3 MB、标签正则写作 <[^>]{0,400}>,而本机有 20 个文件超过 3 MB(最大一份 14,988,072 字节)。按「先证明你的检查能失败」的要求造了两份见证件:一份 5,040,081 字节、指纹放在第 503 万字节处——旧的 3 MB 读法漏掉、整文件读法命中;一份用 500 字符长标签把整句从词内劈开——标签上限写法六步七步全漏、无上限写法第 ⑦ 步命中。两个上限都被证明确实能造出假空;而且标签上限在本票是真咬到了——数字旁边先写范围与判法。判法用的是第三代(RYETClaude/MWGClaude 收敛):①先按文件类型排除二进制件 → ②按 begin 644 … end 区块的偏移排除 uuencode → ③按控制字符占比判二进制,判据要写成机制、不能写成字面:只算 C0(\t\n\r 除外)、C1、U+FFFD 与私用区,绝不能写成「非 ASCII 占比」——本票实测,按字面写法本席自己的中文 COVERAGE.md 非 ASCII 占 36.33%、中文成品页占 17.51%,比解码 JPG(60.14%)低不了多少,5% 阈值会把中文附件与我们自己全部中文页面判成二进制;改成机制写法后同样这两份都是 0.00%,而解码 JPG 是 57.19%/60.85%,干净可分。(三道判据各管一类、互不替代:比例判据抓解码二进制;uuencode 块偏移抓 uuencode——uuencode 是纯可打印 ASCII,两种比例写法对它都是 0.00%、完全无效;层+抽取器判据抓正文尖括号。缺一类就漏一类。本票按机制写法重算,574/80 两个数不变。)→ ④白名单标签名,< 后不许有空白(EHGOClaude 补正:写成 <\s* 会把合同正文里的 < Signature page to follow > 判成真标签),且名字后须紧跟空白///>。本票按严写法重算,与旧写法逐条比对,判定不同的匹配 0 条,574/80 两个数不变;全库也没有一处 < 后带空白的正文写法(该模式匹配数为 0)。范围与判法必须并列标注,跨票不比(GYROClaude/ZBAOClaude/RETOClaude):本票扫描集按扩展名只取 .htm/.html/.txt/.xml,所以本票根本不会出现「解码后的二进制文件」那一类噪声(RYET 票上那 36,671 条就属于这类)——这一点是范围带来的,不是判法带来的,本席据实写明,不当成自己判法稳。但本票的 .txt 是整份提交件、内嵌 uuencode,所以 uuencode 那一类照样会出现(范围A >400 里 2,749 段)。另外 >400 的匹配里真标签只占少数:范围A 3,355 段里真标签 574 段(约 17%),其余是 uuencode 与非标签,不能因为「剔掉 uu 块之后剩下的」就当成真标签。各票基底构成不同(有的把附件解码成图片落盘、有的仍以 uuencode 内嵌),同名的数不是同一个口径,故不做跨票比较。分类器自检喂了四类各一条、样本全部取自本机真实语料(不自编):真长标签(20-F 的 <html>)、uuencode 片段、解出的 .jpg 里的伪标签、正文里的裸 <!-- … -->,四类判对才拿它出数。本席在自检中发现 RYET 那条「整条必须纯 ASCII」不能照抄:本票行情站有一个 3,513 字符的真 <div>,属性里带中文与花引号,纯 ASCII 规则会把它误判成二进制噪声;改用「含控制字符才判二进制」后才对。这条也请别票留意。以下为结果(第 ④ 代补一步:先问「这个文件本来该不该含标记」(GLXGClaude)。前三类靠「这条匹配长什么样」能判,第四类只能靠「这条匹配来自哪儿」——自抽文本层只在两个前提同时成立时才能说「任何 <…> 一律算正文」:(a) 抽取器确实丢弃了二进制载荷、(b) 原件本身不是 XML/标记格式,而且要逐文件判、不能按层一刀切(HIND 的自抽件里 444 个源自 XML 原件、EHGO 的 PDF 转出件里含 begin 644 载荷,两家都不满足);原件层才走排二进制→uuencode→比例→结构。本票扫描集全部属原件层(sec/、01_SEC_raw_filings/ 一手申报,以及 pr/ 的网页抓取),本席自抽的文本(02_analysis/text_extracts/、临时目录)与本席自己写的 COVERAGE/READY/页面副本一律不在扫描集内。据此实测第四类:<数字 单位> 那种写法(SVRE 的 <1 meter)在一手申报里 0 处,只在行情站网页的 JavaScript 里出现 3 处(< 0)、< 50));<单词 …> 那种与真标签同形的写法(GLXG 的 <transferred …>)在本票一条都没有——逐名核过,239,372 条「不在我白名单里」的匹配全是真标记(XBRL linkbase 的 loc/label/labelarc、整份提交件的 <DOCUMENT>/<TYPE>、以及 noscript/iframe/nav 这些我白名单漏收的 HTML5 标签),说明我的白名单偏窄(方向保守、不会把正文算成标签)。故本票第四类自检样本缺项,如实标注,不自编一条来凑满四格。归因:本票这个数稳,是范围与白名单的功劳,不是三道新判据的功劳(照 ZJYLClaude 的做法逐道关掉重算)。范围A 的 3,355 条 >400 匹配里,四道判据全开得 574;单独关掉 uuencode 块判据仍是 574、关掉非可打印比例判据仍是 574、把正则放松成「< 后可带空白」仍是 574、退回只看结构的第一代还是 574——也就是说今晚新增的三道判据在本票各挡掉 0 条,真正起作用的是白名单标签名加上扫描集按扩展名只取文本件(本票不会出现解码二进制那一类)。换一票、换一种基底构成,这三道判据就可能是决定性的,所以不能因为本票没塌就说它们多余,也不能拿本票的数去跟别票比。两件事要分开测:长度普查回答不了「剥标签有没有吃掉正文」(GLXGClaude)——被吃掉的正文大多很短,在「>400 普查」里一条都看不见。本席据此另跑一次、不设长度门槛的误吞专测:把每一处 <…> 按「本不该被当标签」的标准过一遍。结果:一手申报里 0 处正文被误吞——形状上非字母开头的 47,382 处全部是 HTML 注释/doctype/处理指令(合法标记),名字不在我白名单里的 40,891 处逐名核过也全是真标记(R 系列渲染件的 longname/htmlfilename、ost: 开头的 XBRL 事实、acronym/xhtml:span 等);只有行情站抓取页里有 27 处真正的正文尖括号,全是 JavaScript(< elements.length、< 0)),不属申报基底。管线写法的完整三条(ZBAO/GLXG/MWG/EHGO 四家各自实测收敛):①剥标签必须在实体还原之前;②只剥一次;③取字段值时只还原实体、永不剥标签(SACHClaude 的定稿写法,不必按源分支——少一个判断点就少一处忘记切换的机会,而「回落换源时忘记换写法」正是这条链上最易犯的错)。本票全量实测这一种写法:转义源 index-headers 179/179 取到、原样 SGML 源整份提交件 164/164 取到,两源都取到的 134 份取值不一致 0 份。还要防第四种成因:源件把标记当数据存(SVREClaude)。XBRL 的 TextBlock 事实里存着 <span style="…"> 这类转义后的标记,正确顺序的管线在「剥真标签 → 还原实体」之后,这些转义标记会被还原成字面标签插回句子里,把整句劈开——顺序全对、也没剥两次,照样会漏。本票一手申报里这类转义标记有 231,317 处(集中在 7 个整份提交件与 6 个 XBRL 实例文档)。故本票扫描路径改为三变体 OR:①剥标签→还原 ②只还原不剥 ③剥→还原→再剥一次(第三种只许用于全文检索,取字段值的路径永远只还原、不剥)。三变体重扫:范围A 1,494 个文件、范围B 21 个文件,三态全部解析出值,命中仍为 0。层判据的必答项也据此写成两问:㈠抽取器是否丢弃标记;㈡源件里有没有把标记当数据存的字段——只问㈠,顺序全对的管线也会漏。决定写法的是源的类型,不是顺序:本票一份 6-K 实测——转义源(index-headers 的 <PRE>)剥→还原取到、颠倒丢;原样 SGML 源(整份提交件)连「剥→还原」也丢,因为 <ACCEPTANCE-DATETIME> 本身就是标识符,剥掉标签等于剥掉字段名,只剩一串裸数字;原样直读才取得到。由此还有一个回落陷阱:受理时刻的回落顺序是 index-headers → 整份提交件 → API,回落到第二层的那一刻,读法也必须跟着换,否则顺序再对也会得出「该件没有受理时刻」。本票两层都做过功能测试(不是看代码里函数谁先出现):解析器完全不剥标签,对两种源均取到值。本席用本票一份 6-K 实测四种写法:①原样整份 取到;②剥标签→还原 取到(对 index-headers);③还原后再剥一次 丢;④还原→剥标签(只剥一次、顺序颠倒)丢。还查出一条更要紧的:抽字段与搜正文的写法不能共用——对整份提交件而言,连「②剥标签→还原」都会把受理时刻弄丢,因为 <ACCEPTANCE-DATETIME> 本身就是标签,剥掉标签就等于剥掉了字段名。所以本票受理时刻解析器完全不剥标签,只做实体还原(对 index-headers 与整份提交件两种源实测均取到);剥标签只用在全文指纹检索那条路径上。本席自抽层的逐文件自查(不按层一刀切):02_analysis/text_extracts/ 共 499 件,其中含 begin 644 二进制载荷 16 件、源自 XML/标记格式 0 件、含标签样式的 93 件 ⇒ 本席这一层并不满足「任何 <…> 一律算正文」的前提,所以它从一开始就被排除在扫描集之外,本票的 0 命中不依赖这一层的判定。每个数覆盖什么、不覆盖什么:上面 574/80 覆盖的是「本机已落盘、扩展名为 htm/html/txt/xml 的文件里、长度 >400 的匹配」,不覆盖未落盘的 EDGAR 文件、不覆盖图片与 PDF 内部、不覆盖 ≤400 的标签。):㈠范围A=SEC 一手申报目录(sec/ + 01_SEC_raw_filings/):按白名单口径的真标签 4,335,950 个,其中 >200 字符 6,544 个、>400 字符 574 个;这 574 个按名字全部列出、无省略——<p> 332、<td> 156、<ix:relationship> 35、<html> 33、<xbrl> 18,最长 1,090 字符(20-F 的 <html> 带一长串 XBRL 命名空间)。㈡范围B=行情/新闻/法院抓取(不是申报):>400 的真标签 80 个(<path> 64 · <link> 4 · <script> 4 · <span> 2 · <div> 2 · <img> 2 · <body> 2),最长 3,513 字符(行情站 div、纳斯达克新闻页 SVG path)——这批数不属于申报基底,不能混进范围A 报。㈢范围A 内 >400 的匹配里,uuencode 块内 2,749 段、非标签(含正文裸 <!-- -->)32 段,全库另有约 69 万段 uuencode 噪声:它们不是标签,必须单列,既不能算进真标签,也不能反过来当成「超长的都是噪声」的借口——本席把 <u> 那 20 条与 <html> 那 33 条逐条看完(不是抽样),前者 20 条全是噪声、后者 33 条全是真标签。㈣再看 HINDClaude 指出的机制:行内 XBRL <ix:nonFraction> 包在句中数字上,剥不掉就把句子从数字处劈开。本票范围A 内该标签 18,103 个,>400 字符的 0 个,但 >200 的 454 个、>120 的 17,634 个——也就是说 400 上限在本票没咬到这一族(咬到的是 <p>/<td> 的长内联样式),但 120/200 那种更小的上限会咬得极狠。「凡搜含数字整句者都要当心」这条普遍成立,但触发它的标签族取决于申报代理,换一家就变,只能各票各自实测——EHGOClaude 原先「超长的全是噪声、不受影响」那条已由它自己推翻,本席不引用。取消上限重扫后全库仍是 0,这个 0 才算数。去掉上限必须与「不要重复剥标签」配套,只做前者是净亏(HINDClaude 2026-09-19):无上限的剥标签正则遇到正文里的裸 <(如 p < 0.0001、<3m)会一路吃到下一个 >,把真正文整段吃掉;带 400 帽时最多吃 400 字符,去了帽反而更狠。规矩是:管线内部「先剥标签、后实体还原」的顺序不变,但绝不能对自己已经抽取好的文本件再剥一次标签。本票自查:扫描输入取的是一手申报原件(sec/、01_SEC_raw_filings/),不是本席自己抽的文本,02_analysis/text_extracts/ 与 deep/(含 COVERAGE、READY、页面副本,本身就含指纹字样)一律排除在扫描范围外。量化这个风险:本票被正则当成「标签」却不是良构标签的匹配,落在 uuencode 区块内的 339,841 段(2,425 万字符)、落在区块外的 62,724 段(310 万字符);区块外长度超过 200 字符的只有 132 段,最长一段 1,057 字符,逐条看过——是行情站网页里的 JavaScript(< elements.length)与 HTML 注释,不是申报正文。尽管如此仍按 v5 加了「不剥标签」变体与原路径做 OR(只加召回、不引入误报)并重扫:范围A(一手申报)1,494 个文件、范围B(行情/新闻/法院抓取)21 个文件,合计 1,515,三态全部为解析出值,命中 0。另加一道尾部对照:把难版指纹追加到本机最大文件末尾再扫,命中,证明确实读到了文件尾,原结论不变;此前几轮未剥标签/未归一化得出的 0,以本轮为准。闸门口径按 HINDClaude 的更正写成「该件含几条就必须中几条」而不是凑固定分数——难版无 <title>,本就不含「Request Rate Threshold Exceeded」那句,报满分反而说明筛法在无中生有。另用 HIND 的公共脚本(rescan_throttle_pipeline.py(在 HIND/deep/tools/))作独立复扫:其自带难版 4/4、SACH 阴性 0,扫本票 01_SEC_raw_filings 1,264 个文件与 sec 490 个文件(过管线文本合计 311 MB),四条指纹全部 0 命中,与本席脚本结论一致。该公共脚本按「核版本行 + 核哈希」两样一起认,取用的是 v5 / 2026-09-19,sha256 前 12 位 bbfe3c52aaee(v1 有静默跳过、v2 缺显式折破折号、v3 的标签正则带 400 上限、v4 去了上限却还没加「不剥标签」变体,四版都不能用;本席用 v3、v4 做的交叉复核均已作废,现以 v5 为准);用 v5 重跑本票 01_SEC_raw_filings 1,264 件(167.6 MB)与 sec 535 件(143.7 MB),两处均为取件失败 0 · 解析失败 0 · 全量解析,四条指纹六步七步全 0。命中也不等于结论:剥标签换成空格后相邻单元格会被粘成整句(<td>Request Rate</td><td>Threshold</td><td>Exceeded</td> 即为一例),财务报表里这几个词分列相邻格并不罕见,所以命中后一律先回看原文再决定重下或删件;本票 0 命中,未据指纹删改任何文件。-index-headers.html,里面的 <ACCEPTANCE-DATETIME> 是 14 位美东时间。这里有个必踩的坑:这个文件里装着两份一样的报头——顶部注释里那份是原样标签,下面 <PRE> 段那份被转义成了 <…>。脚本若只看 <PRE> 段又没做实体还原,会一条都搜不到,于是你会以为「这份申报没有受理时刻」。OST 实测这个假空率是 134/134,百分之百——必然发生的失效比偶发的更难发现,因为它看起来就像「这个源没有这个字段」。正确做法:先还原实体再搜;真取不到就往上游走一层读整份提交件报头;API 只当参考值,并且要注明是 API 给的。OST 的 134 份全部在第一层就取到,受理时刻分布是盘前 26、盘中 42、盘后 66。SC 13G,2025 年起叫 SCHEDULE 13G),只按一种字样搜就会少数。image_001.jpg 里,图上写的是南京奥飒持江苏奥斯汀 93.71%、苏宏远达持 5.44%、四川奥晒持四川奥牛 36.36%;而年报正文写的是「持有江苏奥斯汀 99%」和「奥晒 40% / 奥尼 34.5%」。两个口径不一样,只读文字就会漏掉。