1. 摘要
這個單元我們可以了解自動交易回測功能的全面優化,包括增加多元回測因子:如獲利因子、平均獲利虧損比等,用以檢驗策略的穩健性,並提供買進持有(Buy&Hold)報酬率與大盤指數報酬率的對照,方便短線及主動投資者比較績效表現。 此外,將總報酬率改為「最大投入報酬率」,提升策略績效的易讀性,同時允許我們切換為時間加權報酬率以滿足多樣需求。系統也改進了回測報表的可視化,增加放大功能與淨利曲線顯示,強化進出場點與盈虧績效的清晰度,進一步提高我們對回測策略的理解與效率。2. 回測參數設定
- 回測在跑當沖策略時,往往在當日收盤前的清倉條件不好撰寫,故我們在自動交易回測增加「每日部位歸零」功能選項,方便當沖用戶使用此功能,輕鬆達到當日收盤前的清倉設定,無須在腳本撰寫語法判斷。
- 自動交易回測以「預先執行筆數」是在開始回測日期前先跑預先執行筆數的資料運算(與策略雷達回測中的「資料讀取筆數」相同)。
- 在跑自動交易回測的過程中,條件通過在回測期間模擬成交會依照腳本撰寫的價格送模擬委託單,並在下一個回測洗價看是否會成交,若沒有特別撰寫,則會依照自動交易策略介面上的預設買進/賣出的價格設定送模擬委託單。
- 初始資金參數說明:「初始資金」參數供用戶填寫,可將投入的本金納入自動交易策略回測運算,並在自動交易回測報告呈現更多的數據,在下列的數據使用到百分比(%)呈現的都是有用到初始資金參數來運算,相關介紹可以參考「自動交易回測項目說明」。
- 「觸發即判斷成交」說明:決定跑回測當下觸發條件的價格,是否要立即判斷成交。例如以下範例說明:交易回測跑 5 分鐘模擬逐筆洗價,日期是 2021/09/14 商品是永光(1711.TW) 腳本語法為 if position = 0 then setposition(1, Market);
- 關閉此項
- 在九點整這根5分鐘K棒,第一筆模擬逐筆 Tick 跑 if position = 0 then setposition(1, Market); 這段語法時,會在第一筆之後送出「價格=市價/量=1」買進委託,之後會在第二筆以「價格=23.15」成交。
- 開啟此項
- 在九點整這根5分鐘K棒,第一筆模擬逐筆 Tick 跑 if position = 0 then setpostion(1, Market); 這段語法時,會送出委託並且以「價格=23.00」立即成交。
- 關閉此項
3. 回測報告
- 自動交易回測數據共有 26 個項目,除了運用初始資金來計算出更多的策略因子外,我們也有加上「最大投入報酬率」、「買進持有報酬率」與「大盤指數報酬率」
- 最大投入報酬率,是淨利/最大投入金額,因為初始資金是由用戶自行設定,但我們在回測時並不會考慮觸發時資金是否足夠可以交易,在評估策略上可能會失真。所以提供最大投入金額及報酬率,讓客戶了解真的執行這個策略會需要多少資金及其真實的報酬率。同時,報酬率曲線圖也是以最大投入報酬率繪製。
- 買進持有報酬率(Buy & Hold)是比較策略績效的方式之一,讓短進短出的用戶,方便去比較長期持有報酬績效。例如,商品是06/01進場,07/31出場,但回測區間是 05/01 ~ 08/15,則買進報酬率是 05/01 ~ 08/15 所運算出來的數值。
- 大盤指數報酬,也是比較策略績效的方式之一,讓主動型投資的用戶,方便比較大盤績效。
- 自動交易回測的策略,因為可以在語法上呈現翻單的撰寫,所以在自動交易回測報告上,有加上全部、做多與作空,切換三種操作方向的回測數據呈現,以便讓使用者了解操作方向的績效表現。
- 自動交易回測報告新增了最大投入報酬率、時間加權報酬率與淨利曲線圖,並且在這三個曲線圖上標上創新高的藍點標記,以及增加最大區間虧損副圖,除了讓大家方便查看最大區間虧損數值外,也能從淨利曲線圖上了解創新高的點位在何處,強化績效曲線圖的呈現。
- 自動交易回測數據,有百分比與金額呈現兩種方式,可以點選切換呈現,方便大家檢視回測數據。
- 自動交易回測報酬率曲線圖,調整為最大投入報酬率與時間加權報酬率,兩種線圖供大家選擇呈現,而時間加權、買進持有與大盤指數報酬率,都在「+」Icon元件中,用戶可點選該元件疊加上述報酬率至曲線圖績效中對照比較。預設顯示最大投入報酬率來呈現的原因是,大家對於時間加權報酬率較不熟悉,故在自動交易回測改用最大持倉報酬來呈現,希望新用戶可以較好上手,舊用戶若用慣了時間加權報酬呈現,只要點選績效曲線圖上方的「時間加權報酬率」按鈕切換呈現,或者在系統參數調整預設顯示時間加權報酬率曲線即可。 ▼自動交易回測報酬率曲線圖,可選擇疊加效果,其中有最大投入報酬率、買進持有報酬率、時間加權報酬率、大盤指數報酬率...等多樣化比較圖表供選擇
- 自動交易回測新增「每日報表」頁面,方便用戶檢視每日統計的獲利、總獲利、最大投入金額與商品檔數數據,讓我們可以參考歸納出策略的績效在那些特定日子較弱勢,就能夠讓投資者考慮加上濾網,在績效不好的週期減少操作,或者把進場條件調整更嚴格。 ▼每日報表讓我們可以參考歸納出策略的績效在那些特定日子較弱勢,就能夠讓投資者考慮加上濾網,在績效不好的週期減少操作,或者把進場條件調整更嚴格
- 在「系統參數」可以設定自動交易回測報告的顯示預設設定,以利使用者在跑完自動交易回測報告後,直接預設顯示想查看的數值與報酬率曲線圖顯示的格式,就不用跑完後還要再調整格式設定,方便大家使用,目前可以調整的系統參數預設設定如下:
- 自動交易回測報告的表格數值預設顯示設定。
- 自動交易回測報告的報酬率曲線圖預設呈現設定。
- 自動交易回測報告「整體統計」頁面的報酬率曲線圖預設疊加參考指標設定。
3.1. 自動交易回測項目說明
由於自動交易回測報表共 26 個數據,以下將細部介紹 自動交易 回測報表數據的說明。此外自動交易回測報表上有顯示$與%兩種數據,$是以金額來計算,而%都是除以初始資金。 另外,獲利因子、平均獲利虧損比、買進持有報酬、大盤指數報酬,自動交易回測多了這四個策略因子,在評估回測績效表現時,可以更深入了解。- 淨利
- 損益的加總就是淨利,用來判斷回測期間盈虧的數據,在下方也有呈現績效曲線圖,方便用戶審視績效。
- 百分比(%)是除以「初始資金」參數後的數據。
- 毛利
- 獲利的加總就是毛利,也就是回測期間的獲利表現。
- 百分比(%)是除以「初始資金」參數後的數據。
- 毛損
- 虧損的加總就是毛損,也就是回測期間的虧損表現。
- 百分比(%)是除以「初始資金」參數後的數據。
- 獲利因子
- 毛利/ABS(毛損)×SIGN(淨利);ABS為絕對值;SIGN為數值的正負號。
- 僅有獲利、無虧損(分母為0)則獲利因子為「+0」
- 僅有虧損、無獲利(分子為0)則獲利因子為「-0」
- 無交易,則獲利因子為「n/a」
- 也就是總獲利金額/總虧損金額,可以搭配勝率檢視,假設策略勝率很高,每次都賺 1 元,總共賺了 9 次,但是賠 1 次,虧損 10 元,仍無用武之地。
- 一般認為,獲利因子大於 1.5 策略才算堪用。
- 毛利/ABS(毛損)×SIGN(淨利);ABS為絕對值;SIGN為數值的正負號。
- 最大持倉金額
- 也就是回測區間投入市場金額的最大值。
- 總交易成本
- 每筆交易的單筆手續費加總,對於操作短期的投資者而言,交易成本也是評估策略因子之一。
- 百分比(%)是除以「初始資金」參數後的數據。
- 總交易次數
- 交易次數的加總,此數據與策略雷達回測相同。
- 獲利交易次數
- 獲利交易次數的加總,此數據與策略雷達回測相同。
- 虧損交易次數
- 虧損交易次數,此數據與策略雷達回測相同。
- 勝率
- 獲利交易次數/總交易次數,此數據與策略雷達回測相同。
- 平均交易
- 淨利/總交易次數,取代了原本雷達回測的平均報酬率%,改以平均交易來呈現,原因是雷達回測的平均報酬率數據較難理解。
- 百分比(%)是除以「初始資金」參數後的數據。
- 平均獲利交易
- 毛利/獲利交易次數,用來觀察每次獲利交易的平均值。
- 百分比(%)是除以「初始資金」參數後的數據。
- 平均虧損交易
- 虧損/獲利交易次數,用來觀察每次虧損交易的平均值。
- 百分比(%)是除以「初始資金」參數後的數據。
- 平均獲利虧損比
- ABS(平均獲利交易/平均虧損交易);ABS為絕對值。
- 俗稱「賺賠比」交易要獲利的基本原則就是大賺小賠,此項數據可以用來衡量策略本身獲利的能力。
- 最大獲利交易
- 所有獲利金額>0(賺錢)的交易中,獲利金額最大(賺最多)就是最大獲利交易。
- 策略雷達回測為最大獲利率%(單筆),在自動交易回測使用最大獲利交易來表示,原因是較容易解讀。
- 百分比(%)是除以「初始資金」參數後的數據。
- 最大虧損交易
- 所有獲利金額<0(賠錢)的交易中,獲利金額最小(賠最多)就是最大虧損交易。
- 策略雷達回測為最大虧損率%(單筆),在自動交易回測使用最大虧損交易來表示,原因是較容易解讀。
- 百分比(%)是除以「初始資金」參數後的數據。
- 最大區間獲利
- 運用收盤價來計算,列出回測中每一段獲利(淨利>0)區間的累加淨利變化,取最大值。
- 百分比(%)是除以「初始資金」參數後的數據。
- 最大區間虧損
- 運用收盤價來計算,列出回測中每一段虧損(淨利<0)區間的累加淨利變化,取最小值。
- 代表從績效最高點拉回的平倉損益,如果回測區間承受不了最大區間虧損,那後面的獲利如浮雲,因為已被斷頭砍倉。
- 百分比(%)是除以「初始資金」參數後的數據。
- 全部交易的平均持倉K線根數
- 此項數據,用來表述持有部位的平均期間為何,部位與資金需要投入的時間為何。
- 獲利交易的平均持倉K線根數
- 此項數據,用來表述獲利交易持有部位的平均期間為何。
- 虧損交易的平均持倉K線根數
- 此項數據,用來表述虧損交易持有部位的平均期間為何。
- 回測K線根數
- 可以搭配買進持有報酬來觀察,回測K線根數用來評估買進持有報酬的持有期間為何。
- 時間加權報酬率
- 去除資金因素後調整報酬率,可以較好評估進出場的有效性。
- 每一筆(次)交易的當期報酬率在當期所佔用的資金都是一樣的。
- 時間加權報酬$=累計時間加權報酬率×初始資金
- 股票會納入除權息再投資、期貨會去除換月價差影響。
- 最大投入報酬率
- 最大投入報酬率=淨利/最大投入金額;最大投入報酬$=淨利
- 以回測區間內,真實會動用到的最大投入市場資金來計算報酬率。
- 自動交易回測的報酬率主線圖,改以最大投入報酬率來呈現,因為初始資金是由用戶自行設定,但我們在回測時並不會考慮觸發時資金是否可以交易,在評估策略上可能會失真。所以提供最大投入金額及報酬率,讓客戶了解真的執行這個策略會需要多少資金及其真實的報酬率。同時,報酬率曲線圖也是以最大投入報酬率繪製。
- 股票會納入除權息再投資、期貨會去除換月價差影響。
- 買進持有報酬率
- 評估策略、比較績效用。不考慮進出場訊號,單純在回測區間內持有回測商品可獲得的報酬率。例如,商品是06/01進場,07/31出場,但回測區間是 05/01 ~ 0815,則買進報酬率是 05/01 ~ 08/15 所運算出來的數值。
- Buy&Hold 數據方便做短線的投資者對照,衡量短期策略績效表現,如果短期策略績效與買進持有差不多的話,那建議就單純買進持有就好。
- 股票會納入除權息再投資、期貨會去除換月價差影響。
- 大盤指數報酬率
- 評估策略、比較績效用,大盤在回測區間的報酬率,以加權報酬指數(TSETR.TW)計算的買進持有報酬率。
- 方便讓主動型投資者比對績效用,如果主動投資的績效沒有比大盤表現來的穩健,那建議投入ETF的懷抱,主動投資就是要完敗大盤才有感。
- 股票會納入除權息再投資、期貨會去除換月價差影響。
3.2. 自動交易回測報告UI說明
自動交易回測報告畫面,一樣是使用「整體統計」、「商品統計表」、「商品分析」、「交易分析」、「腳本資料」這五個頁面來呈現。除了腳本資料頁面沒有異動外,其他的四個頁面在自動交易回測都有做些微的調整,另外新增了「每日報表」頁面,以下將做細部的介紹。3.2.1. 整體統計
▼「整體統計」頁面說明- 整體統計頁面,在回測報表有新增「全部」、「做多」與「做空」三個切換按鈕以便讓用戶查看各個操作方向的績效表現。自動交易 回測能在一個策略做到翻單的策略,故增加此功能,方便用戶瀏覽各個方向的回測數據。
- 自動交易回測數據,有百分比與金額呈現兩種方式,可以點選切換呈現,方便大家檢視回測數據。
- 由於自動交易回測報表數據多達 26 個,以及最大區間虧損副圖,故增加放大回測報表數據與績效線圖的Tool,以便用戶一覽無遺回測數據與績效線圖。
- 自動交易回測報告新增了最大投入報酬率、時間加權報酬率與淨利曲線圖,並且在這三個曲線圖上標上創新高的藍點標記,以及增加最大區間虧損副圖,除了讓大家方便查看最大區間虧損數值外,也能從淨利曲線圖上了解創新高的點位在何處,強化績效曲線圖的呈現。 ▼自動交易回測報酬率曲線圖,可選擇疊加效果,其中有最大投入報酬率、買進持有報酬率、時間加權報酬率、大盤指數報酬率...等多樣化比較圖表供選擇
- 自動交易回測報酬率曲線圖,調整為最大投入報酬率與時間加權報酬率,兩種線圖供大家選擇呈現,而時間加權、買進持有與大盤指數報酬率,都在「+」Icon元件中,用戶可點選該元件疊加上述報酬率至曲線圖績效中對照比較。預設顯示最大投入報酬率來呈現的原因是,大家對於時間加權報酬率較不熟悉,故在自動交易回測改用最大持倉報酬來呈現,希望新用戶可以較好上手,舊用戶若用慣了時間加權報酬呈現,只要點選績效曲線圖上方的「時間加權報酬率」按鈕切換呈現,或者在系統參數調整預設顯示時間加權報酬率曲線即可。
3.2.2. 每日報表
▼每日報表讓我們可以參考歸納出策略的績效在那些特定日子較弱勢,就能夠讓投資者考慮加上濾網,在績效不好的週期減少操作,或者把進場條件調整更嚴格- 自動交易回測新增「每日報表」頁面,方便用戶檢視每日統計的獲利、總獲利、最大持倉金額與商品檔數數據,供用戶參考歸納出策略的績效在那些特定日子較弱勢,就能夠讓投資者考慮加上濾網,在績效不好的週期減少操作,或者把進場條件調整更嚴格。
3.2.3. 商品統計表
▼商品統計表中有百分比與金額呈現兩種方式,也有「全部」、「做多」與「做空」三個切換按鈕- 在商品統計表中,同樣有新增「全部」、「做多」與「做空」三個切換按鈕以便讓用戶查看各個操作方向的績效表現。
- 在商品統計表中,同樣有百分比與金額呈現兩種方式,可以點選切換呈現,方便大家檢視回測數據。
3.2.4. 商品分析
▼商品分析中有「全部」、「做多」與「做空」、百分比與金額等多元呈現方式- 同樣在商品分析有新增「全部」、「做多」與「做空」三個切換按鈕以便讓用戶查看各個操作方向的績效表現。
- 同樣在商品分析有百分比與金額呈現兩種方式,可以點選切換呈現,方便大家檢視回測數據。
- 同樣在商品分析中,由於自動交易回測報表數據多達 26 個,以及最大區間虧損副圖,故增加放大回測報表數據與績效線圖的Tool,以便用戶一覽無遺回測數據與績效線圖。
- 同樣在商品分析中,自動交易回測報告新增了最大投入報酬率、時間加權報酬率與淨利曲線圖,並且在這三個曲線圖上標上創新高的藍點標記,以及增加最大區間虧損副圖,除了讓大家方便查看最大區間虧損數值外,也能從淨利曲線圖上了解創新高的點位在何處,強化績效曲線圖的呈現。
- 同樣在商品分析中,自動交易回測報酬率曲線圖,調整為最大投入報酬率與時間加權報酬率,兩種線圖供大家選擇呈現,而時間加權、買進持有與大盤指數報酬率,都在「+」Icon元件中,用戶可點選該元件疊加上述報酬率至曲線圖績效中對照比較。預設顯示最大投入報酬率來呈現的原因是,大家對於時間加權報酬率較不熟悉,故在自動交易回測改用最大投入報酬來呈現,希望新用戶可以較好上手,舊用戶若用慣了時間加權報酬呈現,只要點選績效曲線圖上方的「時間加權報酬率」按鈕切換呈現,或者在系統參數調整預設顯示時間加權報酬率曲線即可。
3.2.5. 交易分析
▼每筆交易皆可透過觀察其進出場價格及報酬率,進行後續策略調校 在交易分析頁面中,我們調整了進場與出場的標註圖示,以利讓大家檢閱各筆模擬成交回測的進出場位置,其中「#」編號為對應的交易序號,例如上圖的「#01」是序號 1 的進出場點位,而「#02」是序號 2 的進出場點位,而紅色與綠色數字為進出場的交易數量。由於模擬成交回測有加碼、減碼的交易語法,故在交易分析我們用「#」編號來標註對應的交易序號,就能知悉以下對應的進出場點位資訊:- 「紅框 #01、紅色數字 1」表示交易 1 序號進場買進 1 張。
- 「紅框 #02、紅色數字 1」表示交易 2 序號加碼買進 1 張。
- 「綠框 #01、綠色數字 1」表示交易 1 序號減碼賣出 1 張。
- 「綠框 #02、綠色數字 1」表示交易 2 序號出場賣出 1 張。
3.2.6. 週期分析
▼週期分析的左上角有頻率可以切換,提供 日/月/季/年 四個頻率。使用者也可以切換數值呈現的模式,有金額和百分比。 週期分析的上半部為表格,欄位和整體統計的雷同。 這裡的資訊和原本的回測報告最大的差異在於是用選定的頻率而非各筆交易資訊來運算。 舉例來說,當選擇日頻率時,會以每一日的獲利視為1筆交易作為分析依據。 若選擇月的話,則會以每個月的獲利視為1筆交易作為分析依據。 由於和整體統計使用每筆交易作分析依據不同,故區間分析計算出的數值會和整體統計有所差異。 下半部的部分,則是以柱狀圖呈現獲利的資訊,不同頻率彙整的方式有些差別。 圖型的右上角可以切換平均/總計。 ▼就以此圖為範例,這代表著回測區間中每個月的 31 號平均虧損 -7419 元。 各欄位項目說明- 表格部分
- 圖表部分