顯示具有 交易觀念 標籤的文章。 顯示所有文章
顯示具有 交易觀念 標籤的文章。 顯示所有文章

2025年7月26日 星期六

策略失效的處理流程

 

策略不會永遠有效,失效處理才是交易的日常

這篇文章延續〈如何管理你的交易策略〉的主題,進一步深入討論「策略的監控指標」與「策略失效的處理流程」。

我們在上一篇提到,策略可能會因為種種因素而失效,或是在某段時間內表現不如預期。這其實是常態,而不是異常。真正有經驗的程式交易員都知道:

開發出一套策略,不代表你就此擁有了一台可以自動印鈔票的機器。

很多人對程式交易的想像,是寫好一支程式後就能「躺著賺」,不用再管市場動向。但事實上,策略上線後才是工作真正開始的時候。

任何策略都有它的生命週期,這個生命週期通常包含以下幾個階段:

研發 → 回測 → 模擬 → 實盤 → 監控 → 迭代 / 下架

在這個週期中,策略的設計與開發大概只佔整體工作量的 30%,而監控策略表現、偵測異常、處理失效與調整迭代,才是佔據交易員日常的大宗 —— 約 70% 的心力都必須投注在這上面。

而且,越是運行中的策略、資金部位越大的系統,越需要嚴格的監控與即時應變。

最可怕的狀況就是:你沒有事先設計策略的「健康監控機制」,也沒有明確的「失效處理流程」。這樣一來,一旦策略出現異常,你可能根本來不及反應,等你意識到績效偏離正常情況時,帳戶的淨值早已遭受重創,甚至無法挽回。

所以我們要建立的觀念是:

開發策略固然重要,但設計好一套策略的監控與失效處理機制,其實才是你能否長期生存與穩定獲利的關鍵。

接下來我們會從幾個層面切入,具體探討如何建構策略監控機制、哪些指標可以用來判斷策略是否失效,以及在策略出現異常時,應該怎麼處理與決策。

在開始監控之前,先建立你的交易績效資料庫

當你的策略開始實盤運作之後,策略監控的第一步,不是設定指標、也不是畫績效曲線,而是先建立一套完整的「真實交易資料庫」。

這個資料庫必須能夠客觀、準確地紀錄你每一筆交易的實際執行情況,並能在後續幫助你做各種統計、評估與診斷。這一步是策略管理的根基。


為什麼我選擇自己建立報表,而不是依賴回測軟體?

很多人可能會直接用策略回測軟體來追蹤策略的績效,例如 MultiChart、Backtrader、XQ 全球贏家內建的績效報表。但我不建議只靠這些工具,原因如下:

  1. 回測軟體不會反映真實世界的執行風險:

    • 像是滑價、成交延遲、API 錯誤、系統當機、盤中取消未成等狀況,回測完全不會顯示,但這些卻是真正會吃掉你獲利的原因。

  2. 策略會隨著時間微調,回測報表不再準確:

    • 一旦你對策略參數或邏輯做了小幅修正,舊的回測報表就失去參考價值,這時候你真正可以依賴的,就是你自己紀錄下來的「實盤資料」。


我的實務做法:Excel + 交易日誌報表

我自己是用 Excel 建立一套簡潔但有效的紀錄系統,主要包含以下幾個模組:

1. 交易紀錄主表

  • 每筆交易都要記下:下單時間、標的、方向、價格、成交狀態、預期價格、實際價格、滑價、損益、註解

  • 是否為策略信號?還是人工干預?(註解欄標示)

2. 滑價差異分析表

  • 比對預期價格與實際成交價格

  • 統計每一種情境(時段、商品、策略類別)的平均滑價與標準差

  • 如果滑價異常擴大,立刻提出警訊

3. 錯帳與異常統計表

  • 紀錄例如:未成交、斷線、重複下單、成交價格超出滑價容忍區間等狀況

  • 標記問題出在哪個環節(券商、API、策略邏輯、網路)

這些報表的建立,讓我能在回測結果與實際交易之間建立一座橋梁,也能在市場狀況或執行層面出問題時,第一時間掌握狀況。


接下來:從交易紀錄中建立監控指標

當你有了乾淨、結構化的實盤資料後,接下來就可以根據這些資料建立策略監控指標。這些指標可以量化出策略是否仍在健康區間內,或已經出現「異常偏離」。

以下是我(結合 ChatGPT 提供的建議)整理的四大監控模組:

模組工具 / 方法告警範例
績效監控CUSUM、EWMA z-score累積偏差突破 3 σ(績效偏離正常表現)
行為漂移監控KS Test、P-value Tracker特徵分布顯著變動,模型不再適應市場
交易成本監控滑價追蹤、理論 vs 實際交易成本滑價 > 回測均值 + 2 σ
風控閾值監控即時 VaR / Expected Shortfall超標時自動減倉或發出警訊

這些模組的好處是可以讓你用數據、用統計的方法來回答一個關鍵問題:

「我的策略,現在還健康嗎?」


小結

策略監控並不是一個「事後才做的事情」,它從你策略上線的第一天就必須開始準備,而完整而精確的交易資料庫,就是策略監控的基礎建設。

只要你把這個基礎打穩了,後續不論是要設定停用條件、分析失效原因、還是設計再優化流程,都有可靠的依據可循。

策略上線後,我是如何追蹤、調整與管理?

當我們建立起完整的實盤績效監控系統之後,策略就不再是黑箱操作,而是能被持續觀察與評估的活體系統。從這個時候起,你可以進入到「長期監控與策略管理」的階段。

我的原則很簡單:

只要策略的績效沒有明顯偏離預期太多,我通常會讓它持續執行至少半年以上,然後再定期做檢視與盤點。


一、第一層檢查:執行層面是否穩定?

策略失效有時候並不是「策略邏輯錯了」,而是因為執行面出了問題。例如:

  • 進場點或停損點設計得太接近市場極端位置,例如當日高點/低點,導致成交時剛好遇到「快市」行情,產生巨額滑價。

  • 報價更新延遲或 API 資料斷線,造成成交價偏離策略預期。

  • 語法或邏輯錯誤導致幽靈單出現(例如重複下單、撤單失敗、錯誤的價格觸發條件等)。

這些我都親身經歷過,也學到一個教訓:

不要急著調策略的核心邏輯,先確保執行是乾淨、穩定、可驗證的。


二、第二層檢查:市場結構是否出現重大變化?

除了執行面,另一個重要的檢查點是:市場的基本結構有沒有發生改變?

以台灣期貨市場為例,過去幾年曾經出現過以下改變:

  • 大幅調降期交稅,提升整體交易量與流動性

  • 各大券商為搶市佔率大降手續費

  • 新商品推出:如周選擇權、股票期貨、微型期指、週五到期的台指選擇權等

  • 制度性調整:如取消保證金最佳化、交易時間延長

這些變化都可能影響原本策略的有效性,尤其是那些依賴成交量、波動率或開盤機制的短線策略。當市場的規則改變,你的策略可能也要跟著進化。


三、第三層評估:策略表現是否明顯落後其他策略?

我的方式是將所有策略一起放進一張「績效比較表」裡,然後長期觀察:

  • 若某個策略在所有策略中連續兩年績效墊底,我通常會將它直接下架。

  • 我不會執著於修改它,因為:「能修復的策略早就修了,修不動的策略就該讓它退休。」

這樣的做法也讓我可以保持系統的簡潔與效率,而不是積了一堆「我曾經有信仰」的殭屍策略。


四、策略汰舊換新:持續開發與補位機制

為了維持整體交易系統的活力與適應性,我會固定每年開發 1 到 2 套新策略,即使現有策略都還在跑,也會當作「儲備部隊」。

這些新策略的用途有兩個:

  1. 一旦現有策略下架,可立即補位

  2. 若市場條件改變,也可以快速調整策略組合配置

這就像球隊需要養新秀,即使老將還能打,但你得提前準備下一輪的先發名單。


五、那麼,到底「多久沒賺錢就算失效」?

這是最多人問的問題之一,但我必須誠實地說:

這個問題,沒有簡單、標準、放諸四海皆準的答案。

為什麼?因為交易是一門動態的、不確定的決策過程。程式交易雖然讓我們能用邏輯與紀律來約束操作,但並不代表所有事情都有絕對的量化門檻可以照表操課。

  • 有些策略遇到盤整期可能一年都不賺錢,但仍具備長期獲利能力

  • 有些策略明顯已與市場脫節,即使短期內有小利,也應該停用

最終還是要回到你對策略的理解、對市場的掌握,以及你是否有建立科學而穩健的監控與判斷機制。


小結

策略管理的精髓,不在於每一筆交易都賺錢,而是:

  • 在失效來臨時,你是否能及時發現

  • 在環境變化時,你是否能有條理應對

  • 在策略退場時,你是否有備胎可以上陣

交易從來不是完全自動化的機器工作,程式交易的真正價值是讓我們用更客觀的方式來輔助判斷,而不是替代判斷本身。

這也正是程式交易這項工作最具挑戰,也最迷人的地方。

文章經 AI 編輯整理



2025年7月9日 星期三

如何管理你的交易策略?

上次寫了《程式交易入門指南》之後,有些讀者私訊詢問我:

  • 「策略失效的標準到底是什麼?」

  • 「為何過去有效的策略現在無法獲利?」

這其實都是非常重要的問題。因為絕大多數的交易策略,在正式上線後的真實績效,往往與回測績效存在極大的落差。即便策略上線後一開始能夠獲利,也很有可能在某段時間後表現開始變差,你會懷疑它是不是已經「失效」了。

當你遇到這種情況,到底應該如何處理?

  • 是該有紀律地繼續執行?

  • 還是應該果斷將策略下架?

  • 若要下架,停止使用策略的標準應該如何設定?

這些問題,是每位程式交易員都必須面對並解決的重要難題。

在進一步討論這些議題前,我們應該先思考一下:

「為什麼策略會失效?」

以下是我根據多年實務經驗整理出來的常見原因:


一、策略失效的六個常見原因

1. 最常見原因:過度擬合(Overfitting)

過度擬合是大多數策略開發者容易犯的錯誤,通常是因為:

  • 回測樣本不足:導致你的策略只適合特定歷史區間。

  • 參數過多,自由度過高:使策略的調整空間太大,更容易對歷史行情過度擬合。

以簡單的例子來說:
如果你的策略只用一條均線當作進場標準,這個策略的自由度是「1」。若你再加入另一條均線進行輔助判斷,自由度就變成了「2」。
一般來說,自由度越高的策略,回測績效越容易漂亮,但真實表現反而更容易失效。


2. 交易成本設定過低

尤其是短線或當沖交易策略,你回測時可能低估了滑價或手續費成本。回測看起來獲利極佳,但實盤交易後卻非常慘烈。

解決這個問題的方法就是:

  • 策略上線後,一定要追蹤真實的交易成本與滑價。

  • 每日或每週監控平均滑價,確保回測成本與真實交易環境相符。

交易成本和滑價的數據,是我每天看交易報表時最關注的指標之一。


3. 市場流動性不足或策略被跟單

另一個原因可能是:

  • 市場流動性不足:你的部位過大導致實際滑價太嚴重。

  • 策略被複製或跟單:尤其是市場上類似策略太多,大家同時搶著下單時容易造成「擠兌」現象。

這一點我有切身之痛:
早期我還是透過營業員人工下單時,我因為績效不錯,許多人偷偷跟單,導致市場提前反應,造成我下單時劇烈滑價,曾經出現滑價 30 點以上的情況。後來我花了不少心力才發現問題原因。


4. 被市場大戶反套利(Stop-hunting)

有時候市場上大戶或法人,會透過觀察市場一般散戶的慣用進出場點、停損價位,特意用大單推動價格觸擊這些位置,造成短暫的快速波動(俗稱「快市」),然後迅速反向平倉獲利。

這種情況在圖表上常見為短暫的「假突破」。許多短線策略,尤其容易被這種反套利行為重傷。


5. 市場結構的重大改變(Regime Shift)

市場並非恆常不變,而是時常受到各種結構性因素影響,例如:

  • 法規或稅率的調整(如期交稅大幅調降或提高)

  • 市場流動性改變

  • 微觀市場結構(如取消保證金最佳化)

  • 交易規則變動或交易參與者組成改變

這些因素都可能導致你策略原本的交易邏輯和績效突然失去效果。


6. 訊號來源衰退(Signal Decay)

策略有效性通常建立在某些市場條件或訊號來源之上。當這些訊號逐漸消失或變得不明顯,策略自然會失效。

以我的經驗為例:
2004 下半年到 2007 上半年,整整三年,台灣大盤的波動率非常低,常常一天的高低差只有不到 50 點,一整年高低點差不到 2000 點,當沖策略根本無法發揮作用,這段期間我經歷了非常艱難的時期,幾乎無法獲利。


二、策略失效後,該如何處理?

當你理解了策略失效的原因之後,下一步就是要考慮:

  • 應該如何定義策略的停用條件?

  • 策略失效後該如何調整?

這個主題我會在下一篇文章詳細展開,但基本原則是:

  1. 設定明確的績效評估標準與停損條件(如 Sharpe ratio 或最大回撤)。

  2. 定期檢查策略績效,偵測異常表現。

  3. 策略失效時,迅速執行「停用」或「再優化」程序,以避免不必要的資金損失。


三、小結:成功策略管理的核心思維

策略不會永久有效,因此「管理」你的策略比「設計」策略更重要。
透過有效的事前規劃、事中監控與事後檢討調整,才是真正能讓你的交易系統長久獲利的關鍵。

我下一篇文章會進一步討論「策略的監控指標」與「策略失效的處理流程」,請持續關注!


文章經 AI 編輯整理

2025年6月10日 星期二

程式交易入門指南:從觀念建立到策略開發

程式交易入門指南:從觀念建立到策略開發

最近兒子問我能不能寫一篇從入門到進階的程式交易文章。我想了一下,程式交易的進階內容實在太廣,從統計模型、機器學習、風控架構到執行效率優化等等,我過去也寫過不少相關的進階文章。如果你對那些主題有興趣,歡迎翻閱我的其他分享。不過今天,我想從最基本的角度出發,寫給那些「有投資經驗,但從未寫過程式交易」的朋友們,希望你能找到一個進入量化交易世界的切入口。


程式交易 ≠ 自動下單

我們一提到「程式交易」,多數人的第一個反應是:「喔,就是寫程式讓電腦自動幫你下單嘛!」

這個想法並不錯,但有點太過表面。

其實,用電腦程式自動下單只是整個流程中的最後一步而已,而且現在大多數券商都已經提供標準的 API 介面(像是 REST、WebSocket、FIX Protocol 等),要實作出一個自動下單功能,從技術上並不算太困難。寫個幾十行 Python,就可以做到基本下單動作。

但,程式交易的核心絕對不是「會不會自動下單」,而是:「你要讓電腦照著什麼邏輯來下單?」這才是最難、也最重要的部分。


核心在於「決策模型」——也就是量化交易

換句話說,程式交易的真正價值,在於你能不能建立出一套可量化、可驗證、可執行的交易決策模型。這就是所謂的「量化交易」(Quantitative Trading)。

什麼叫「量化」?就是你不能憑感覺說「今天看起來台積電很強,我來追一下」,也不是靠什麼神秘技術指標說「K 線長這樣應該會漲」。這些都太主觀。

量化的意思是:你要定義一個清楚的規則,例如:

  • 當 5 日均線穿越 20 日均線時買進

  • RSI 小於 30 時進場,突破 50 時出場

  • 或是過去 3 年股價年化報酬大於 15%,本益比小於 10 的個股進入觀察名單

這些規則不是靠「靈感」想出來,而是根據你對市場的理解、回測結果與風險報酬評估慢慢調整出來的。


量化交易的優點:讓決策可以複製、測試、優化

人腦做決策有一個問題,就是容易受情緒影響、記憶模糊、不一致。你昨天認為應該停損,今天卻可能因為新聞影響改變想法。而有關人性上的偏見是如何影響決策行為這部分,我建議去閱讀行為經濟學的書,裡面會提到許多人類在金融決策中容易犯的錯誤有哪些。

而電腦不會受到這些影響。只要你的策略寫得清楚,它就可以:

  • 準確執行每一筆交易邏輯

  • 讓你用歷史資料測試策略表現(稱為回測)

  • 根據績效評估是否值得投入資金

  • 做好風險控管,設定停損、部位大小

當策略建立完成並驗證有效後,自動下單只是讓這個模型「上線執行」而已。核心始終是策略邏輯,而不是自動下單本身。


建立模型之前,先談談如何選擇工具

在開始建立你的第一個量化模型之前,有一個主題我認為非常值得先聊聊 —— 選擇工具。

現在的工具選擇真的非常多,不論是寫程式、做回測、連接交易所 API,幾乎都有現成框架可以用,甚至很多平台直接提供圖形化介面,不用寫太多程式碼也能執行策略。但事情在我剛開始接觸程式交易的時候並不是這樣。

那個時候,可用的工具非常有限。最實用、最容易上手的工具其實就是 Excel。你可以用它來計算技術指標、做簡單回測、甚至透過 VBA 做些自動化的工作。雖然功能有限,但對於剛開始摸索的人來說,已經是很不錯的起點。

後來我開始使用 TS2000i(TradeStation 2000i),這是一套針對期貨交易設計的本地端策略執行平台。在當時,它算是相當強大的工具,可以幫你把策略轉成 EasyLanguage 來跑回測和即時訊號。對期貨交易特別有幫助,因為它可以穩定處理 Tick 資料與即時行情反應。

再後來,TradeStation 轉型為券商,主力就不再放在開發交易工具上。原來開發團隊中的一部分人出走,成立了另一家公司,推出了一套非常相似但更靈活的工具 —— MultiChart。這套軟體可以說是承襲了 TS2000i 的優點,同時開放更多元的資料來源與下單接口,因此在後來一段時間內,成為 期貨程式交易的主流工具之一。

如果你是以股票交易為主,那麼也有其他選擇。例如:

  • XQ全球贏家:介面友善,支援台股回測,適合不熟程式語言的投資人。

  • FinLab(AI量化投資平台):以 Python 為主,介面現代,對新手友好,也有一些內建策略模組可以直接套用。


工具的選擇沒有標準答案

選擇什麼工具,最重要的是取決於幾個因素:

  1. 你要交易的標的:

    • 股票還是期貨?

    • 台股還是美股?

    • 有無即時資料需求?

  2. 你的技術背景:

    • 熟不熟 Python、EasyLanguage 或是 C#?

    • 喜歡圖形化介面還是喜歡自己寫程式?

  3. 你希望做的事情:

    • 只是做歷史回測?

    • 還是要即時下單?

    • 需要接券商 API 嗎?

現在因為 AI 協助越來越普及,像 ChatGPT、Copilot 等工具已經可以協助寫出大部分的程式碼樣板,讓程式交易的技術門檻比以前低很多。你不需要是資工背景,也能靠 AI 幫你把策略邏輯轉成可執行的程式碼。

但我要強調一點:寫程式變得容易,不代表交易會變得簡單。

最終的難題還是會回到本質:
你設計的策略邏輯,能不能穩定、長期地獲利?

這才是程式交易的核心。再多的工具、再漂亮的界面,最後都要靠你能否建立一套真正有優勢的交易系統。


技術指標陷阱:你是在看後照鏡開車嗎?

當我們談到策略開發的時候,一般人最直覺的做法,往往是從技術分析指標下手。這也不奇怪,畢竟你翻開任何一本投資書籍或交易軟體,大概都離不開那些熟悉的名稱:均線交叉、KD 指標、MACD、RSI 等等。

這些指標看起來非常科學、邏輯嚴謹,而且用來產生交易訊號也很方便,所以許多程式交易初學者會自然地開始試著「拼裝指標」,組合出各種策略。但我要提醒你:這樣做,很容易掉入程式交易最常見、也最危險的陷阱之一:

你其實只是在拿過去來預測未來。

這句話可能聽起來沒什麼,但我想用一個比喻來幫助你理解它的荒謬性:

你開車的時候,是往前看路開,還是一直看著後照鏡來判斷怎麼前進?

大多數技術指標,其實就是對過去價格的某種平滑、濾波或數學變形。它們本質上並不具備預測未來的能力,只是把「已經發生的事」用另一種方式呈現而已。例如:

  • 均線是過去 N 天收盤價的平均

  • KD 是過去一段時間的高低價區間的相對位置

  • MACD 是兩條移動平均線的差異

所以你用這些指標去開發策略,其實就像是看著「後照鏡」來嘗試預測「前方路況」:看起來有依據,但風險極高。


回測的假象:報表好看 ≠ 策略有效

這類策略在回測資料上通常可以得到非常漂亮的報表,原因也不難理解 —— 你可以「調整參數」來讓它剛好吻合過去的行情變化。想讓績效曲線漂亮?只要:

  • 把移動平均的長短期天數稍微微調

  • 設個聽起來合理的進出場條件

  • 加幾個篩選條件,像是量能、震盪區間

這些微調,都可以讓你回測績效看起來更完美。

但這就像是在訓練模型記憶「考古題」,而不是讓它學會解題邏輯。一旦你把這個策略放到回測範圍以外的資料(Out-of-sample),你就會發現績效大幅下滑,有時甚至是災難性地失敗。因為這個策略本身根本沒有真實的「市場優勢」,只是剛好能夠描述過去資料的一種統計模式。


小結:你需要的是「優勢」,不是「樣板」

一個真正穩定且能長期運作的量化策略,不應該只是過去數據的擬合器(curve fitter),而應該是建立在某種可持續的市場行為或結構之上。這個行為可能來自於:

  • 市場參與者的非理性行為(行為金融)

  • 結構性的套利機會

  • 資金流向、產業週期、基本面因素

  • 或者某些資產之間的長期相關性與配對關係

這才是真正需要你去觀察、研究與驗證的地方。而不只是用技術指標去湊一個漂亮的報表。

如何開發一個有優勢的量化策略?——三個我常用的技巧分享

許多人在剛接觸量化交易時,會花大量時間去調整技術指標的參數,或是不斷「拼裝」指標邏輯來產生交易訊號。但如同我前面所說,這樣做很容易掉入過度擬合的陷阱,策略可能在回測資料上看起來表現亮眼,但在實際市場上卻無法複製表現。

那麼,要如何開發出一套真正有**優勢(edge)**的策略呢?以下是我自己在實務中常用的幾個技巧與觀察:


1. 引入價格以外的資料:從盤後數據挖掘市場行為

很多人策略設計的資料來源只看「價格」與「成交量」,但我認為價格只是市場的表象,真正能提供策略優勢的訊號,往往藏在價格背後的結構性資訊。

我很早以前就開始寫爬蟲,去期交所和證交所的網站每天抓盤後公布的數據,這包括:

  • 期貨前五大特定法人買賣資料

  • 外資的期貨與選擇權留倉部位

  • 選擇權買賣權未平倉變化

  • 自營商與投信的淨部位變化

這些資料每天公布,可能不是即時,但卻蘊含著許多機構操作行為的線索。我會把這些資料整理成時間序列,然後去對比它們與大盤報酬、波動率、隔日開盤缺口等變數之間的關聯性。

舉例來說:

  • 當外資期貨多單連續增加超過三日,大盤隔日上漲機率是否明顯偏高?

  • 當自營商大舉布局選擇權賣權,是否代表風險偏好轉強?

這些都是可以量化的「非價格因子」,若你能從中找出穩定的行為模式,對策略設計就可能是一個真正有預測性的優勢來源。


2. 時間與結構性的統計偏差:掌握「市場的節奏」

另一個我很常做的事情是:針對時間維度做統計,觀察市場在不同時間點的表現是否存在規律性的偏差。

舉幾個我實際觀察並利用的例子:

  • 星期一與星期三的波動比較大:
    星期一常反映週末的消息與國際變化;星期三是選擇權結算日,常出現策略調整與拉抬壓低的現象。

  • 每月固定幾日的市場行為異常:
    像是每月 5 號、15 號、月底前幾天,可能與定期定額資金、基金換倉或績效作帳有關。

  • 每天高低點的出現時間有偏態:
    我統計發現,高達 80% 以上的當日的高點或低點會出現在開盤後一小時或收盤前一小時,中段盤往往是震盪區。這樣的資訊對於開發短線策略(如開盤突破、收盤回測)非常實用。

這類時間統計的重點在於:你不是去預測價格的「方向」,而是找出市場「行為模式」的不均勻性。只要這種偏差穩定出現,你就有機會設計出能利用它的策略。


3. 市場不是隨機的:價格分布的厚尾與非正態特性

最後,我想談一個被很多初學者忽略、但我認為極其關鍵的觀念:市場波動不是隨機漫步(Random Walk),價格分布也不是鐘形分布。

如果市場真的像教科書上說的那樣完全隨機,那麼價格報酬的分布應該是標準常態分布(Bell Curve),多數波動集中在均值附近,極端事件非常罕見。

但事實上,你只要把市場的歷史報酬拿來畫個直方圖,就會發現:

  • 分布呈現厚尾現象(Fat Tail)

  • 有明顯的偏態(Skewness)

  • 極端行情發生的機率遠高於正態預期

這意味著什麼?意味著市場其實有其內在結構性與行為偏差,不是完全隨機的。如果你能針對這些非正態特性設計策略,例如:

  • 利用波動率異常加權資金部位

  • 建立極端風險事件的對沖模型

  • 結合動態風控來避免尾部風險

那麼你就比那些假設市場「正態穩定」的策略,更接近真實世界,也更有機會長期存活。


小結:從觀察現象,到建立可驗證的邏輯

策略的優勢來自於對市場行為的深度理解,而不是靠指標拼裝或參數調整。
我建議每一位想走向量化交易的朋友,不妨從以下三個方向入手:

  1. 資料面:引進價格以外的變數

  2. 統計面:找出時間或結構性的偏差

  3. 分布面:理解市場的真實波動特性

當你從這些現象中找到穩定的規律,再用程式把它們具體化為「可以執行、可以測試、可以控風險」的策略模型,那才是你真正開始建立屬於自己優勢的起點。

文章經 AI 編輯整理(ChatGPT 協助潤飾)


2024年7月13日 星期六

你賺錢究竟是因為實力,還是純粹運氣?

 當前股市的急劇上漲讓不少人紛紛在網路上炫耀自己的對帳單。然而,你賺錢究竟是因為實力,還是純粹運氣?

如果你在今年未使用槓桿的情況下,績效遠超大盤,那麼恭喜你,你可能真的是那位萬中選一的人。然而,大多數人在股市中最常犯的錯誤就是過於自信,認為自己選擇的股票會跑贏大盤。事實上,除了少數人之外,大多數人賺錢只是因為股市處於多頭行情,恰好買進了短期內表現強勢的股票。但是,如果你將自己股票帳戶的長期績效與大盤比較,很少有人能夠跑贏大盤,甚至還有不少人最終會虧損。

以美國市場為例,研究顯示,從2001年到2020年,只有約10%的基金經理人能夠長期跑贏標普500指數。此外,根據Morningstar的數據,2019年只有23%的主動型基金經理在5年內跑贏大盤。這些數據表明,即使是專業的投資經理,在長期投資中超越大盤也並非易事。

此外,根據國立中央大學的研究「個別投資人日內交易損益:臺灣期貨市場實證分析」顯示,台灣期貨市場中日內交易佔總交易量的53%,其中68%由個別投資人完成。然而,僅有約8%的個別投資人能通過日內交易獲利,且這些獲利的交易者佔所有日內交易量的60%。這意味著大多數短線交易者最終是虧損的​ (Grafiati)​​ (NTU Global MBA)​。

因此,如果你真的想從股市中賺錢,就不能將它視為一個短線進出賺差價的場所,那樣的行為無異於賭博。只有極少數的人能在賭場中長期獲利,因為那是一個負和遊戲,券商和政府不斷從賭桌上獲利,長期下來,正期望值不夠大的玩家幾乎都會賠錢。

比較正確有效的做法是將股市視為累積金融資產的地方,最大化地將你的可動用現金通過股市轉化為長期配置的金融資產。根據Vanguard的研究,資產配置是決定投資組合績效的最重要因素,佔比超過90%。從資產配置的角度去思考,不要過於在意股市短線價格的波動,這樣你的資產才能穩定增長。

2018年1月6日 星期六

被動與主動

已經很久沒有發什麼新的文章,主要的原因是沒有什麼新的觀念與新想法,俗話說老狗玩不出新把戲,對我而言要從市場上面賺錢,其實就只是那些觀念和道理而已,端看個人如何去實作而已,不過去年開始有了一些新的觀念和想法,開始改變我對交易的看法與做法,也確定了我今年2018的目標與方向是什麼。所以也以此文章做為記錄,將來可以驗證我現在的觀點是否正確。

在傳統的交易觀念中,我們做的往往是主動的交易,我所說的主動的交易,就是我們不管是利用技術分析或交易策略或是程式交易,我們試圖選擇一個最佳或是最有利的進場的時機點和出場的時機點,希望透過進出場時機的選擇,參與對我們有利的那段價格的波動,取得其中的獲利,也透過交易條件或是濾網的選擇,避開對我們不利的行情,例如盤整的行情,所以也稱為擇時交易。雖然這不是不可能,不過對大多數的人而言,這是一個很堅難的任務,就算是對我這樣已經有超過17年的專職交易人,我也覺得這不是一件簡單的事,只有很少數的人真的可以只靠交易的獲利為生。所以才會看到那麼多想靠教學或是代操或是收會員的老師,說實話教學真的比交易好賺多了。至少學生不會叫你退費,但是市場常常要你過去的獲利還給它。

被動交易的觀念和主動交易相反,使用被動交易的人認為選擇正確的進出場時機是不可能的或是非常困難的,所以被動交易並不選擇或決定進出場的時機,任何時候你都可以進場,你也一直留在市場中,無論什麼情況你都持有部位,所以重點是在你持有什麼樣的部位,還有你怎麼管理你的風險。這樣的觀念最近有人像是綠角在大力推廣的指數投資就是一例,但是指數投資只是屬於被動投資的一種,我個人的看法是只要你可以找到長期看漲或是長期看跌的投資商品,長期持有該商品從中獲利,都是可以屬於被動投資的一種。舉例來說,去年台指最佳交易策略是無腦多,你只要抱著不要動,到年底的獲利肯定大於很多在那裏進進出出的交易員。

那被動投資的優點是什麼,為何我想要從主動投資轉型成為被動投資呢?被動投資最大的好處就是很輕鬆很自由,因為你不是擇時交易,盤中你不需要看盤你也不需要做任何的交易動作,所以你很自由,另外一個好處是因為不是擇時交易,你不需要在指定的時間或價位建立你的部位,所以你一開始要建立部位的時候可以分批慢慢進場,所以你可以建立更大的部位,不需要太擔心流動性的問題,這對資金大的人是很重要的,這兩個優點對我而言是很重要的,我想要把我的交易收入從主動收入轉換成被動收入,也把我的時間空出來。

當然我也沒有說被動交易是很簡單的一件事,想要從市場獲利從來不是一件簡單的事情,都是要花一些時間和精力才有可能達成,但是相對擇時交易而言,被動交易算是相對簡單的一件事。

附圖是我的一個很簡單的被動交易的回測,它的績效可能優於很多很複雜的系統,而且你不需要擔心它會上線之後失效,因為它什麼參數都沒有用,它只是很簡單的Buy and Hold。程式碼只是很簡單的

input: Nums( 1 ) ;
buy Nums contracts this bar close;
if LastBarOnChart then sell this bar close ;

最後一行只是為了回測可以跑出結果寫的,實際上是不需要的。




2014年11月7日 星期五

加碼分批進場與攤平

加碼是屬於分批進場的一種方法,一般所說的加碼是指在母單有獲利的情況下,持續的增加同方向的部位。這個方法適合在趨勢盤裏分批建立比平常大的部位,它的目的是要擴大你的獲利。屬於順勢攻擊型態的一種操作手法。也有人用獲利加碼這個說法。

分批進場一般因為你要進場的部位太大,你不想因為這樣衝擊市場的價格,影響你的建倉的成本,所以把要進場的部位分開下單,通常會指定一個交易區間,在這個交易區間內分批建立你的部位。外資或法人因為資金大,所以常常需要用這樣的方法,這個方法適合用在盤整盤中,它的目的是要隱匿你的下單意圖,在最好的成本建立你的部位。

另外攤平也是一種分批進場的方法,攤平是指在母單虧損的情況下,增加更多的部位,這個的方法可以降低自已的平均成本,屬於一種逆勢的操作手法。

有人常說不要攤平,對一般的新手來說這是很好的建議,但是對我來說這是不對的,事實上我經常在使用攤平這個方法,這三個方法都各自有優缺點與使用的時機,弄清楚這三種方法的特性與使用時機,就可以靈活運用在你的交易上面。

2014年6月21日 星期六

談portfolio managerment

這兩年從證所稅的事件之後,台指的波動一天比一天小,原來可以獲利的策略,很多也開始失效了,這也讓許多人開始思考如何從台指轉戰海外期貨,原本實單記錄除了國內的單子之外,現在也開始出現不少國外的交易記錄單。

交易國內的市場和國外的市場最大的不同就是市場的選擇變多了,原本過去沒有人在注意的文章,現在也被人翻出來研究,有網友問到portfolio managerment到底是什麼?我簡單的解釋一下,因為國外有很多流動性不錯可以交易的市場,如何選出適合你的策略的市場,這就是portfolio managerment要解決的問題,所以像是股票的選股條件,這就是一種portfolio managerment。

在期貨的交易策略中,我們往往會放置一些濾網,過濾一些容易失敗的訊號,如果你把這個濾網拿來過濾所有的市場,先找出符合條件的市場,這就是一種 portfolio managerment,例如很多人喜歡使用ADX來當濾網,如果你使用ADX當濾網,找出ADX大於30的市場,然後再套用你的策略,這就是一個很簡單 的例子。在一些國外的程式碼中我們常常看到一些Setup的條件,如果你使用這些Setup來挑選市場,你已經在做portfolio managerment了。

以上是比較簡單的說明,實際上要解決的問題比這個更多一點點,在portfolio managerment中除了Setup的觀念與做法之外,還有一個很重要的觀念與做法叫做Ranking,這個觀念之前我只有在我開的課程中才有談 到,Ranking的觀念其實也不難,因為Setup比較像是一個True/False的條件,例如你用ADX大於30當做Setup來選市場,你選的市 場數目會不固定,有時很少,有時很多。

Ranking則不是使用True/False的條件來選市場,它是一個用排序的觀念來選市場,例如你用ADX當做排序值,將所有的市場依照ADX值的大 小做排序,從大排到小,選出最大的前10個市場來交易,這就是一種Ranking的做法,這樣就會固定交易10個ADX值最大的市場。

目前我已經在TS的Portfolio Maestro中看到支援Ranking的實作,MC的portfolio managerment是完全沒有,所以如果你要實作做portfolio managerment的話,不要期望MC,只能等看看MC 9.0版會不會有支援。

2014年6月10日 星期二

組合的相關性

 想請教一下comewish大... 是否有在策略群或商品群之上加上一層第三方軟體在做管理?
因為這幾個月我才放比較大資金踏入多商品的領域~ 卻發現"相關性"這東西其實並不可靠~
盡管在數據或報告上, 很多商品或策略顯示幾近零相關, 但實際上運作時卻發現手上所持有的商品可能在短期內很明顯地就是出現"一起賺"或"一起賠"的現象~
所以我目前的想法是擺脫或是減少使用相關性堆疊的作法
改成主動式的資金管理~
如同海龜, 在單一商品上使用動態距離加碼的方式~
在多商品上, 我想使用類似的動態分配的方式
例如目前手上資金有限, 雖然數據上也許顯示歷史相關性很低, 組合DD也很低, 以相關性堆疊的作法, 也許可以持有六種商品, 但如果瞬間相關性拉高, 則可能六種一起在短時間爆掉
我在想如果使用動態的規劃方式, 如海龜單一商品的作法利用浮動損益距離來規劃~
例如限制基本狀態最多只能先持有三種商品, 當前三種損益大於若干之後, 方能進第四種, 第五種訊號, 第六種~
另外也可能對某些種類做限制
例如我目前監控了十幾種商品, 其中三種或五種可能是貨幣類, 有些是指數類
我可能會限制某一種類別最高的持有數量~
例如同一時間可能有三種貨幣類發出了訊號, 但第三方管理軟體則可以設定, 貨幣類最多只能持有兩種, 先到先做
以上~ 我目前是先請人幫我寫軟體做處理~
不知道comewish大是否能給些意見~



一但跨入多商品的組合交易,最重要的一個主題是投資組合之間的相關性的問題,因為組合的目的是要利用組合商品之間的低相關性或是負相關性來降低整體組合的波動,如果你運氣很好找到兩個負相關的曲線,組合之後會得到一條很平穩向上的淨值曲線,聽起來好像很玩美,理論上是這樣沒錯,但是實務上想要找到這樣的兩條曲線非常的困難,不要說負相關,連低相關都不是那麼容易,而且其中要解決的問題其實很多,我只能分享一些我自已遇到的問題,很多問題我自已也還在尋找解決的辨法,很多的問題我也希望我自已有答案,不過如果那麼容易的話,這個工作就太沒有挑戰性了。

先從簡單的來討論,最簡單的模式是單一策略套用到多商品上,例如海龜的系統,它處理的方法是計算商品之間的相關性,分出高相關與低相關,並限制高相關的商品可以持有的上限,低相關的商品可以持有的上限,同方向部位可以持有的上限,規則如下

單一市場----每個市場最大為4個單位。 

高度相關市場----對於高度相關的市場,在一個特定方向上最大可以有6個單位(即,6個多頭單位或6個空頭單位)。高度相關市場包括:燃油和原油;黃金和白銀;瑞士法郎和德國馬克;短期國庫券和歐洲美元……等。

低度相關市場----對於低度相關的市場,在一個特定方向上最大可以有10個單位。低度相關市場包括:黃金和銅;白銀和銅,以及很多因部位限制而海龜不能進行交易的穀物組合。

單一方向----在一個多頭方向或一個空頭方向上全部單位的最大數目為12。因此,理論上你可以同時持有12個單位的多頭部位和12個單位的空頭部位。

這是一個很好的範例,其實你也可以照他的規則下去執行,或是加以修改成你可以接受的規則,不過這裏面有一些問題存在,所謂相關性的是如何定義的?用定性的方法或是定量的方法?在海龜的法則並沒有說的很清楚,如果是定量的方法的話,在計算相關係數時會有取樣的問題,你要取樣多少天?取樣出來樣本的結果可以代表母體嗎?更麻煩的是如果你用滾動的方式取樣,這個相關係數是會變動的,這就很像我們在做WFA,In Sample算出來的值和Out Sample算出來的值會一樣嗎?

另外一個更麻煩的問題,當你限制了持有的部位的時候,雖然你降低了暴倉的可能,或是MaxDD的大小,但是你必需知道你也同時限制了獲利的可能性,這中間的取捨並不是那麼的容易,因為你也可以利用降低資金槓桿的方式來降低MaxDD的大小,那一種效果比較好?這要看你的系統的特性,並沒有辨法一概而論。事實上我很少使用海龜的做法,你可以看我最近的交易記錄,我去重壓了多檔的債劵期貨,雖然結果很慘,但是交易不能只看短期的結果。

如果你要使用海龜的方法管理你的風險的話,你還有一件事情要特別注意,那就是相關性有分長期與短期,也就是我說的取樣長度的問題,兩個長期低相關的商品有可能在短期是高相關的,這個有可能是某些特別的事件造成的,例如日本311地震,很多商品的從低相關性突然變成高相關,也有可能就只是你運氣不好,當好那一陣子你持有的那幾個商品有可能從低相關突然變成高相關,不見得需要有什麼特別的理由。

組合的風險控制是一個很複雜的問題,我也不認為它可以單獨和你的策略分開討論,它是策略的一部份。所以我也沒有辨法給你一個標準的答案,目前我知道可以做組合風控的工具有TradingBlox和TradeStation的Portfolio Maestro,MultiChart要9.0版才會推出。


2014年6月3日 星期二

CT01回測報告

CT01是一個很簡單的逆勢系統,使用均線判斷出主趨勢之後,等待拉回兩天買進,或是反彈兩天之後放空。
回測期間2001年至今
交易商品美盤29種期貨商品

績效雖然沒有特別突出,但是Sharp指數有2以上,MaxDD也只有12%,是屬於穩定獲利的系統,來看一下獲利曲線,這是對數坐標,可以看到很平穩的向上走。


改成線性坐標,下面是Drawdown的大小,可以看出來大多數的時間DD都在5%之內。


看一下系統整體的風險,可以看出都在10%之內


再來是月獲利,大多數的月份都是獲利的

看一下詳細的統計,可以看到系統的勝率高達78%,月勝率高達8成。


所以結論是不要小看簡單的方法,運用得當的話,簡單的方法是可以創造不簡單的績效。


2014年5月22日 星期四

交易系統的幾個要件

一般人對於交易系統往往只專注在進場訊號與出場訊號,事實上一個完整的交易系統應該包含許多要件,進出場只是其中的一項而已。大約在9年前,我第一次看到 Turtle System,那時的心中感到非常的震撼,因為那是我第一次看到一個完整的交易系統。簡單的說,一個完整的交易系統應該包含以下幾個項目

第一是投資組合管理(Portfolio Managerment),What do you trade ? 這個問題決定了你交易那些市場,不交易那些市場,我以前常跟我的朋友說,與其花時間找系統,還不如花時間找個好做的市場,好做的市場只要很簡單的方法就可 以獲利。這個問題對於你績效的好壞影響最大,但是一般人花在思考這個問題上面的時間是最少的。Portfolio Managerment的方法有很多,有動態也有靜態的,也有分有方向性與無方向性。

第二是資金管理(Money Managerment),How much do you trade ? 這個問題決定了你交易量的大小,通常也決定你單筆交易所承擔的風險值,很多人會把資金管理與風險管理混在一起,事實上兩者在本質有些不同。Money Managerment 的方法也很多,一般人常聽到的是Fixed Fractional,也就是固定比率法,其他的還有ATR Adjust, STD Adjust等等很多,就算你說我是小蝦米,我不需要用資金管理,但是事實上你還是在用資金管理的公式之一可能是Fixed Contract(固定口數法),或是Fixed Equity(例如20萬做一口),只是你沒有用心去研究而已。

第三才是進出場訊號(Entries and Exits),When do you entry and exit?這個問題只決定了你進出場的時機,這是一般人投入最多時間的地方。我在這上面花的時間佔總體時間是最少的,Simple is the best.

第四是風險管理(Risk Meangerment), How do you control your protfolio risk?這個問題和資金管理不同,因為資金管理計算的是單筆的風險值,這裏則是要管理與限制整個投資組合的風險值,也就是在Turtle System中有關於部位限制的這些規則,這也是被大多數人忽略的主題,常常有人用一些回測軟體寫Turtle System的回測,但是這個部份往往被簡化或忽略,所以我才會說對Turtle System有正確理解的人,其實很少。
事實上這是最重要也是最困難的主題,如何讓你的風險被限制,但是又不會限制你的獲利,這同時也關係到你破產的風險有多大,用蒙地卡羅模擬法只能算出你破產 的可能機率,並沒有真正積極的管理你的風險,我個人的看法非常反對把蒙地卡羅模擬法用在資金管理上面,因為把一個最佳化的結果用亂數重組得到的結果其實沒 有任何意義,但是蒙地卡羅模擬法用在其他地方則有非常有用的效果,風險管理常用的方法有Correlation Limit, Group Limit , Margin Equit Ratio Limit , Total Risk Limit , Unit Limit

上次我post有關 Donchian System的回測,有人一直無法理解難道交易市場可以無上限的增加嗎?這個問題其實答案在Portfolio Managerment與Risk Meangerment上,其實交易的市場不可能無上限增加,因為你每增加一個市場的部位,你就增加了你整體投資組合的風險。就算你都不限制你的投資組合 風險,事實上你也會被你的保證金所限制,這就是Margin Equit Ratio Limit。

日本汽燃油價差交易經驗談

我分享一下我交易日本汽燃油價差的經驗,我有一陣子剛好在交易日本汽燃油,算是做得還不錯,有一次聯貿的佐佐木來找我聊天,跟我介紹汽燃油的價差交易,於 是我就自已做了一些價差交易的研究,發現汽燃油有季節性的價差趨勢存在,而且非常的明顯,於是我就拿了100萬下去試著操作看看,結果短短三個月的時間, 就變成二百萬回來,讓我對價差交易非常有信心,覺得我終於找到聖杯了,心裏想我只要每年操作一次,三個月的時間就能賺100%,那幾年之後,我不就
於是隔年我決定要來做一筆大買賣,於是入金1000萬,開始做價差交易,因為部位很大,所以每天都要分批進場,花了一個多月才把部位建立好,剛開始的第一 個月非常的順利,汽燃油價差果然依照著我研究出來的方向走,我的未平倉的獲利也不斷增加,一路走高到800萬的高點,那時爽的不得了,覺得真的挖到金礦 了,再賺個兩百萬我就可以獲利出場了,結果我看到未平倉800萬那天是那年價差的最高點,那天之後價差急轉直下,不到一個星期的時間,那800萬的未平倉 獲利就消失不見了。這時我開始緊張了,我開始想要平倉出場,不幸的是這時汽燃油的合約已經變成近月的合約,每天的成交量只有一兩百口,我的未平倉口數,佔 了整體市場未平倉的口數的10幾%,所以我沒辨法一次就停損出場,我只能每天盯著汽燃油的報價,只要有人掛價出來,我就馬上打電話掛單,這樣一天最多也只 能成交10組左右,但是我有一百多組單子要出場。不過市場不會理會你的情況,價差還是像自由落體一樣一直往下掉,我每天看著我的虧損一天比一天擴大,我那 時壓力大到吃不好也睡不好,連晚上睡覺時都會做夢,夢到我在看盤平倉,看到帳戶歸零,然後被嚇醒全身冒冷汗。
最後花了二個多星期,終於把我的部位全部平倉,算一算這次的交易損失高達500萬,這是我專職交易之後,金額最大,百分比也是最大的一次損失。不過事後看,如果我那時候不平倉的話,最後的結果是我的帳戶真的會歸零,實在是非常的可怕的經驗。

波段加碼單的回測研究

最近因為K大波段的中心思想是價差一文,讓我想研究不同加碼比例的差異與比較,廢話不多說,先來看這次要回測的系統的統計表,這是日線的系統單口沒有加碼的統計果。
01.png
01E.png
可以看出來MaxDD很大,PF 1.89,ROA 497%,這種系統有興趣做的人應該不會很多
我另外加了兩個很簡單的加碼訊號,並且設定不同的加碼口數,然後用最佳化跑各種口數的組合,最佳化的報表在下方。
Test1.rar (1.75 KB, 下載次數: 131)
我們以ROA做排序,可以找出最佳的組合為1:2:3,剛好是倒三角型的加碼方式,最差的組合為3:2:1剛好為正三角型的加碼方式。由最佳到最差的組合分別如下:
1:2:3>1:3:2>2:3:1>2:1:3>3:2:1
看一下1:2:3的回測報表
123.png
123E.png
可以看出來很簡單的加碼策略,可以很有效的提昇一個系統的績效,PF從1.89提昇到2.79,ROA從497%提昇到1103%,而且最佳的加碼方法是 一般人都不敢用的倒三角型的加碼方式,所以做交易時很多時候不要只相信你的直覺,回測結果往往可以顛覆你平常的觀念,盡信書不如自已動手做回測,你會有很 多新的發現。

20140522補充:
加碼時要算好槓桿,不要過度重倉交易,建議把加碼訊號都拆開來成為單獨的策略,這樣比較不會過度交易

市場生態理論

市場像是一個生態系統,不同類型的交易者就好像不同的物種,它鼓勵多樣化。

每個人都可以擁有某方面的相對優勢,有些人分析資訊的能力很強,他可能用基本分析交易,有些人數理能力很強,他可能用程式交易,也有些人直覺能力很強,那他可能用直覺交易,每一種方法都有它的優點與限制。

沒有人可以在市場上擁有絕對的優勢,不然經過一段時間後他將會破壞這個市場,就好像一個有效的方法,如果每個人都用的話,那個方法最後一定會賺不到錢,因為沒有人做你的對手。

所以不論市場多有效率,市場一定存在個人交易者生存的空間。當市場上都是大型的基金時,個人反而擁有容易進出市場的優勢,你只要能好好利用這些相對的優勢,你就能在市場上取得一個生存的位罝。

至於如何利用這些優勢,這和你的心態有關,因為這些優勢並非絕對的,所以短期的結果是無法預期的,你是否有足夠的紀律和耐心和執行力,就成了你獲利的關鍵,這也是大多數成功的交易員會強調心態重要的原因。

20140522補充:
知道自已在這生態中處於那個位置是很重要的一件事。你是在食物鏈的上方還是下方?

大鯨魚與小蝦米

這個問題從友站一直談到這裏,所以我解釋一下為何我認為大鯨魚與小蝦米差異在於心態與知識而不是資金的大小,在我個人的看法,我對大鯨魚與小蝦米定義如下:
大鯨魚使用複利角度在思考,所以他不是以獲利率而是以年複合成長率(CAGR, Compound Annual Growth Rate)在評估他的操作績效。這一點很重要,因為你如果使用CAGR的角度在思考的話,你不會把你的獲利提領出去,你會想辨法把你的獲利變成你的本金,利用你的獲利創造更多的獲利,這樣的角度思考,你才有可能從一個小蝦米變成大鯨魚。

相反的小蝦米只在意獲利率,他只使用他期貨帳戶中的保證金評估他的操作績效,為了維持好看的操作績效,他會不斷地把他的獲利從帳戶中領走,因為帳戶中保持固定的金額,因此他對於MaxDD的承受能力也被固定住了。

舉例來說,也許50萬的損失對大多數的人看起來很大,但是如果這個交易員有1000萬的資產的話,那50萬的損失不過是他資產5%的變動而已。對大鯨魚心態的人來說,這是5%的損失,但是對小蝦米心態的人來說,那是50萬的損失。

這樣的情況特別在一些極短線的交易員身上容易看到這個現象。因為極短線要放大口數是非常困難的。加上口數變大之後,心理上的壓力也會隨之增加,加上市場的流動性的限制存在,放大口數之後要保持相同獲利率不是一件簡單的事情。

因此對大鯨魚心態人來說,隨著獲利的增加,他一定會遇上瓶頸,但是他的瓶頸並不是如何提高勝率或是如何提昇他的作法或系統,而是如何消化他一路增加的資 金。20萬的帳戶有20萬帳戶的做法,200萬的帳戶也有200萬帳戶的做法,兩者的做法是不可能會一樣的,於是為了克服問題,他會開始研究資金管理,多 市場分散,投資組合,所以大鯨魚與小蝦米在知識上面所研究的問題也不一樣。所以兩者的心態不同,思維邏輯不同,研究的重點也不一樣,這就是我對大鯨魚與小 蝦米的定義。

這也是為何我會寫下專職交易會經歷的幾個階段,這也是我一路走來不斷克服問題的心路歷程。

2014年5月19日 星期一

用蒙地卡羅模擬法做系統最佳化

蒙地卡羅模擬法是一種很好用的方法,特別適用於一些不確定結果的情況,應用亂數的模擬取得一些可能的結果。然後你再跟據這些結果做出一個累計次數分佈表,你就可以得到在多少信心水準之上,你會可能會得到什麼結果,基本觀念我想大家都懂,問題是如何把蒙地卡羅模擬法應用在交易上呢?

一般常看到的用法就是把蒙地卡羅模擬法運用在MaxDD的估計上面,把交易結果打散用亂數重組,用以估計未來可能發生的MaxDD,但是基本上我覺得這樣做沒有任何的意義,因為這樣的統計結果不會對你的系統有任何的幫助,相反的它會強迫你不斷的做最佳化,因為越好的結果跑出的來統計越好,最後又掉入Over Fitting的陷阱中,因為最後的交易結果往往和統計的結果有很大的差異。所以我個人非常反對把蒙地卡羅模擬法運用在MaxDD的估計上面,那是把好的工具用在錯誤的地方的最佳例子。

相反的我把蒙地卡羅模擬法用在系統的開發與最佳化上面,一般開發系統往往免不了的一個步驟就是最佳化,但是最佳化沒做好就變成Over fitting,結果聖杯拿到市場交易變剩杯,我想這是許多人都有共同的經驗,不要懷疑我也有相同的經驗,而且我交的學費也不會比別人少,但是要判斷有沒有Over fitting非常的困難,於是又有什麼參數孤島的理論,搞了一堆理論,但是問題仍然沒解決。所以我提出我自已的解決辨法。

我寫了兩支亂數的程式,其中一支程式是用亂數的方法選擇市場,也就是我用程式產生一個Random Portfolio,而且這個Random Portfolio是每次回測的時候,它都會重新組合一個新的Random Portfolio,也就是每次回測的Portfolio的內容是不相同的。透過這樣的方式,我可以很放心的去比較不同參數或方法的好壞,也可以檢視我的 Money Managerment與我的Risk Managerment是否有發揮它應該發揮的效用。
下面的結果是我用Random Portfolio搭配我的系統產生10次回測的結果,你可以看結果的分佈知道你的Robustness(系統穩建度)如何,你可以看到回測的結果分佈的情況非常的穩定。當然你也可做100次以上的回測,然後再把回測的結果做成分佈表。
RandomPortfolio.png
第二支程式則是Random Entry 隨機進場法,透過這支程式我可以檢視我的Portfolio Managerment是否有優勢存在。也可以檢視不同的參數所產生的結果的分佈情況,做為參數選擇的依據。下面是我用Random Entry搭配我的Portfolio Managerment,做10次回測產生的結果,可以看到每次的結果都是正數,這可以證明我的Portfolio Managerment存在一個正數的期望值。
RandomEntry.png

雖然用蒙地卡羅模擬法做系統最佳化有許多的好處,不過同時它增加系統開發的難度,可想而知,許多的系統經不起這樣的方法催殘,你很快就會看到系統的真面目,另外一個是倍數增加的測試量,假設你每個參數要做10次的回測,那麼你在做參數最佳化的時候,需要多跑10倍的回測量,等於你回測的時間也多了 10倍。不過和它的好處比起來,它的缺點其實不算什麼。

Fictitious Equity & Secure Equity 資金管理公式

有網友私下PM我,想問我的資金管理公式,基本上我用的方法和一般書上談的沒什麼不同,基本上就是Fixed Fractional這類的公式,真的要說不同的話,就只有我用了Fictitious Equity和Secure Equity的觀念。這個觀念我沒有在書上看過,所以我就分享一下這個觀念。

Fictitious Equity的用法,這個可能是大家最有興趣的觀念,一般而言計算口數的公式應該如下:

TradingQuantity = RiskEquity / DollarRisk

TradingQuantity是可交易口數
RiskEquity是你的風險總值(用金額計算)
DollarRisk是你單筆單口的風險值(用金額計算)

其中Risk Equity的計算如下

RiskEquity = System.TradingEquity * RiskPercentPerTrade

System.TradingEquity是你的可交易資本
一般而言System.TradingEquity = System.TotalEquity*Leverage,不過你也可以用System.CloseEquity或System.CoreEquity
RiskPercentPerTrade是單筆交易所冒的風險,以百分比計算
我把第二個公式改變如下:

RiskEquity = ( System.TradingEquity + FictitiousEquity ) * RiskPercentPerTrade

FictitiousEquity是虛擬資金,隨便你想設多少都可以

當你把公式改成這樣的時候,你的RiskPercentPerTrade和真正的比例會不同,而且會是一個變動的值。
舉例來說,假設你的起始資金是100萬,你決定每筆交易冒1%的風險,而你的DollarRisk算出來是10000元,那根據公式算出來的可交易口數是1口,不管你是賺錢或賠錢,你都是保持固定的RiskPercentPerTrade,這是一般人的做法。

對我而言,我覺得小資金和大資金的資金管理的觀念是不同的,我覺得小資金追求是成長的機會,大資金追求的是穩定的成長。所以我可以增加一個100萬的 FictitiousEquity,加入我的TradingEquity,這樣的話TradingEquity會從100萬變成200萬。那根據公式算出來的可交易口數會變成2口,實際上RiskPercentPerTrade會變成2%。

當然一定有人會問,為何不要直接把 RiskPercentPerTrade設定為2%就好,因為隨著你的獲利的增加,你的System.TradingEquity也會增加,你的 RiskPercentPerTrade也會漸漸自動下降,這樣就可以做到我想要的,在資金小的時候追求成長的機會,在資金大的時候,追求穩定的成長。這剛好和Van Tharp的想法完全相反,他認為Market Money可以冒比較高的Risk,我帳戶裏的每一毛錢都是從市場賺來的,我也不覺得可以冒比較高的風險。

但是要注意的是,FictitiousEquity最好不要比你的TotalEquity還高,不然帳戶爆了,不要來找我。還有一點要注意的是,當 TotalEquity小於StartingEquity的時候,要把FictitiousEquity也等比例往下調整,不然你的 RiskPercentPerTrade也會開始增加,這會增加你陣亡的機會。

如果你現在的資金已經很大了,那麼Fictitious Equity可能已經不適合你使用了,你需要的可能是限制MaxDD的方法,因為你可能經不起太大的風險,現在我來介紹Secure Equity這個觀念。
我們把RiskEquity公式改成

RiskEquity = ( System.TradingEquity - SecureEquity ) * RiskPercentPerTrade

SecureEquity代表你想保護的資金,它代表你保留一部份資金不投入交易之中。
當你把公式改成這樣的時候,相同的事情發生,你的RiskPercentPerTrade和真正的比例會不同,而且會是一個變動的值。
舉例來說,如果你有1000萬的資金,你可以設定SecureEquity為500萬,然後把公式中RiskPercentPerTrade設定為2%,此時你真正的RiskPercentPerTrade會是1%,萬一你交易不順利的話,TotalEquity開始下降,你的 RiskPercentPerTrade會自動減少,只要不是因為跳空的風險造成的Over Loss,你的MaxDD一定不可能會超過50%。

通常來說,如果你的回測MaxDD如果是30%的話,你可以設定一半的TotalEquity做為SecureEquity,那實際上操作MaxDD會超過30%的機會通常很小。當然萬一你的系統有問題或OverFitting的話,最多就只有50%的MaxDD。

另外一點要注意的是,這個方法是屬於動態調整法,也就是當你有獲利的時候,你要定期或定量調整你的SecureEquity,往上調整就可以不用往下調整,這樣你的SecureEquity會越來多,這些都是保證安全的資金,當然你不調整也可以,最大的RiskPercentPerTrade不會超過你設定的那個值。

交易是發展優勢的遊戲

交易是發展優勢的遊戲,可以發展優勢有
1.成本面的優勢,你的交易成本有沒有優勢?特別是一些極短線的當沖交易員,交易成本可能會佔到毛利的8成以上。

2.交易平台的優勢,你的交易平台是不是有效率與穩定,不是只有電腦快就足夠了,下單的軟體,報價的速度與正確性,網路的速度與穩定性,下單的速度與方便性,回報的速度也同樣的重要,特別是市場爆量的時候,有沒有任何針對網路電腦與下單平台的備援的計劃?

3.策略面的優勢,你的策略是否有優勢?你是否了解你的策略,策略是否能適應不同的市場狀況?你做過什麼樣的檢定?它是否能經得起市場的驗證?策略之間的相關性如何?

4. 風控面的優勢,你就認真研究過風控嗎?你如何控管你的風險?你知道你每日與每月的最大可能損失是多少嗎?你能承受嗎?你是否有追蹤每個系統的表現?什麼樣的狀況需要做調整?如何調整?你有透過多策略分散來分散你的策略風險嗎?那麼多策略分散要如何配置才能得到最大的風報比?你有研究過或思考過嗎?你有透過市場分散來分散你的市場風險嗎?你能分散到多少市場?

5.資金面的優勢,資金大有大的優勢,你是否有足夠的資金做分散,資金的規模是否有效率,這些資金是否能承受風險?操作的資金與生活用的資金是否有分開?如果你的資金不大的話,你是否有發揮小資金的優勢?你有使用或研究過資金管理公式嗎?你的策略是否符合你的資金大小?

6. 心態面的優勢,你是否在任何情況都能相信你的系統或方法,巴菲特在1999年的時候,全市場都在追逐科技股,儘管全市場的人都在取笑他的觀念已經過時,他公司的股價落後大盤,他還是不為所動,他依然堅守他的原則,只投資他了解的公司,最後證明那些取笑他的人才是輸家。你有像他一樣的堅守原則的心態嗎?

7.執行面的優勢,你每天例行的工作是否有自動化?你自動化的程度有多少?是否在任何情況下都能維持你的交易正常運作?停電,地震,網路斷線這些情況你是否有考慮?如果你想出國度假一個星期或一個月,你的交易系統還能正常運作嗎?

8.團隊的優勢,你是單打獨鬥的交易員嗎?或是你的背後有一個團對在支援你?一個人的能力再強,他也不可能是萬能的,無論是正式的團隊或是非正式的合作關係,你是否有利用別人的優勢彌補自已的不足,發揮1+1大於2的優勢?

9. 資訊的優勢,你有資訊的優勢嗎?所謂的內線消息,就是一種資訊的優勢,做股票的人常說千線萬線不如電話線一條,但是並非所有的資訊的優勢都是非法的內線消息,但是這種特定人擁有特定的資訊優勢卻是一件不爭的事實,市場上的一些大玩家或法人,往往有這種資訊的優勢,他們有錢請研究員做研究報告或有特別的政商關係可以取得一些其他人無法取得的資訊,一般的投資人只好透過盤後的籌碼分析,試圖解讀這些法人的動態。或是你有其他的非價格的指標,你也會多了一維的空間觀察市場的變化,這也算是一種資訊上的優勢。

10. IT的優勢,隨著電腦的普及與運算速度大幅提昇,IT的優勢在現在的市場已經越來越重要了,現在的市場已經像是在打資訊戰,各種新的交易平台,回測工具,還有高速的交易平台,高等數學或統計的回測平台,從美國程式交易的成交量可以佔到6成以上,就可以知道台灣未來的發展方向。你的交易平台是自行開發或是用現成套裝軟體?你有沒有撰寫程式的能力?這些都有可能是你的的優勢。

如果你在上面幾點都有優勢的話,那你在市場上面賺錢是必然的結果,但是要知道要在每一方面都有優勢的話是要花很多的時間與精力,那並不是一件容易的事

不要太聰明

所謂不要太聰明的意思就是
操作模式不要變來變去
也不要搞得太複雜...
在營造界也有同樣的經驗
聘任工程師或是機械操作手...日本人或德國人最好用
因為他們遵守固定的手冊...比較不會自以為聰明...跳脫[軌道]
看起來似乎很笨...但是不會出狀況
太聰明的人不適合擔任工程師或機械操作手...他們不願意照規矩辦事

股市其實非常簡單
但是都被人複雜的心給弄複雜了
學歷高根本不重要
因為這是一種眾人的行為
自然的規律
宇宙的脈動之一

只是簡單的東西往往非常困難
因為我們的心太複雜
所以知易行難啊

不要因為股市而迷失了心
更不要因為賠錢而把心賠光
心一旦賠光
任何悲劇都有可能發生的
所以說
沒有找到一套適合自己的穩健獲利的方法
就不要進場玩
不想找就趕緊離開股市吧

多市場分散的重要性

之前一直想寫一篇關於多市場分散對於交易系統的重要性分析,不過一直受限於歷史資料不足,還有很多技術上的困難沒有克服,所以一直沒有動手寫,最近我終於把我的報價升級到World Futures,所以也沒有藉口再拖下去,所以上來報告一下我的研究結果。

我想很多人都知道分散投資的重要,但是因為對於國外市場的熟悉度不足,所以目前大多數的交易人都還是以台指為主要的交易標的,有做分散的大多以策略分散為主,真正有做多市場分散交易的人少之又少。不幸的是去年2010年台指的波動率很低,所以就算你做了策略分散,去年的績效應該都不會讓人滿意,一些條件比較差的交易員去年可能已經從市場畢業了。所以我覺得還是要在此再強調一下多市場分散的重要性。

我用一支我以前寫的策略,使用隨機的方式選取市場交易[註],選取的市場從30個開始,一直到170個市場,每次增加20個市場,每組隨機選取10次做回測,因為是用隨機的方式選取市場,所以每次回測的市場都不相同。這樣可以讓我們來觀察交易的市場數目,對於交易結果的影響是什麼,影響的程度有多大。以下是回測的Summary Results,我依照市場數做分組。

大家可能對TB的報表不太了解,我先簡單說明一下
第一欄是Test No 這只是TB做最佳化回測的編號
第二欄是Sumilation這是我做隨機市場回測的編號,1-10代表是10次的不同的隨機市場組合回測
第三欄是How Many Market這是我隨機選擇市場的數目
第四欄是End Balance這是最後的回測的淨值
第五欄是CAGR%(Compound Annual Growth Rate)這是年複合報酬率或是幾何平均報酬率
第六欄是MAR指數這是把CAGR%除以MaxDD%代表你系統的風報比
其它的應該就不用再解釋了

隨機選擇30個市場,分別做十次回測(每次回測的市場是不同的)
30M.png

隨機選擇50個市場,分別做十次回測
50M.png

隨機選擇70個市場,分別做十次回測
70M.png

隨機選擇90個市場,分別做十次回測
90M.png

中間略......

隨機選擇170個市場,分別做十次回測
170M.png

可以簡單比較一下30個市場和170個市場的差異,要注意的是,這是用同樣的系統與同樣的參數,唯一不同的只是交易的市場數目而已。

下面的圖可以看出市場越多,系統MAR指數的平均值也越高,最低值也隨市場增加而增加
SteppedParameterGraph_P1.png

下面是把全部的市場加入回測
summary.png
LogarithmicEquityGraph_P1.png
LinearEquityDrawdownGraph_P1.png
MonthlyReturnsGraph_P1.png