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