VALYNOXSTRATEGY RESEARCH TECHNOLOGY
AlphaPrimeAlphaPrime
策略學院 / 指標與訊號

eVWAP 是什麼:在 ES 期貨上回測錨定 VWAP 規則

eVWAP 是錨定 VWAP:一條成交量加權平均價,從你選定的點開始,之後持續累計,而不是每個交易時段重新開始。以書面規則放置錨點時,建立在它之上的規則可以在期貨上回測;看過圖表後憑眼睛挑的錨點無法測試,還會讓結果看起來更好。

作者 · 發佈 · 更新於 · 編輯原則

目錄
  1. eVWAP 是什麼?與 VWAP 有何不同?
  2. VWAP 如何由價格與成交量計算?
  3. 錨定 VWAP 的錨點該怎麼選?
  4. eVWAP 能用在進場與出場嗎?
  5. ES 期貨上「價格對 VWAP」的回測顯示什麼?
  6. VWAP 在日內 K 棒上有哪些限制?
  7. 常見問題
  8. 參考文獻

eVWAP 是什麼?與 VWAP 有何不同?

eVWAP 是錨定 VWAP:一條成交量加權平均價,從你選定的點開始,之後持續累計,而不是像一般 VWAP 那樣在每個交易時段開盤重新開始。建立在它之上的規則可以在期貨上回測,但前提是錨點由書面規則放置,而不是憑眼睛。

VWAP(成交量加權平均價)是自某個起點以來,所有成交合約的平均成交價,每根 K 棒按其成交量比例計入。VWAP 成交量加權平均價指標頁完整說明了定義;本文談的是如何測試它。交易時段 VWAP 是常見的版本:從交易時段開盤開始,到下一次開盤就作廢。eVWAP 則保留一條線,從錨點一路延續,錨點就是你指定為起點的那根 K 棒。名稱裡的字母,指的是這條線起算的事件或位置;有些圖表把同一條線稱為錨定 VWAP。

交易時段 VWAP 好比每載一位乘客就歸零的計程車計費表。eVWAP 則是一個計費表,你在自己選的地點啟動,之後不再歸零。兩者衡量的是同一件事,以成交量加權的平均價格,只是涵蓋的時間長度不同。在可檢驗的技術分析工具與指標之中,VWAP 是少數用到成交量的一個,這也是它的結果取決於資料中成交量欄位的原因(最後一節會談到)。

屬性交易時段 VWAPeVWAP(錨定 VWAP)
起點每天的交易時段開盤你選定的一根 K 棒
重設每日從不重設,除非你移動錨點
顯示什麼今天的平均成交價自錨點以來的平均成交價
存續後期的表現到了下午難以再動數個交易時段後難以再動
兩者何時一致只有錨點是交易時段開盤時,而且只到下一次開盤為止
同樣三個示意交易日的兩個面板:左邊是在每次交易時段開盤跳回價格附近的交易時段 VWAP 線,右邊是錨定在第一天低點、橫跨三天不重設的一條 eVWAP 線 eVWAP 不重設 灰線為價格;三天為虛構 交易時段 VWAP eVWAP,單一錨點 公式相同,起點不同。 所以:規則要寫明起點 K 棒。
交易時段 VWAP 每天重新開始;eVWAP 從選定的一個錨點持續延伸。兩條線是同一個計算,只是涵蓋的 K 棒範圍不同。

VWAP 如何由價格與成交量計算?

VWAP 是每根 K 棒的典型價格乘以成交量的累計和,除以成交量的累計和,所以大量 K 棒對這條線的拉力比小量 K 棒大,而且線走得越久越難移動。典型價格是一根 K 棒最高價、最低價與收盤價的平均,用一個數字代表該 K 棒內成交發生的位置。

本文唯一的公式:

VWAP = 總和(典型價格 × 成交量)÷ 總和(成交量)

其中典型價格是一根 K 棒最高價、最低價與收盤價的平均,成交量是該 K 棒的成交口數,兩個總和都從錨點 K 棒累計到當前 K 棒。可以把它想成一桶水。每根 K 棒倒入一些水(成交量),水有溫度(價格)。桶裡的水只有一個溫度,就是 VWAP。大量的水一倒入,溫度變化大;少量的水幾乎不改變溫度;桶越滿,新倒入的水越難撼動它。

假設性範例

錨點之後的五根 K 棒,典型價格與成交量(口數):100 / 10、102 / 40、101 / 10、104 / 30、103 / 10。每根 K 棒的價格乘以成交量:1,000;4,080;1,010;3,120;1,030。價格乘以成交量的累計:1,000;5,080;6,090;9,210;10,240。成交量的累計:10;50;60;90;100。累計 VWAP:100.0;101.6;101.5;102.3;102.4。價位 102 的 40 口 K 棒把這條線移動了 1.6 點。最後一根價位 103 的 10 口 K 棒只移動了 0.1 點,因為桶裡已經有 90 口。

錨點之後的五根示意 K 棒,含價格、成交量、累計 VWAP,以及每根 K 棒讓它移動多少:價位 102 的 40 口 K 棒讓 VWAP 移動 1.6 點,最後一根價位 103 的 10 口 K 棒只移動 0.1 大量 K 棒推動 VWAP 錨點後虛構的五根 K 棒 價格 成交量 VWAP 移動 100 102 101 104 103 100.0 101.6 101.5 102.3 102.4 10 40 10 30 10 — +1.6 −0.1 +0.8 +0.1 大量 K 棒拉動;舊線變僵。 所以:測試時記下錨點的年齡。
上述範例的累計 VWAP。大量 K 棒會移動這條線;序列後段的小量 K 棒幾乎不會。

對測試有兩個影響。第一,VWAP 不是移動平均:沒有任何資料會從計算區間中掉出,所以舊的大量 K 棒在整條線的存續期間都保有其權重。第二,這條線會隨時間變硬,所以「價格穿越 VWAP」的規則,在錨點之後的最初幾根 K 棒常常觸發,之後少有觸發。因此,錨定線的回測表現,取決於規則觸發時錨點有多老。

錨定 VWAP 的錨點該怎麼選?

以程式只憑資料就能重複的書面規則來選錨點,因為看過圖表後憑眼睛選的錨點無法測試,還容易讓結果看起來更好。錨點是上述公式中累計開始的那根 K 棒。最漂亮的錨定 VWAP 圖表,把錨點放在重要的低點或高點,而這個點是數週後才知道它重要。把回測放在那根 K 棒上,用的就是未來。

回測可以放置的錨點:

  1. 交易時段開盤。錨點是每個交易時段的第一根 K 棒。這就是一般的交易時段 VWAP,也最容易測試。
  2. 前一個波段高點或低點,以 N 根 K 棒定義。波段低點是指低點低於左右各 N 根 K 棒低點的那一根 K 棒。每確認一個新波段,錨點就移到新波段,確認時間是波段 K 棒之後的 N 根 K 棒。規則必須以確認的那根 K 棒作為它最早可以採取動作的 K 棒,而不是波段 K 棒。
  3. 結算、到期或轉倉日。錨點是合約月份結算後,或連續月資料轉倉後的第一根 K 棒。台指期是每月固定日期;ES 則是每季。
  4. 排定的經濟數據公布或選擇權到期。錨點是某個有日期的事件之後的第一根 K 棒。關注賣方伽瑪曝險(GEX)價位的交易者,有時會把錨點放在重設這些價位的到期日,因為造成這些價位的部位,是從那天起才建立的。
五種錨點類型:交易時段開盤、N 根 K 棒的波段、轉倉日與有日期的公布,程式都能從過去的 K 棒找到,並分別於每日、每個新波段、每次轉倉與每個事件重設;憑眼睛挑的錨點程式找不到,也無法重複 哪些錨點可以測試? 只從過去 K 棒找出 錨點 可測試 重設 交易時段開盤 波段,N 根 轉倉日 有日期的公布 憑眼睛挑 是 是 是 是 否 每日 新波段 每次轉倉 每個事件 無法重複 憑眼睛挑的錨點無法測試。 所以:把錨點寫成規則。
程式能從資料放置的四種錨點,以及程式無法放置的那一種。只有前四種可以放進回測。

手挑的圖表轉折點不在清單上,是有原因的。若你把錨點放在「四月那個明顯的低點」,那是你看著價格從那裡漲走之後才選的。從它畫出的線,在大部分漲幅中都會在價格下方,而「價格在錨定 VWAP 之上就買進」的規則,恰恰在讓你選出這個錨點的那張圖上表現亮眼。同一條規則改在依波段定義放置的錨點上測試,包括失敗的那些波段,才是誠實的版本。

eVWAP 能用在進場與出場嗎?

VWAP 線可以產生三種可測試的規則:依價格相對於這條線的位置交易、價格拉回這條線時進場,或價格回到這條線時出場;每一種在測試之前,都必須寫成針對 K 棒收盤的固定條件。人們問的「eVWAP 能用在進場與出場嗎」,答案簡短:能,只要規則寫明哪一根 K 棒收盤觸發哪一種委託。

規則類型進場條件出場條件押注的對象
價格在線的哪一側K 棒收在線上方:做多。收在線下方:做空。K 棒收在線的另一側錨點以來的買方都獲利,而且持續買進
拉回這條線價格原本在線上方,一根 K 棒觸及這條線後收回線上方:做多固定停利、移動停損,或收在線下方這條線是買方防守的價位
回到線出場任何其他進場規則K 棒收在線上或穿越這條線平均成交價是行情失去動力的位置

依序寫出來,這條「價格在線哪一側」的規則如下:

  1. 以上一節的其中一種規則放置錨點。
  2. 等一根 K 棒收在線上方(做多)或線下方(做空)。看收盤、而不看 K 棒內的觸及,可避免測試用到事後才知道的價格。
  3. 在下一根 K 棒開盤送出委託。決定在收盤做出;成交在稍後。
  4. 當一根 K 棒收在這條線的另一側時平倉;若規則是反手,就在下一個開盤建立反向部位。
固定四步驟的 VWAP 規則:由規則設定錨點、一根 K 棒收盤越過這條線、下一根 K 棒開盤送出委託,並在一根 K 棒收盤回到線的另一側時平倉;側邊方框列出三種規則類型:價格在線哪一側、拉回與回到線出場 依序以 K 棒收盤測試 一條規則,四個固定步驟 1 2 3 4 由規則設定錨點 K 棒收盤越過線 下一個開盤下單 收盤回穿即平倉 三種類型 價格在線哪一側 拉回 回到線出場 收盤決定,下一棒成交。 所以:先單獨測試 VWAP 規則。
VWAP 規則只有寫成按固定順序的 K 棒收盤條件,才能測試。側邊方框列出三種規則類型與各自的觸發條件。

先單獨測試 VWAP 條件,再加其他條件。拉回規則常搭配震盪指標來抓轉折時機,例如隨機指標 KD(Stochastic Oscillator)與其超買、超賣讀數,但兩者合併測試,你無從知道是哪一部分在起作用。先單獨執行 VWAP 條件,讀它扣除成本後的交易筆數與平均每筆損益,再加第二個條件,觀察改變了什麼。下一節就是用最單純的規則「價格在線哪一側」做這件事,不加任何其他東西。

ES 期貨上「價格對 VWAP」的回測顯示什麼?

一條單一規則的「價格對 VWAP」策略,在 ES 日 K 棒上測試 2019 年至 2025 年年中,每筆交易收取 $20 手續費與 $25 滑價,沒有停損與濾網。搜尋在 1,024 個候選策略中保留了其中一個;它的數字既顯示這條規則做了什麼,也顯示為什麼事後才挑出保留下來的那一個,會讓結果看起來更好。這次測試使用 AlphaPrime(Valynox),在 ES 日 K 棒上,期間 2019-01-02 至 2025-06-30,多空皆做,一口。這條規則是上述日內錨定線的替代:被測的線由日 K 棒建立,從規則設定的位置開始,而不是你在日內圖表上放置的錨點。

來源:AlphaPrime 產品引擎(CPU),2026-10-31 執行。ES 日線,2019-01-02 至 2025-06-30,多空都做,1 口,每筆手續費 $20、滑價 $25。

項目結果
淨利(已平倉)$109,660
最大回撤$56,977.5
交易筆數67
勝率65.67%
獲利因子1.769
平均每筆$1,636.72
在場時間91.62%

數字要一起讀,不要一個一個讀。持倉時間占比 91.62%,代表這條規則幾乎一直持有部位,所以它更接近在多空之間切換,而不是等待機會才進場的規則。在涵蓋的年份裡,S&P 500 大部分時間上漲,只要價格在平均價之上就做多的規則,大部分時間都在做多,也會收下一部分漲幅。六年半內 67 筆交易,約每月一筆,加上平均每筆損益 $1,636.72,吻合這個畫面:交易少,每筆持有數週。每筆 $20 手續費與 $25 滑價,相對於這個平均每筆損益只占一小部分,與日內交易相反,日內交易是成本決定結果。

請看每段回撤持續多久、標示出的樣本外區段的權益曲線與較早部分相比表現如何,以及獲利是集中在幾個階段,還是分散在各年。
請看每段回撤持續多久、標示出的樣本外區段的權益曲線與較早部分相比表現如何,以及獲利是集中在幾個階段,還是分散在各年。 ES · 日 K 棒 · 2019-01-02 至 2025-06-30 · CPU 引擎回測

一口合約 $56,977.5 的最大回撤,是要拿來對照淨損益 $109,660 的數字。經歷這條曲線的交易者,會在某一時點回吐相當大一部分獲利,並撐過這段,沒有停損、也沒有濾網,因為規則本來就沒有這兩項。獲利因子 1.769 與勝率 65.67% 描述的是已平倉的交易;至於一筆交易在等 K 棒收到線另一側的期間,未平倉虧損延續了多久,這兩個數字說明不了。

先比較淨損益與最大回撤,再確認交易筆數夠多,勝率與獲利因子才有意義。
先比較淨損益與最大回撤,再確認交易筆數夠多,勝率與獲利因子才有意義。 ES · 日 K 棒 · 2019-01-02 至 2025-06-30 · CPU 引擎回測

接下來是讓結果變好看的部分。這個候選是在搜尋試過的 1,024 個中保留下來的,是在 1,024 個結果全部揭曉後,依報酬相對回撤挑出的。其他候選的設定不同,多數表現較差。事後從許多個裡挑出最好的,會把保留結果抬高到超過這條規則在新資料上的表現;Bailey、Borwein、López de Prado 與 Zhu(2014)說明了這個抬高的幅度隨嘗試次數增加會變多大,而回測過度最佳化:為什麼最漂亮的回測通常被高估用白話解釋了其中的機制。表中沒有任何內容說明「價格對 VWAP」規則賺到這筆錢,或讀者可以預期同樣結果。表中說明的是:這條單純的規則扣除成本後,約每月交易一次,而且一路上承受的回撤超過其獲利的一半。1,024 個候選每一個都付了 $20 手續費與 $25 滑價,且都在訊號後的下一根 K 棒成交,因為 AlphaPrime 的回測就是這樣處理每一次評估,所以保留下來的候選不是只在扣除成本前才看起來最好的那一個。

VWAP 在日內 K 棒上有哪些限制?

在日內 K 棒上,VWAP 取決於成交量欄位、交易時段邊界與資料的時區,所以回測在採信任何 VWAP 規則的結果之前,都必須檢查這三項;期貨成交量分散在不同合約月份,接近轉倉日時還要多檢查第四項。日 K 棒會掩蓋這些問題,因為每根 K 棒本來就是一個交易時段、一個總成交量。日內 K 棒則會讓它們現形。

設定日 K 棒日內 K 棒資料上要檢查什麼
成交量欄位當日總成交口數每根 K 棒的成交量可能缺漏、由逐筆成交筆數估算,或只來自單一資料來源把一天內各 K 棒的成交量加總,與交易所公布的該合約當日成交量比對
交易時段邊界每天一根 K 棒,無需設定必須正確設定交易所的交易時段起點,否則交易時段 VWAP 會在錯誤的 K 棒重設在你的資料中找出一個交易時段的第一根 K 棒,確認它是該時段的第一個成交時間
時區只有日期若資料標記的是另一個時區,每根 K 棒都會位移,重設會落在交易進行中途拿已知事件(例如美國現貨股市開盤)的時間戳記,對照你的圖表
合約轉倉價格上一個轉倉跳空轉倉前後數日,成交量分散在兩個合約月份查看轉倉週各月份的成交量;決定 VWAP 讀哪個月份的 K 棒
日 K 棒與日內 K 棒上四項資料設定的比較:成交量在日 K 棒是當日總量,日內則可能缺漏;交易時段起點與時區在日 K 棒不需要,日內必須設定,否則 K 棒會位移;合約轉倉在日 K 棒是一個跳空,日內則會分散成交量 四項檢查:日內 VWAP 日 K 棒藏起的,日內會顯現 設定 日 日內 成交量 時段起點 時區 合約轉倉 當日總量 不需要 不需要 一個跳空 可能缺漏 必須設定 K 棒可能位移 成交量分散 設定錯了,線就偏了。 所以:先手算五根 K 棒。
同一條 VWAP 規則在日 K 棒與日內 K 棒上讀到的內容不同。每一列是一項會改變這條線位置的設定。

交易時段邊界在 ES 上最需要留意,因為這個合約整夜交易,而許多交易者希望 VWAP 從美股開盤開始,而不是從電子交易時段開始。兩者都是有效的錨點,但會產生不同的線與不同的交易,所以規則必須指明其中一個。交易所不時會調整交易時段;請到交易所的合約頁面確認目前的時間,並在設定回測前,用免費工具期貨現在有開盤嗎?,查看你所在時區的交易時段起點。

還有兩個較小的重點。典型價格要用真實的開高低收 K 棒:平均 K 棒(Heikin Ashi)是由前面的 K 棒平滑而來,以它建立的 VWAP 並不是任何人實際付出的平均價。另外,在期貨上,要決定錨定線在轉倉時如何處理:如果你的連續月資料在每次轉倉時調整舊價格,錨點在轉倉之前的線,就是以調整後的價格建立,與交易者當時看到的線並不相符。

接下來要做的測試只需十分鐘。打開一個交易時段的 ES 或台指期日內資料,取你選定的交易時段起點之後的前五根 K 棒,照上面範例的方式手算公式。把你算出的第五個值,與圖表在那根 K 棒上顯示的交易時段 VWAP 比較。若兩者不同,表中四項設定就有一項是錯的,修正它要先於測試任何 VWAP 規則。

常見問題

eVWAP 與錨定 VWAP 是同一個東西嗎?

是。兩個名稱都指從交易者選定的 K 棒開始、不做每日重設而持續累計的成交量加權平均價。計算與交易時段 VWAP 完全相同;只有起點不同。圖表與文章會用 eVWAP、錨定 VWAP 與 AVWAP 稱呼同一條線。

ES 期貨最適合哪個錨點?

沒有單一最佳的錨點;只有回測能放置的錨點,與回測無法放置的錨點。交易時段開盤、以固定 K 棒數定義的波段高點或低點、轉倉或到期日,以及排定的公布,程式都能從資料中找出。用同一條規則、同樣的成本測試每一個,保留樣本外仍站得住腳的那一個,而不是在你自己選定的圖表上看起來最好的那一個。

VWAP 在日 K 棒上有效嗎?

只要 K 棒帶有成交量,就能計算。在日 K 棒上,每根 K 棒的成交量是整天的成交,這條線從錨點一路跨日延伸,所以它的表現像一條長期、以成交量加權的平均,而不是日內參考線。本文的 ES 測試因此使用日 K 棒:結果描述的是一條緩慢、幾乎一直持倉的規則,而不是日內 VWAP 策略。

回測 VWAP 策略需要逐筆資料嗎?

不需要,只要你的 K 棒帶有可靠的成交量欄位,而且規則讀的是 K 棒收盤。只有在規則要對 K 棒內的觸及做出反應,或你希望 VWAP 隨每一筆成交更新時,逐筆資料才重要。在採信 K 棒成交量之前,把一天的 K 棒成交量加總,與交易所公布的該合約該日成交量比對。

VWAP 規則可以匯出到我的交易平台嗎?

寫成 K 棒收盤條件的 VWAP 規則,可以匯出為策略原始碼,到平台匯出頁面所列的平台。匯出之後,用同樣的資料執行平台自己的回測,並把交易明細與研究報告比對,因為平台的成交量欄位與交易時段設定,可能與研究時使用的不同。

參考文獻

  • Bailey, D. H., Borwein, J., López de Prado, M., & Zhu, Q. J. (2014). Pseudo-Mathematics and Financial Charlatanism: The Effects of Backtest Overfitting on Out-of-Sample Performance. Notices of the American Mathematical Society, 61(5), 458–471.
  • Bailey, D. H., Borwein, J., López de Prado, M., & Zhu, Q. J. (2017). The Probability of Backtest Overfitting. Journal of Computational Finance, 20(4), 39–69.
  • Harvey, C. R., & Liu, Y. (2015). Backtesting. The Journal of Portfolio Management, 42(1), 13–28.