前一日高低點的停損獵殺
筆記中的每一個數字及其來源:方法細節足以讓人用手算核對,或以幣安與 OKX 的公開封存資料重建一份等價的研 究。文中的程式片段用來說明邏輯,並非重現正式執行的程式碼。
資料
幣安資料取自 data.binance.vision/data/futures/um/,該來源公開且不需要任何憑證:
- 各合約的 1 分鐘 K 線,這是本研究唯一讀取的價格序列;
- 資金費率事件及其真實結算時戳,每一筆事件都附有其週期;
- 每日 aggTrades 檔案,有兩個用途:量測各合約月的價差,以及判定模糊分鐘內成交的先後順序;
- 每月成交量最大的十個合約的 1 分鐘標記價格 K 線。
OKX 資料取自該交易所的公開封存,位於 static.okx.com/cdn/okex/traderecords/:
- USDT 永續的每月 1 分鐘 K 線檔案,自 2021 年 9 月起,含後來下市的合約;
- 每日成交檔案,用來判定模糊分鐘。
OKX 的兩種序列都以 UTC+8 的月與日為單位。檔案會串接起來,並依 K 線開盤時間去除重複,每個成交檔 案則對應到它所涵蓋的 UTC+8 日。
幣安價格以 32 位元浮點數儲存,因此每一次觸及都是在兩側都用已儲存的數值來比較;整數關卡是唯一不取自已儲存 K 線的價位,會先轉換為相同精度再比較,而 OKX 價格則以 64 位元浮點數解析與比較。
樣本範圍
每個月的第一天,所有具備至少 45 天歷史的幣安 USDT 保證金永續合約,依該日之前 30 天的每日美元成 交量中位數排名,前 50 名構成當月的樣本範圍,並排除 BTCDOMUSDT、DEFIUSDT、FOOTBA LLUSDT 與 BLUEBIRDUSDT 這幾個指數型永續。連結商品與股票的 USDT 永續只要排得進來就 保留:共 25 個合約月,多半是 PAXG 與黃金。
排名依據的是封存資料的完整上市歷史,而不是交易所目前的合約清單,因此後來消失的合約仍以其當時實際交易的日期計 入。2020 年 11 月之前符合條件的合約不到 50 個(2020 年 2 月有 2 個,3 月有 8 個 ,一直到 10 月介於 21 到 40 個之間)。結果是 2020 年 2 月到 2026 年 9 月、30 8 個合約、共 3,751 個合約月。
OKX 的樣本範圍,是與每個幣安成員相同標的的 OKX 永續,做法是去掉 1000 這類乘數前綴後對應到 BASE-USDT-SWAP,只要 OKX 有資料即納入。這樣得到 2021 年 10 月到 2026 年 9 月、201 個永續、共 2,697 個合約月,流動性三分位沿用幣安的排名。
價位
日 K 線由 1 分鐘 K 線依 UTC 日彙整而成,一天要有至少 1,380 根 K 線才算完整。第 D 天的波動率尺度 A,是第 D−14 天到第 D−1 天的平均真實區間,這 14 天都 必須完整;在第 D 天生效的每一個價位都使用當天的 A。
TR[d] = max(H[d], C[d-1]) - min(L[d], C[d-1]) # H - L when day d-1 has no bars A[D] = mean(TR[D-14 : D]) # requires all 14 days complete
| 價位 | 定義 | 有效期間 |
|---|---|---|
| 可見 (V) | UTC 第 D−1 日的高點與低點 | D 00:00 到 D+1 00:00 |
| I10, I13 | 在第 D 天 10:00 或 13:00 UTC 結束的 24 小時視窗的高點與低點 | 自錨點起 24 小時 |
| 週線可見 | 前一個 ISO 週的高點與低點 | 整個星期 |
| 週線對照組 | 在週四 10:00 UTC 結束的 7 天視窗 | 接下來 7 天 |
| 整數關卡 | 前一日收盤價上下最接近的 g = 10^(floor(log10 C[D−1]) − 1) 的整數倍,且至少相距 0.1·A | 第 D 天 |
| 整數關卡對照組 | 在 (k + 0.37)·g 格線上套用同一規則 | 第 D 天 |
一個價位只有在其有效期間的第一根開盤價距離近側至少 0.1·A 時才具備資格。兩個價位若位於同 一側、在觸及當根 K 線都仍有效,且彼此相距在 0.1·A 之內,即視為重合。本檢驗只使用在該 事件自身觸及 K 線當下仍有效的價位,因此不會讀到觸及之後的任何資訊。
兩種對照組
登記在案的對照組。 它把 I10 與 I13 合併;任何與 I10 或 I13 價位重合的可見事件都會被剔除,與日線或週線可見價位重合的對 照事件亦然。當 I10 與 I13 價位彼此重合時,保留 I10 的紀錄。
乾淨對照組。 它是 I10 與 I13 價位中,極值形成於第 D−1 天的那個子集合。極值分鐘是視窗內第一個達到該極值的 分鐘;當這個分鐘落在其生效日 00:00 UTC 之前時,該價位即為乾淨:
clean = kind.isin([I10, I13]) & (extreme_minute < activation_day * 1440)
在 10:00 UTC 結束的視窗包含當前 UTC 日的前十個小時,而在這幾個小時內形成的極值就是今天的盤中 高點或低點,日 K 線會把它畫出來。在整個幣安樣本中,已判定的登記對照觸及有 57.7% 屬於這一類:29, 387 次對 21,578 次乾淨觸及。它們另外列為一組回報。
結果判定括弧
在有效期間內第一根成交穿越該價位的 1 分鐘 K 線上,以 h = 0.1·A 的對稱括弧記錄 首次通過。上緣 U = L + h,下緣 D = L − h,此處以低點為例說明,高點的情形對稱 ,觀察期為 1,440 根 K 線。
# touch bar b0 if low[b0] <= D: outcome = AMBIG_A1 if close[b0] >= U else CONT # A2 flag if high[b0] >= U elif close[b0] >= U: outcome = REV else: continue to later bars # A3 flag if high[b0] >= U # later bars: both barriers in one bar -> AMBIG_A4; else the first barrier hit decides
若在判定出結果之前出現連續五分鐘以上的資料缺漏,或觀察期結束仍未判定,該事件即被剔除;這使得兩組未判定的比例 都低於 0.01%。
逐筆判定
A1 到 A4 這幾個標記用來標示內部先後順序會影響結果的分鐘,在幣安涵蓋 11.0% 的可見觸及與 12. 7% 的登記對照觸及。幣安的乾淨對照組為 14.8%,OKX 則是可見 10.2%、乾淨 13.3%。
由於各處的比例都高於登記在案的 3% 觸發門檻,每一組各抽取至多 400 個被標記事件的分層隨機樣本,逐筆成 交加以判定。每個事件當日的檔案都會下載並裁切到所需的分鐘:
- 第一筆落在該價位上或穿越該價位的成交即為觸及;
- 其後成交先碰到哪一側邊界,就由哪一側決定結果;
- 由於 K 線極值以 32 位元儲存,觸及比較允許 1e-6 的相對容差。
每個被標記的事件隨後套用其所屬「組別與標記」格的比率。若某一格的逐筆事件少於 10 個,就在同一組之內與另一 個雙邊界標記合併(A1 與 A4 合併),此規則僅適用於乾淨對照組的估計。
| 樣本 | 已判定事件 | 隨機種子 |
|---|---|---|
| 登記在案的檢驗,幣安 | 799 / 799 | 7 |
| 乾淨對照組,幣安(可見事件同上;同一樣本中的 200 個乾淨事件,另加 201 個) | 800 / 800 | 追加抽樣使用 17 |
| 乾淨對照組,OKX | 802 / 802 | 7 |
分層與權重
差額為 Δ = Σ ws (pV,s − pC,s) / Σ ws,其中 ws 為第 s 層中已判定的可見事件數。任一組事件數少於 10 的層會被剔除,而每一個三分位切點都取自該市場可見組與對照組合 併後的樣本。
| 估計式 | 維度 | 分層 | 被剔除事件 |
|---|---|---|---|
| 登記在案 | 方向 × 觸及所在的 4 小時區塊 × 時期 × 流動性 × 距離 × 速度(三分位) | 972 | 49% |
| 乾淨對照組,主要設定 | 方向 × 時期 × 流動性 × 距離 × 速度 × 經過時間(三分位) | 486 | 3.9% Binance, 7.6% OKX |
時鐘小時這個區塊幾乎把兩組完全分開,因為可見價位在 00:00 生效,而對照組在 10:00 或 13:00 生效,這也是為什麼登記樣本有一半落在某一組缺席的分層裡。乾淨對照組估計式把時鐘小時換成從生效到觸及所經過的 時間。接近速度定義為 |log(觸及時開盤價 / 60 根 K 線前的開盤價)| 除以 A / C[D&mi nus;1]。
統計推論
登記在案之檢驗的區間,來自以 ISO 日曆週為叢集的自助法,同一週的所有合約視為一個叢集,重抽 10,000 次,隨機種子 20261008。兩階段區間在每一次重抽中,還會在各個「組別與標記」格內重新抽取逐筆判定的事 件,再重新計算比率,最後才算 Δ:
for b in range(10_000):
w = np.bincount(rng.integers(0, W, W), minlength=W) # weeks
rates = {cell: rng.choice(x, len(x)).mean() for cell, x in tick.items()}
draws[b] = delta(w, rates)在登記樣本上,這完全重現了登記在案的點估計值 −0.019865,並把區間從 [−0 .0366, −0.0053] 放寬到 [−0.0399, −0.002 6],其中 53.2% 的抽樣結果落在 −0.02 或更低。乾淨對照組檢驗以此為其主要區間(隨機 種子 20261009)。雙尾 p 值取抽樣結果中較小那一尾比例的兩倍。
方法檢核
| 檢核項目 | 通過條件 | Binance | OKX |
|---|---|---|---|
| 洗牌虛無檢定,20 個種子 | Δ 平均值在 ±0.005 之內 | 登記 +0.0015(標準差 0.0060);乾淨 −0.0011 | 乾淨 −0.0005 |
| 污染檢定,200 個事件 | 價位、A、資格、重合、分層與極值分鐘皆逐位元相同 | 200/200(兩種設計皆是) | 200/200 |
| 洩漏價位(第 D 天自身的高點或低點) | |Δ| > 0.1 | +0.506 | 不適用 |
| 時鐘錨點安慰劑(I10 對 I13) | 區間包含 0,或 |Δ| < 0.01 | 登記 +0.011 [−0.015, +0.037];乾淨 +0.008 [−0.021, +0.038] | 乾淨 −0.013 [−0.054, +0.027] |
| 編譯核心對照純 Python 參考實作 | 0 處不一致 | 30,000 筆中 0 筆(ETH、BTC、1000PEPE) | 同一份程式碼 |
洗牌是把整根 1 分鐘 K 線當作相對形狀(開盤到高點、低點與收盤)在各個日曆月之內重新排列,再從序列最初的 開盤價開始串接,使每一根 K 線都在前一根洗牌後的收盤價開出;價位、A、分層與結果都以未更動的程式碼重新計算 。
錨點安慰劑的檢定力偏低:它約 2.6 個百分點的半寬超過了登記在案的效果量,因此它只能排除大於約 3.7 個 百分點的時鐘錨點效應。
各項檢驗結果
| 檢驗 | Δ | 95% 區間 | 進入估計/已判定的可見事件 | 標籤 |
|---|---|---|---|---|
| 登記在案,逐筆校正 | −0.0199 | −0.0366 到 −0.0053 | 18,689 / 37,355 | 登記在案:「真實但不重大」 |
| 登記在案,兩階段區間 | −0.0199 | −0.0399 到 −0.0026 | 同上 | 不適用 |
| 登記在案,1 分鐘 | −0.0190 | −0.0371 到 −0.0034 | 18,511 | 不適用 |
| 乾淨對照組,幣安 | −0.0511 | −0.0673 到 −0.0362 | 35,707 / 37,551 | 重大的續勢 |
| 乾淨對照組,OKX | −0.0436 | −0.0625 到 −0.0267 | 22,717 / 24,841 | 重大的續勢 |
乾淨對照組的標籤依循增補文件中以區間為準的表格:重大是指區間落在零以下,且點估計值達到或超過 −0.02。
| 變體 | Binance | OKX |
|---|---|---|
| 登記在案的分層 | −0.041 (−0.061 到 −0.022) | −0.034 (−0.059 到 −0.012) |
| 主要分層再加上價位年齡 | −0.031 (−0.048 到 −0.017) | −0.037 (−0.055 到 −0.022) |
| 不含時間分層 | −0.046 (−0.060 到 −0.032) | −0.035 (−0.052 到 −0.020) |
| 不分層 | −0.046 (−0.059 到 −0.032) | −0.034 (−0.050 到 −0.020) |
| 剔除與週線價位重合的可見事件 | −0.048 (−0.064 到 −0.034) | −0.041 (−0.059 到 −0.025) |
| 僅 I10 乾淨 | −0.045 (−0.062 到 −0.029) | −0.035 (−0.055 到 −0.016) |
| 僅 I13 乾淨 | −0.077 (−0.102 到 −0.054) | −0.064 (−0.096 到 −0.035) |
| 以今天的盤中極值作為對照 | +0.001 (−0.013 到 +0.013) | −0.009 (−0.026 到 +0.007) |
| 把登記在案的設計套用到 OKX | 不適用 | −0.028 (−0.051 到 −0.007) |
乾淨對照組的各種變體,Δ 及其 95% 區間。
探索性分析,在乾淨對照組結果之後進行。 在生效當天就被碰到、且落在前一日區間內的乾淨對照價位,在幣安為 −0.049(−0.065 到 −0.035),在 OKX 為 −0.052(−0.074 到 −0 .034)。若在隔天才被碰到,也就是構成對前一日極值的突破,同樣這些價位得到 −0.004(− 0.024 到 +0.015)與 −0.015(−0.038 到 +0.009)。
次要檢驗。
- 位移剖析(1 分鐘,登記在案的對照組)。 在價位上為 −0.019,在 0.05 ATR 處為 −0.027,在 0.1 ATR 處為 −0.020,在 0.2 處為 −0.002,在 0.3 處為 +0.005,在 0.5 處為 −0.010。0.75 與 1.0 ATR 的位移未予列出,因為進入那些估計的可見事件不到 2,000 個。
- 週線價位。 −0.039 (−0.060 到 −0.019).
- 整數關卡。 在 80,987 次整數觸及與 82,121 次對照觸及上為 −0.029(−0.034 到 −0.024);對照格線的反轉率為 0.517。週線與整數關卡兩項結果在 Holm 校正下皆為拒絕。
- 異質性。 每一個時期、每一個方向、每一個流動性三分位與每一個觸及小時區塊都是負值,介於 −0.002 到 &minu s;0.028 之間。
交易規則、成本與資金費率
兩條規則在主樣本的每一次觸及上執行,每個價位、每條規則各一筆交易:
- Sweep 反向操作。 在觸及後 60 根 K 線之內,最深偏離仍維持在 0.3·A 以內、且第一根收回內側的 K 線。進場在下 一根開盤,停損設在偏離之外 0.05·A,目標為風險的兩倍。
- 突破。 60 根 K 線之內第一根越過價位至少 0.1·A 的收盤,進場在下一根開盤,停損設在 L + 0.05 ·A,目標為風險的兩倍。
出場讀取完整的 1 分鐘 OHLC,當停損與目標落在同一根 K 線時以停損計,若跳空穿越任一邊則以開盤價成交 ,並在進場後 1,440 分鐘以時間出場。滾動前推版本以 12 個月在九種設定中擇一,再測試接下來的 3 個 月,自 2021 年第 1 季起每次推進一季;訓練以進場時間為準且未做淨化,因而有 1,059,975 筆交 易中的 729 筆在下一個測試季內出場。
gross = direction * (exit / entry - 1) fee = 2 * 5e-4 # taker, both fills slip = 2 * 0.75 * spread_month # half spread plus half again, per fill fund = -direction * sum(rate_k for settlement k in (entry, exit]) net = gross + fund - fee - slip
價差取主動方翻轉之間成交價彈跳幅度的中位數,於每個合約月的 8 日與 22 日量測,必要時最多往後遞補三次。 在 3,751 個合約月中,有 2,123 個是為本研究量測的,4 個沒有成交檔案,其餘來自以同一估計式所做 的較早量測,並以 2023 年 7 月 15 日 BTCUSDT 的 bookTicker 驗證,結果為 0 .0330 bp。
可見價位上的四項檢驗構成一個 Benjamini-Hochberg 家族,四項的單尾 p 值都是 1.0,而 滾動前推交易簿在 9 次嘗試下的緊縮夏普值實際上為零。
封存的計畫
有三份文件以 SHA-256 封存。可來信 daniel@daru.finance 索取。
| 文件 | SHA-256 | 封存時間(UTC) |
|---|---|---|
| 預先登記(PREREG.md) | 51a8744e512bb0423f9d7f39f013d6c03186049fcab506b2427c795dc99dcc2f | 2026-10-08 21:03:57 |
| 逐項記錄偏離之處的修訂版(PREREG-v2.md) | 3694a506513d74a900a5f2b354ccae96b54fd70d2820fb520f6a93222d04889a | 2026-10-09 02:37:03 |
| 乾淨對照組、OKX 與前瞻檢驗計畫(ADDENDUM-A.md) | d5f046bb6f53183e583448a20aa6d1c48613e290101681016109476af0f726b1 | 2026-10-09 02:39:06 |
sha256sum PREREG.md PREREG-v2.md ADDENDUM-A.md
預先登記是在任何結果被計算出來之前封存的,而修訂版則是在登記在案的結果出來之後才寫的,並在第一行就說明了這一 點。幣安的乾淨對照組檢驗是在 v1 結果之後登記的;OKX 的重做則是在任何 OKX 價位或結果被計算之前登 記的。
登記在案的結論,原文照錄: 「真實但不重大。」與之搭配的登記答案範本「可量測,但小到不足以移動停損」在修訂版中撤回,因為區間延伸到 − 0.037,已超過 0.02 的重大性門檻。
由增補文件封存規則所產生的答案句: 「不會:它們反而更常被突破,約多 4 個百分點」。其條件全部成立:所有區間都在零以下,兩項乾淨對照組檢驗都達到重大,其 中 N 取較小估計值 4.36 的下取整。
與筆記一同顯示的答案句: 「不會:它們被突破的頻率至少和其他價位一樣高」。這句話只陳述每一種設定都支持的內容,因為探索性切分顯示,那 4 個百分 點的幅度在對照前一日區間內未畫出的價位時成立,而在對照「碰到時同時也突破近期極值」的未畫出價位時則大致消失。
與預先登記的偏離之處
修訂版連同其雜湊值逐項記錄了以下各點。
- 洗牌的建構方式。 封存的文字要求每個月都從該月原本的第一個開盤價重新串接,這會在每個月 1 日 00:00 UTC 製造一個價格跳空,因 為洗牌後的月份絕不會剛好結束在下一個真實月份開始的位置。前一天仍然有效的價位會被那根跳空 K 線碰到,在 20 個種子 上共發生 54,391 次,其中 2% 到 3% 判定為反轉;因此依封存文字執行的洗牌檢核回傳 +0.0323 而未通 過,若照封存文字的字面意思,登記在案的檢驗就是「不予採信:方法」。把洗牌後的路徑跨月連續串接可消除該跳空,之後檢核回傳 +0.0015;筆記中的每一項結果都採用連續串接的建構方式。
- 整數關卡的精度。 整數關卡與其對照價位一開始是以 64 位元精度對上 32 位元的 K 線極值來比較,這會漏掉一些恰好落在價位上的成交。 改以 32 位元精度後,估計值從 −0.0331 變為 −0.0292,Holm 校正的判定不 變。
- 樣本過小規則。 該規則要求 20,000 個已判定的可見事件,並套用在分層篩選之前的已判定事件上:可見 37,355 個、對照 50, 662 個。若改在篩選之後計算,進入估計的可見事件為 18,689 個,依那種讀法,登記在案的檢驗將會是「樣本過小、無 法判定」。
- 實作上的解讀。 指數清單、第一個真實區間、切點、時期、逐筆容差、週線與整數價位的重合判定、逐筆校正的適用範圍,以及交易規則的進場 K 線,都寫進了修訂版。其中有些是在執行之後才記錄的,時間取自檔案時戳。
- 核心比對的時機。 編譯核心與純 Python 參考實作的比對,是在完整執行之後才做的,而非原計畫的事前,結果有 0 處不一致。
- 回報內容的增補與撤回。 新增了兩階段區間。以標記價格做的切分,原本被解讀為停損對強平之別,現予撤回,因為只在最後成交價上看得到的觸及,依其建構 方式本來就是淺影線,所以那項切分量測到的其實是穿越深度。0.5 ATR 之外的位移不予回報。
- 一項探索性分析。 依觸及日對乾淨對照組所做的切分,是在乾淨對照組結果出來之後才執行的,出現之處一律標示為探索性。
前瞻檢驗
已在增補文件中定義,尚未執行。它涵蓋 2026 年 9 月 19 日(含)之後生效的幣安與 OKX 價位,採 用乾淨對照組估計式,額外把市場加入作為一個分層,並沿用同一張決策表。
它會在兩個市場合計累積至少 30,000 個已判定可見事件之後的第一個月底執行。每年約累積 10,700 個 ,因此預計在 2029 年前後;若到 2029 年 12 月 31 日仍未達門檻,檢驗就在該日執行,並標示為 檢定力不足。
限制
- 區間極值。 本設計並未把可見性與「身為區間極值」區分開來。
- 日界線。 00:00 UTC 同時也是幣安的資金費率時點,而 OKX 的預設 K 線使用 UTC+8。
- OKX 並非獨立的歷史資料。 它的價格在相同標的上與幣安同步變動,因此這次重做並不是一段獨立的價格歷史。
- 未被觀察到的委託。 停損與強平始終無法直接觀察。
- 樣本範圍。 2020 年的合約數不到 50 個,且包含 25 個非加密貨幣的合約月。
- 樣本範圍邊界的重合判定。 某合約進入樣本範圍期間的第一天或最後一天的價位,只會對照為樣本範圍日所建立的價位來檢查重合,這影響不到 2% 的事件。
- 逐筆格數偏少。 A1 與 A4 這兩個逐筆格各自只建立在 5 到 17 個事件上。
索取完整流程
筆記中的圖表繪自 本研究公開的結果表。每筆交易的明細、事件表與完整流程並不從本頁散布;如需索取,請來信至 daniel@daru.finance.

