國 立 交 通 大 學
電 機 與 控 制 工 程 學 系
碩 士 論 文
應用遺傳程式規劃於尋找台灣加權指數技術交易
法則
Using Genetic Programming to Find Technical Trading Rules
on Taiwan Stock Index
研 究 生: 蔡丞師
指導教授: 周志成 博士
應用遺傳程式規劃於尋找台灣加權指數技術交易
法則
Using Genetic Programming to Find Technical Trading Rules
on Taiwan Stock Index
研 究 生: 蔡 丞 師 Student:Cheng-Shih Tsai
指導教授: 周 志 成 博士 Advisor: Dr. Chi-Cheng Jou
國立交通大學
電機與控制工程學系
碩士論文
A Thesis
Submitted to Department of Electrical and Control Engineering College of Electrical Engineering
National Chiao-Tung University in Partial Fulfillment of the Requirements
for the Degree of Master in
Electrical and Control Engineering September 2006
Hsinchu, Taiwan, Republic of China
應用遺傳程式規劃於尋找台灣加權指數技術交易
法則
研究生:蔡 丞 師 指導教授:周 志 成 博士 國立交通大學電機與控制工程研究所摘 要
近年來遺傳程式規劃在財金領域上的應用備受重視,因其結構上的彈性特別適合解 決在股票市場中尋找交易法則這類非線性的問題。 本論文在遺傳程式規劃的要素中引入技術指標,期望能在擴大解空間的優勢下使用 代表台灣股市整體特性的台灣發行量加權股價指數以尋找適合應用於台灣股市的技術 交易法則;在適存度函數的挑選上本研究使用悲觀性平均報酬率、平均報酬率以及報酬 風險比當作引領演化的依據;在演化的過程中為了解決過適現象,本研究透過調整選擇 方案的選擇壓力係數來緩和過適的發生;對於每個經由遺傳程式規劃所產生的技術交易 法則則是藉由報酬風險比以及模型效率來評估其績效。在考量交易成本的狀況下,本研 究發現使用此三種演化方式所得的技術交易法則大都能打敗單獨執行買進觀望策略所 得的報酬。 當使用悲觀性平均報酬率為適存度函數時,發現產生的技術交易法則其模型效率相 較於以其他兩種適存度函數進行演化所得到的技術交易法則更具有一致性;在使用以平 均報酬率為適存度函數的實驗中,證實了使用以超額報酬做為評估適存度的方式並不適 合台灣的股票市場;當觀察使用以報酬風險比產生的技術交易法則時,發現其風險與獲 利評估標準在各應用期的皆展現較佳的一致性。 關鍵字:遺傳程式規劃、台灣加權股價指數、技術交易法則Using Genetic Programming to Find Technical Trading Rules on
Taiwan Stock Index
Student: Cheng-Shih Tsai Advisor: Dr. Chi-Cheng Jou Institute of Electrical and Control Engineering
National Chiao-Tung University
Abstract
Recently, Genetic Programming has played major role on financial field. With its flexibility, the merit of tree structure, Genetic Programming has unparalleled ability to solve nonlinear problems, such as finding technical trading rules on stock markets.
In this thesis, technical indicators are introduced into Genetic Programming for the purpose of expanding the search space. When finding technical trading rules on Taiwan stock market, we use TAIEX as the most representative raw data and choose PROM, ROM, and RRR as the fitness functions. In the progress toward evolution, we try to avoid overfitting by conditioning the selection pressure coefficient in the selection scheme. When evolution is over,
RRR and model efficiency are used to evaluate the performance of each technical trading rule
generated by Genetic Programming. Considering the transaction cost, we find that most technical trading rules derived from all of the fitness functions outperform the buy-and-hold strategy.
First of all, when the evolution is led by PROM, the model efficiency of technical trading rules we gain are more consistent than those generated by the other fitness functions. Second, when the evolution is led by ROM, excess return adopted frequently in other research is not suitable on Taiwan stock market. The last but not the least, when the revolution is led by RRR, both the performance standard RRR and model efficiency show great consistence in each applied period.
Keyword: Genetic Programming, TAIEX, technical trading rule
誌 謝
謹向我的指導教授 周志成博士致上最高的敬意,感謝他在我最徬徨無助時給予我 不只是在研究上的協助,他的悉心指導令我在學識上以及待人處事方面皆有長足的進 步,同時感謝我的兩位口試委員楊谷洋教授以及陳永平教授不吝對本論文提出改進的意 見,由於你們的指導,使得本研究更佳嚴謹與完備。 感謝我的兄長丞祐在財務領域知識上的指引以及同窗好友建威、達文與學弟任宏、 星戎在研究所生涯的陪伴,這段日子以來,大家一同互相砥礪、充滿歡笑與淚水的生活 令人回味,此分真摯的情誼我將永銘於心。 最後感謝我的父母以及所有曾經在我求學路上給予我協助的人,由於你們的栽培與 拉拔才能有今日的我,此份榮耀願與你們共享。 蔡丞師 2006秋 於新竹交大目 錄
中文摘要 ...i 英文摘要 ... ii 誌謝 ... iii 目錄 ...iv 表目錄 ...vi 圖目錄 ... viii 第一章 序論 ...1 1.1 研究動機與目的...1 1.2 問題特徵與文獻回顧...2 1.3 研究方法系統架構...4 1.4 論文內容概述...5 第二章 遺傳程式規劃 ...6 2.1 遺傳程式規劃簡介...6 2.2 遺傳程式規劃流程...9 2.2.1 初始化 ...9 2.2.2 選擇 ...9 2.2.3 繁殖 ...11 2.2.4 終止條件 ...14 2.2.5 總結 ...14 第三章 使用遺傳程式規劃產生技術交易法則 ...17 3.1 技術分析...17 3.1.1 技術分析的介紹和特點 ...18 3.1.2 幾種技術指標的介紹 ...21 3.1.2.1 移動平均線 ...22 3.1.2.2 動量變化率指標 ...24 3.1.2.3 相對強弱指數 ...25 3.2 技術交易法則的樹狀結構 ...28 iv3.3 適存度評估 ...31 3.3.1 過適現象迴避 ...31 3.3.2 適存度函數 ...35 3.3.2.1 悲觀性平均報酬率 ...36 3.3.2.2 平均報酬率 ...39 3.3.2.3 報酬風險比 ...40 3.4 遺傳程式規劃實現策略 ...41 3.4.1 技術交易法則輔助型買進觀望策略 ...41 3.4.2 控制參數及終止條件 ...43 3.4.3 初始化 ...45 3.4.4 選擇方案 ...45 3.4.5 繁殖 ...48 3.4.5.1 交配 ...48 3.4.5.2 突變 ...50 3.5 總結 ...50 第四章 實驗結果與分析 ...53 4.1 資料選用及分割...53 4.2 技術交易法則效能評估...55 4.2.1 風險評估標準 ...55 4.2.2 獲利評估標準 ...55 4.3 實驗結果...57 4.3.1 選擇壓力係數對演化的影響 ...59 4.3.2 以悲觀性平均報酬率進行演化 ...60 4.3.3 以平均報酬率進行演化 ...61 4.3.4 以報酬風險比進行演化 ...61 4.4 實驗結果分析...62 第五章 結論 ...72 參考文獻 ...74 附錄 ...77
表 目 錄
表3.1 交易記錄表 ...38 表3.2 PROM計算結果以及相關參數 ...38 表3.3 RRR計算結果以及相關參數...41 表3.4 技術交易法則輔助型買進觀望策略行動狀態表 ...42 表3.5 遺傳程式規劃控制參數 ...44 表4.1 各應用期市場獲利潛能 ...56 表4.2 使用買進觀望策略獲利與模型效率 ...57 表4.3 長、短期與順、逆勢操作效果 ...58 表4.4 對照組與實驗組在測試期的效能 ...60 表4.5 在訓練期以PROM進行演化實驗結果統計量 ...62 表4.6 在驗證期以PROM進行演化實驗結果統計量 ...63 表4.7 在測試期以PROM進行演化實驗結果統計量 ...63 表4.8 在訓練期以ROM進行演化實驗結果統計量...64 表4.9 在驗證期以ROM進行演化實驗結果統計量...64 表4.10 在測試期以ROM進行演化實驗結果統計量...65 表4.11 在訓練期以RRR進行演化實驗結果統計量...65 表4.12 在驗證期以RRR進行演化實驗結果統計量...66 表4.13 在測試期以RRR進行演化實驗結果統計量...66 表a.1.1 在訓練期以PROM進行演化實驗結果及效能評估參數 ...77 表a.1.2 在驗證期以PROM進行演化實驗結果及效能評估參數 ...78 表a.1.3 在測試期以PROM進行演化實驗結果及效能評估參數 ...79 表a.2.1 在訓練期以ROM進行演化實驗結果及效能評估參數...80 表a.2.2 在驗證期以ROM進行演化實驗結果及效能評估參數...81 表a.2.3 在測試期以ROM進行演化實驗結果及效能評估參數...82 表a.3.1 在訓練期以RRR進行演化實驗結果及效能評估參數...83 vi表a.3.2 在驗證期以RRR進行演化實驗結果及效能評估參數...84 表a.3.3 在測試期以RRR進行演化實驗結果及效能評估參數...85
圖 目 錄
圖1.1 研究方法系統架構 ...4 圖2.1 算式樹:(a) ax + b(b) sin(m + n) ...7 圖2.2 輪盤選擇法 ...10 圖2.3 不同父母執行交配操作 ...11 圖2.4 相同父母執行交配操作 ...12 圖2.5 兩種型態的突變:(a)函數或終端節點的改變(b)子樹的改變 ...13 圖2.6 使用遺傳程式規劃求解要素 ...14 圖2.7 傳統的遺傳程式規劃流程圖 ...22 圖3.1 獲利策略 ...20 圖3.2 技術分析指標—移動平均線 ...22 圖3.3 技術分析指標—動量變化率指標 ...25 圖3.4 技術分析指標—相對強弱指數 ...27 圖3.5 技術指標型交易策略 ...30 圖3.6 引入條件運算的技術交易法則 ...31 圖3.7 過適技術交易法則 ...33 圖3.8 過適現象 ...35 圖3.9 平均報酬率曲線與超額報酬曲線關係 ...40 圖3.10 交易訊號 ...43 圖3.11 隨機抽樣演化過程 ...46 圖3.12 技術交易法則單點交換子樹 ...49 圖3.13 技術交易法則單點突變 ...50 圖3.14 使用遺傳程式規劃求解系統設計流程圖 ...52 圖4.1 資料分割 ...54 圖4.2 不同選擇壓力係數對演化影響 ...59 圖4.3 三種演化方式於各應用期報酬風險比盒鬚圖 ...67 viii圖4.4 三種演化方式於各應用期模型效率盒鬚圖 ...68 圖4.5 三種演化方式於測試期交易次數對模型效率散佈圖 ...69 圖4.6 悲觀性平均報酬率價格走勢圖:(a)進場後價格走勢(b)退場後價格走勢 ..70 圖4.7 報酬風險比價格走勢圖:(a)進場後價格走勢(b)退場後價格走勢 ...71
第 一 章
序
論
1.1
研究動機與目的
近年來,台灣電子業的成就有目共睹,加上國民生活水準提升以及投資理財概念 越能廣為大眾所接受的影響下,大量的金融商品應蘊而生,像是債券、基金以及期貨 等皆充斥於市面,若要考慮其衍生性商品更是不勝枚舉,然而在眾多標的物當中,以 屬於相對高報酬高風險的股票最受台灣投資人的青睞。 投資股票首重進場與退場時機,人人都想要低點買進、高點賣出,如此就衍生出 了如何判斷買賣時點的問題,擇時交易的判斷依據眾多,不管是使用機器學習的方法 或是人為思考的判斷,其共通處在於必須能夠提供機械化的交易訊號供投資人遵循以 決定是否該進場買股或退場賣股。 以往討論股市投資策略時以基本分析與技術分析的應用為大宗,前者是以買進一 檔在市場中被低估的股票,等到市場機制發酵,重新認可此檔股票,給予它真正應得 的價值時再賣出來獲取利潤;後者是經由蒐集市場所產生一連串時間序列的資料,像 是開盤價、收盤價、盤中最高價、盤中最低價和交易量等,並以之當作市場過去及現 在的表現,再藉由分析過去的趨勢作為預測未來價格走勢的工具,這些用以研判的數 值資料所經歷的時間越久就越具代表性,文獻中有許多相關研究證實技術分析在台灣 股市中有其獲利依據[2, 3, 4, 5, 6],然而在技術分析應用的範疇中,許多技術指標的引 數、指標值達到多少才具代表性意義以及如何搭配至今仍無法巧妙的判定,在人為思 考總有疏漏之處的考量下,如何隨機取材,搭配適當的技術指標以成為嶄新的交易策 略將是本論文的研究重點。 此外,隨著新的時間序列資料的加入就要重新研判投資策略總是費時費力,且人 1為判斷總是免不了固定模式,因此尋找一個能夠自我學習、自動求解的方法將是必要 的,在必須兼顧提供機械化的交易訊號、消除交易規則搭配偏見以及使用強大計算能 量自動求解的需求後,以具備問題特性的原始資料當作輸入後就可依其方法演算步驟 獲得一個能夠在台股中創造超額報酬的獲利模型,其在擇時交易的決策上更勝買進觀 望策略,進而達到瞭解台灣股市特性的目的。
1.2
問題特徵與文獻回顧
要使用機器自我學習的方法來自動求解總免不了過適現象的發生,其原因來自於 機器學習方法的本質,造成在學習過程的某個時間點上開始發生模型將訓練資料獨有 的特質記憶住,以致於無法顯現出整體資料一般性特質的一種現象,在目標市場尋找 交易法則的問題中,一個經由遺傳程式規劃尋找交易策略的過程,其實就是在建立一 個可以在市場中創造獲利的模型,因此在學習過程中必須避免發生過適現象進而學習 到目標市場的一般化特性以預期未來將此獲利模型應用到未知資料時也照樣能獲利。 所謂交易法則其實就是將金融市場中存在的各種時間序列的變量經過各種計算或 判斷方式轉換為投資訊號的一種過程,一個好的交易法則應該具備可解讀性高與在未 知資料中可以穩健表現的特性,前者在於使用者該如何安排樹狀結構節點的組合或施 以限制,可解讀性高的技術交易法則更能獲得信賴,但過度限制解的結構將侷限了解 的發展;後者則與過適現象有關,有過適特質的技術交易法則會在學習過程中展現出 高度獲利能力,但在以測試資料考驗時其表現卻明顯衰退。 在金融市場尋找交易法則屬於非線性的問題,因此在解空間存在要素與組合方式 估測不容易的限制下就必須擴大搜尋空間以及容許在求解過程中彈性變換解的結構: 過去十幾年來,遺傳演算法在財經領域大行其道,其相對簡單的架構卻擁有強大在可 能解空間中搜尋解答的能力,不管是在國內還是國外的資本市場中皆成功解決了不少 問題[7, 8, 9, 10, 11, 12],然而,過去文獻中以遺傳演算法為基礎的研究都是事先將交易 策略的模型外框定義好再對內含的參數進行編碼及求解,此模式明顯在求解交易法則 時並不適用,因為求解者所要搜尋的目標是一個有條理的規則,而非只是參數。 相較於遺傳演算法使用字串結構使其只能表達數量的概念且在演化過程中無法改 變其表示可能解框架的情形下,遺傳程式規劃在解決產生交易法則的問題上提供了一 個更具彈性也更完善的樹狀架構以儲存任何可能解組成元素所創造出的多元組合方式,在具備不只能表達數量概念以及繼承了遺傳演算法自動在可能解空間作廣泛搜尋 動作的特性後,遺傳程式規劃實為一個更加適合搜尋技術交易法則的方式,在搜尋解 的空間可無限擴充的優勢之下,本研究希望能夠藉由遺傳程式規劃自動求解的特性建 立一套準確度高、經得起時間考驗的預測模型以創造穩定超額報酬。 直到1994年起,遺傳程式規劃挾其天性上的優勢逐漸有在發展交易策略的問題上 取代遺傳演算法之態勢,此部分使用遺傳程式規劃之國外的研究相較於國內發達許多 [1, 22, 24, 25, 26, 45],文獻中有不少針對美國標準普爾500指數、各國代表性指數以及 個股股價的研究[22, 24, 25, 26, 45],在證實其所對應的資本市場確實存在規律性之特徵 且使用遺傳程式規劃也能成功地獲取超額報酬,在這些文獻中以Allen和Karjalainen的 研究最具代表性。 Allen和Karjalainen發現其搜尋到的交易法則在考慮交易成本(transaction cost)後 [24],以測試資料考驗並不能獲得穩定一致的超額報酬,其使用計算超額報酬當作個體 的適存度;輸入原始資料為標準普爾500指數日資料以及無風險國庫券獲利;在過適現 象的迴避方面是把訓練資料切割成五年的訓練期以及二年的驗證期,剩餘的當作測試 資料;在演化的學習過程中將每一世代在訓練期適存度最高的個體以驗證期的資料加 以考驗,如果此個體表現得比目前為止它所在驗證期遇到的法則都還要好,就把它儲 存起來當作輸出解;在其規劃過程限制不多的情形下會有許多冗餘子樹的出現,也就 是在評估適存度時這些子樹不影響計算結果,如此現象增加了這些技術交易法則的複 雜度,伴隨而來的是交易法則之可解讀性降低以及無法瞭解潛藏在這些交易法則背後 的市場特質。 繼Allen和Karjalainen的研究後,Seshadri提出了多種演化策略和複雜度懲罰係數來 避免過適現象以及引入根據領域知識加以縮減的運算子數目以增加技術交易法則的可 解讀性[22],同樣以標準普爾500指數當作輸入原始資料,結果發現就算考慮交易成 本,其研究成果在為期12年的測試期間持續打敗買進觀望策略。 國內的文獻中也不乏有使用遺傳程式規劃研究台灣股票市場者,林耀堂以台積電 當作買賣標的[1],其研究成果有高達55%以上的獲利水準,在著重台灣整體股票市場 特色的考量下,台積電的投資績效並不足以代表台股整體表現,且其在實作過程中為 了滿足遺傳程式規劃封閉性的要求,他使用了將實數值與布林值依其規則強制轉型的 方式,此舉將造成技術交易法則的可解讀性降低。 3
1.3
研究方法系統架構
根據問題的特性,本論文在應用遺傳程式規劃之求解系統尋找獲利模型的過程中 使用以下的研究流程,如圖1.1所示: 選用具問題代表 性特徵的TAIEX 之每日收盤價 根據領域知識尋 找遺傳程式規劃 求解要素 套用遺傳程式規 劃進行求解 判斷大量可能選 定解的表現是否 符合演化特徵 實驗結果分析 與討論 否 總結貢獻及提出 未來改進方向 是 選用具問題代表 性特徵的TAIEX 之每日收盤價 根據領域知識尋 找遺傳程式規劃 求解要素 套用遺傳程式規 劃進行求解 判斷大量可能選 定解的表現是否 符合演化特徵 實驗結果分析 與討論 否 總結貢獻及提出 未來改進方向 是 圖 1.1 研究方法系統架構 為了瞭解台股整體的特質,本研究使用最能反映出大環境變遷的台灣發行量加權 股價指數,目前雖然沒有此標的可供買賣,但目前市面上已有台灣50指數基金,其走 勢相當貼近大盤可供投資人參考。 此外,在研究過程中本論文特別著重在以下幾點。 1 在根據領域知識尋找遺傳程式規劃求解要素時,本研究參考文獻經驗選擇具代表性的技術指標並依遺傳程式規劃的操作組合出技術交易法則。 2 在挑選引導演化方向的適存度函數時,本研究發展多種評量方法以尋找具 有台股一般性獲利特徵之交易法則所能適應的適存度評估方式。 3 在套用遺傳程式規劃進行求解時,藉由在不同選擇狀況下調整選擇方案所 使用的選擇壓力係數來緩和過適現象的發生。 4 在實驗結果分析與討論時,期望經由使用更仔細的風險及獲利評估方式來 客觀地評量本研究產生之技術交易法則的效能以及解讀潛藏在這些交易法 則背後的市場特質。
1.4
論文內容概述
本論文共分為五章:第一章為緒論,旨在說明研究動機、目的與研究方法系統架 構。第二章為遺傳程式規劃,藉由先介紹遺傳演算法再導入遺傳程式規劃以彰顯遺傳 程式規劃的獨特性。第三章為使用遺傳程式規劃產生技術交易法則,旨在說明根據問 題特性打造一個能夠套用遺傳程式規劃的環境。第四章為實驗結果與分析,針對找到 的技術交易法則以統計的方法觀察其特性。第五章為結論,旨在總結研究成果並提出 未來改進的方向。 5第 二 章
遺傳程式規劃
進化型演算法(evolutionary algorithm)是一個使用生物演化機制為其關鍵元素,並 架構於電腦上解決問題的系統。在進化型演算法當中,遺傳演算法(Genetic Algorithms) 和遺傳程式規劃(Genetic Programming)緊密相關。遺傳程式規劃可視為遺傳演算法的擴 張,本章將說明如何藉由應用遺傳程式規劃來尋找給定問題的最佳解。2.1
遺傳程式規劃簡介
遺傳程式規劃是Koza由遺傳演算法發展出的一套自動搜尋使用者定義問題的最佳 解的演算法則,其具有領域獨立的特性[16],在適當使用的條件下,能在解空間自動產 生幾乎完美的規則。既然遺傳程式規劃是承襲遺傳演算法而來,所以大致上運作流程 和想法概念是相同的,皆以仿生物演化機制為基礎,唯獨其所重「規劃」的部分,捨 棄遺傳演算法當中染色體長度固定、只由0、1字串所組成的單調染色體,取而代之的 是可加入元素、架構都更佳彈性的樹狀架構(genotype)[18],遺傳演算法中的染色體的 組成基因可以類比成樹狀架構的節點(node),樹的節點分為兩類:一類是終端節點;另 一類是函數節點。終端節點所能包含元素的集合稱作終端節點集合(terminal set),通常 是函數節點所需要的運算元,依需求可能是變數或常數;函數節點所能包含元素的集 合稱作函數節點集合(function set),其所包含的運算子和函數,依其應用領域的不同, 所代表的可以是邏輯運算(and, or, not)、比較運算(<、>)、算數運算(+、-、 ×、÷、√)、數學函數(三角函數、指數函數、對數函數)以及根據問題特性自行定義 的函數。相較於遺傳演算法受限的二元字串,遺傳程式規劃在可表示解的架構與組成 元素具有相當程度的彈性,搜尋空間更大更完整,因此也更方便解決問題。的表示法,其中圖2.1(a)的a、b屬於終端集合的常數,x是終端集合的變數;+和×是函 數集合所能使用的算數運算運算子。圖2.1(b)則稍微複雜,m、n依然是終端集合的常 數,唯獨增加了函數集合可使用的元素sin和cos: a x + b sin cos + m n cos sin m n (a) (b) a x + b sin cos + m n cos sin m n (a) (b) 圖 2.1 算式樹:(a) ax + b(b) sin(m + n) 圖2.1(a)的算式樹可用來求線性回歸線:假設存在n筆資料(x1,y1), (x2,y2),…,(xn,yn), 我們希望求出y對x的線性回歸線y = ax + b,經由最小平方法,就可以找出一組a、b使 得式(2-1)降到最小: (2-1)
∑
= + − n i i i mx n y 1 2 )) ( ( 此題亦可藉由遺傳程式規劃求解,其適存度函數可定為誤差平方和的倒數,如(2-2)所 示: 2 )) ( ( 1 n mx yi − i + (2-2) 平方效應可用來凸顯誤差及避免回傳負的適存度,如此,能夠使得誤差平方和越小的 解就越容易被挑中。 由於遺傳程式規劃所需的計算能量相當巨大,直到1990年代只要都還是只能解決 相對解單的問題。然而近幾年來,伴隨著遺傳程式規劃技術的日漸縝密與快速計算所 需的耗費降低,遺傳程式規劃應用層面更加廣泛,也更能解決相對艱澀的問題[19]。 如同以上所討論的,要使用遺傳程式規劃來搜尋最佳解,最重要的是要預先定義 可能解的組成元素以及評估適存度的計算方式:可能解的終端及函數節點集合若其包 7含的元素不夠豐富,自然地在搜尋空間不夠大的情況下不可能找到全域最佳解,反 之,若終端及函數節點包含的元素過於複雜,尤其是當複雜的函數或甚至其結合體會 使用相當多的節點、族群大小通常也不知該如何因應作調整時的情況發生時,龐大的 計算壓力會造成不成比例的時間及金錢上的耗費,另外,解的複雜度提高使得其可讀 性降低,我們也無法藉由解的形式來瞭解此問題的特性,在找尋交易法則的事例中, 應該也不會有人敢用自己無法理解、和自身經驗扯不上邊的交易法則[22];評估適存度 的計算方式決定了演化方向以及目標,適存度評估是一個人要能夠把他想要的結果恰 當地轉換成遺傳程式規劃能懂的程式語言的途徑,因此相當依賴使用者的領域知識和 經驗,在不同應用領域中,舉例來說,送貨員所能耗費的時間和油料、圖形辨識的準 確度,參數如何最佳化以及電路中控制器的響應,這些問題都要能夠想到一個適當的 適存度函數後才能套用遺傳程式規劃,尤其在許多可能存在的條件限制下要準確定義 是相當困難的。就實際層面考慮一個工程上的問題,當要設計合成一些類比或數位電 路,像是運算放大器、控制器或濾波器時,首先就要先將執行訊號處理的元件的數學 模型建構在函數集合中,像是積分器、微分器、相位落後控制器、相位超前控制器、 加法器、減法器或是更細節像是電容和電感的數學模型等,當要合成一個特定電路時 就必須考慮要把什麼元件和模組引進函數集合中,引進多餘元件和模組徒增等待時間 或在最終解中發現莫名的電路組合;若不足則只能落入局部最佳解,之後透過適存度 函數得到的結果,可能是所需元件的規格,市場上可能買不到或所費不貲,如此可能 又必須回頭琢磨適存度函數。 其餘要決定的還有 遺傳程式規劃所需的控制參數和終止條件:前者最重要的就是 族群數量,其中一個決定的方法就是取決於我們到底想花多少時間與金錢來求解問 題,其餘控制參數還有演化世代數、突變機率、解的最大深度(depth)和節點數以及其 他根據特定問題的領域知識來訂定的參數;後者會依問題不同而改變條件,通常要由 問題的本質來設計,並沒有一個定論什麼條件一定能用或什麼條件一定不能用。 一旦有了解的樹狀結構及組成元素、適存度函數、控制參數和終止條件,遺傳程 式規劃就可以進行其固有的操作模式,經由隨機初始族群,搭配其特有的選擇、交 配、突變操作反覆地改進演化其個體,直到全域最佳解產生。
2.2
遺傳程式規劃流程
2.2.1
初始化
遺傳程式規劃的既定進程開始於隨機產生首代可能解候選人的族群,族群大小要 根據問題的本性來決定,通常數百至數千都有可能,至於每個個體的大小和形狀幾乎 相異,其節點數和深度若有需要則可由使用者限制,節點之間的連結必須是要有意義 的,因此必須明確界定任一節點所能挑選的元素集合。由於第零代族群意味著在搜尋 空間中盲目隨機地找可能解,因此,一般來說在被適存度函數評估後給定的適存度都 是相對差勁的。在領域知識的引導下,我們會儘量在所有可能解存在的空間中灑下希 望的種子,期待這些種子能夠茁壯到局部最佳解,之後再經由局部最佳解挑出全域最 佳解。2.2.2
選擇
如同在遺傳演算法當中所討論的,一般來說,我們希望經由選擇的機制選中適存 度高的個體(即仿生物界的天擇機制),但是又希望能夠保持基因的多樣性以免陷於 局部最佳解,如此心猿意馬的心態就會造成選擇壓力(selection pressure)。選擇壓力定 義為已存在群體中到底是多好的個體被選中,如此就會造成可能無法看見全域最佳解 的壓力:選擇壓力越大,代表挑中群體中適存度越高的個體,一個極端的例子是如果 永遠都只選擇族群中適存度最高的個體,選擇壓力就會變得非常非常大,因為幾乎沒 有在其餘搜尋空間中作搜索的動作。選擇壓力的大小是影響基因池(genetic pool)收斂速 度的主要原因,越大的選擇壓力會增加過早收斂到局部最佳解的機會,過小的選擇壓 力則會花費不必要的等待收斂的時間。換句話說,我們必須要在「向外探索」和「向 內取用」間取得一個平衡點;在已有族群中取得適應力高的個體的同時也要向外探頭 看看搜尋空間的其餘部分。因為不得不依賴它驅動族群的演化,因此我們需要一個能 夠保持族群基因多樣性且提供一定收斂速度的選擇方案(selection scheme)。 一般會將選擇方案分為兩類:一種是和適存度成正比的「適存度正比選擇法」 (fitness-proportionate selection),另一種是「排名依據選擇法」。適存度正比選擇法如 式(2-3)所描述: 9∑
= = P k k i i f f p 1 (2-3) pi代表族群中第i個個體被選中的機率,fi代表族群中第i個個體的適存度,在族群數量P 固定的條件下,pi和fi成正比。 由於適存度正比選擇法直接使用原始的適存度(raw fitness)為其選擇依據,因此會 造成對適存度評估函數過於敏感且容易產生導致基因池過早收斂的結果,特別當適存 度函數傳回一個負數值時,適存度正比選擇法根本就無法使用。輪盤選擇法(roulette-wheel selection)是一個典型且廣為使用的適存度正比選擇方案,依據每個解的適存度佔 總適存度的比例來決定各個解佔據輪盤區塊的大小,如圖2.2所示: 個體的適存度 a : 3 b : 2 c : 2 d : 1 a b c d 個體的適存度 a : 3 b : 2 c : 2 d : 1 a b c d 圖 2.2 輪盤選擇法 排名依據選擇法改善了適存度正比選擇法的缺點,其選擇依據並不是靠未經處理 的適存度,而是使用個體在族群中的排名,如此一來選擇壓力就不再和適存度密切相 關 , 而 是 和 被 選 中 的 個 體 相 對 的 排 序 有 關 。 t- 人 錦 標 賽 選 擇 法 (t-way tournament selection)就是一種排名依據選擇法,它的運作方式為先從族群中隨機挑選t個成員舉辦 一場錦標賽,這場錦標賽當中最好的個體被選擇到的機會是p,第二好的個體被選到的 機會是p(1-p),第三好的個體被選到的機會是p(1-p)2,依此類推,之後被挑中的贏家就 獲得交配的機會。觀察此選擇法則運作方式後會發現,當p = 1就與隨機選擇無異,通 常會選擇t = 2,p = 0.7,透過調整t和P就可以輕易改變選擇壓力。錦標賽選擇法在遺傳 演算法當中是一個很重要的選擇機制,它的好處在於實作上相單簡單且在有雜訊發生 時會顯現其強韌度[20, 21]。2.2.3
繁殖
下一步就是要經由遺傳程式規劃化中特別的操作方式,交配和突變來產生第一代 至此規劃結束前任一代的個體。當選到的父母不相同時的交配過程可用圖2.3來說明: 親代 e^ b a + -2 c sin -cos b + b -e^ e^ b + -cos b + -2 c 子代 tan 2 a a 12 inv. -a sin tan 2 a b e^ a 12 inv. -親代 e^ b a + -2 c sin -cos b + b -e^ e^ b + -cos b + -2 c 子代 tan 2 a a 12 inv. -a sin tan 2 a b e^ a 12 inv. -圖 2.3 不同父母執行交配操作。以粗體標明的子樹(subtree)會互相交換以創造下一代 當隨機選定一個交配節點後,交配的動作開始於先除去父親部分的子樹,在接上由母 親身上斷裂的子樹,第一個子代於焉產生,第二個子代則是母親的斷裂節點接上父親 11的子樹,如此反覆操作,就可藉由互相交換部分的子樹以達到產生新族群的目的。 遺傳程式規劃優於遺傳演算法之其中一處在於遺傳程式規劃賦予個體結構上的彈 性,因此可經由交配兩個相同的親代創造出兩個完全不同的子代,在傳統的遺傳演算 法當中相同的親代交配會得到一樣的子代,圖2.4說明了此一情況: 親代 子代 -cos b + b -e^ tan 2 a a 12 inv. -cos b + b -e^ tan 2 a a 12 inv. -cos b + b -e^ a 12 inv. -a 12 inv. -cos b + b -e^ tan 2 a tan 2 a 親代 子代 -cos b + b -e^ tan 2 a a 12 inv. -cos b + b -e^ tan 2 a a 12 inv. -cos b + b -e^ a 12 inv. -a 12 inv. -cos b + b -e^ tan 2 a tan 2 a 圖 2.4 相同父母執行交配操作 突變是另一個在遺傳程式規劃中相當具有創意的發明,有兩種可能的突變情況:
第一種是終端節點只能變換成終端節點,函數節點只能變換成函數節點,如圖2.5(a); 另一種是子樹完全改變成令一種子樹,如圖2.5(b): 突變前 突變後 (a) -cos b + b -e^ tan 2 a a 12 inv. -cos b + b -e^ tan 2 a b 6 sin + -cos b + b + e^ tan 20 a a 12 inv. -(b) 突變前 突變後 (a) -cos b + b -e^ tan 2 a a 12 inv. -cos b + b -e^ tan 2 a b 6 sin + -cos b + b + e^ tan 20 a a 12 inv. -(b) 圖 2.5 兩種型態的突變:(a)函數或終端節點的改變(b)子樹的改變 如同遺傳演算法一般,遺傳程式規劃中突變的操作也是要避免過早讓基因池收斂以及 13
保持個體的多樣性以邁進全域最佳解。利用交配和突變產生的子代擁有親代好的特 性,一直到人口數已經充足才又一次評估新世代適應環境的能力。最終,經過幾個世 代的天擇,族群中的個體會和第零代的個體差異很多,且適存度的平均值會隨著演化 而慢慢上升最終趨於飽和。
2.2.4
終止條件
週而復始的演化過程終止於達到一個使用者設定的條件,以下列出幾個常用的終 止條件: • 演化的世代數達到一定值。 • 已經有個體的適存度滿足設定的最小值。 • 經過連續幾代的演化都無法創造出更好的解。 • 計算所需耗費的時間和金錢已達上限。 • 人工檢查。 • 結合以上數個條件。2.2.5
總結
欲使用遺傳程式規劃求解必須先準備好以下四樣必須依賴使用者定義的要素:終 端及函數節點集合、適存度評估方式、控制參數及終止條件,如圖2.6所示: 遺傳程式規劃 終端節點集合 函數節點集合 適存度函數 控制參數 終止條件 全域最佳解 遺傳程式規劃 終端節點集合 函數節點集合 適存度函數 控制參數 終止條件 全域最佳解 圖 2.6 使用遺傳程式規劃求解要素 終端和函數節點集合的元素以及適存度函數是相對重要的,根據給定問題的不同,此兩者必不相同但控制參數以及終止條件可能相同,之後再藉由遺傳程式規劃中主要包 括適存度評估、天擇和其特有的繁殖操作之三個以世代更替為重點的迴圈,透過天擇 以適存度加以考驗後能將優秀的個體挑出,繼而希望經由交配產生更有潛力的個體以 達到全域最佳解,另一方面,藉由弱小的個體還是有機會繁衍以及族群中極少部分的 個體產生突變,以保持基因的多樣性。 傳統遺傳程式規劃的執行步驟如圖2.7,變數Gen是累計世代數的計數器,Run是視 情況而定要讓整個試驗執行N次的計數器,Indi是族群大小P當中個體的索引標籤。其 主要演算綱要概敘如下: 1 使用終端集合和函數集合隨機創造第零代族群。 2 反覆執行下列世代交替步驟直到特定終止條件達成前: 2.1 根據領域知識估算族群中每個個體的適存度。 2.2 依據選擇方案選擇一或兩個體執行2.3的基因操作。 2.3 根據特定機率執行以下基因操作以創造新個體加入新世代: 2.3.1 複製:選擇一個體複製加入新世代。 2.3.2 交配:選擇兩個體在隨機選擇交配點之後互換子樹創造子 代。 2.3.3 突變:從新世代選擇一個體在經由隨機決定的節點或子樹 上發生改變。 3 在終止條件達成後,遺傳程式規劃出所選定的個體就是此次試驗的最佳個 體,如果此次試驗是成功的,此個體就可能是此問題的全域最佳解。 15
Gen := 0 1 隨機產生族群 直到 Indi = P 2 終止條件滿足 了嗎? 3 取出選定 的解 結束 2.1 評估族群中每個個 體的適存度 Indi := 0 視情況選擇應用哪一個 基因運算子 2.2 根據選擇方案選擇 一個體 Indi := Indi + 1 Indi := Indi + 2 2.2 根據選擇方案選擇 一個體 Indi := Indi + 1 Gen := Gen + 1 是 否 突變 交配 複製 Run := Run + 1 Indi = P? Run = N? Run := 0 是 否 是 否 2.3.2 執行交配 2.3.3 執行突變 2.3.1 執行複製 2.3 將兩個子代加入 新世代 2.3 將突變的個體加 入新世代 2.3 將複製的個體加 入新世代 2.2 根據選擇方案選擇 兩個親代 Gen := 0 1 隨機產生族群 直到 Indi = P 2 終止條件滿足 了嗎? 3 取出選定 的解 結束 2.1 評估族群中每個個 體的適存度 Indi := 0 視情況選擇應用哪一個 基因運算子 2.2 根據選擇方案選擇 一個體 Indi := Indi + 1 Indi := Indi + 2 2.2 根據選擇方案選擇 一個體 Indi := Indi + 1 Gen := Gen + 1 是 否 突變 交配 複製 Run := Run + 1 Indi = P? Run = N? Run := 0 是 否 是 否 2.3.2 執行交配 2.3.3 執行突變 2.3.1 執行複製 2.3 將兩個子代加入 新世代 2.3 將突變的個體加 入新世代 2.3 將複製的個體加 入新世代 2.2 根據選擇方案選擇 兩個親代 圖 2.7 傳統的遺傳程式規劃流程圖
第 三 章
使用遺傳程式規劃產生技術交易法則
在實務上,技術分析(technical analysis)早已受到廣泛的應用且已行之有年,其美中 不足之處在於目前並無一堅實的學說來支持其理論基礎,儘管如此,就算是在技術分 析的範疇,雖然存在使用慣例,許多技術指標(technical indicator)所該引入的參數(通 常是日數)和指標值到達多少及其該代表的意義至今仍無法巧妙的判定,舉例來說, 像是移動平均線(moving average)和相對強弱指數(relative strength index)該用幾日來評 估,相對強弱值高到多少才算超買、低到多少才算超賣,諸如此類的問題目前都還沒 有一定的決定標準。 基於上述的問題,藉用遺傳程式規劃可在函數集合中隨機引入技術指標及其計算 日數的特性,甚至是搭配其餘函數集合中元素的組合,期望能藉由量化的指標值以及 提供機械化買賣訊號的雙重影響下,規劃所得出的結果說不定會有在使用預設值之外 出乎意料的發現。本章先介紹技術分析的基本假設和應用概念,引出在遺傳程式規劃 中所選用的技術指標,之後再套用遺傳程式規劃中特有的演化能量,希望能在看似雜 亂無章的歷史價格資料中推演出讓人坐以待「幣」的交易法則。3.1
技術分析
用來分析和預測股票市場的方法可以分為兩大類:基本分析(fundamental analysis) 和技術分析。前者重在研究市場內在的潛質並以之訂定股票價值,後者相信數字會說 話,希望藉由研究市場當下的表現來預測未來走勢。因此技術分析以能夠量化的市場 資料為基礎,也是本論文中用以研究的基本根據。 技術分析以「供需法則」的概念為基礎,堅持下列三個原則為其基石[27]: 17• 市場行為決定一切。 • 股價變動有一定的趨勢。 • 歷史將會不斷重演。 技術分析的一項重要依據就是技術指標,藉由使用目前和過去的股票價格和成交 量來量化市場的表現,另外,為了拓展搜尋空間,本論文援用三種常見的技術指標, 包括移動平均線、動量變化率指標(rate of change)和相對強弱指數。
3.1.1
技術分析的介紹和特點
技術分析的研究主要是以觀察由過去價格傾向所繪製成的圖表和技術指標的紀錄 來進行,藉由不斷的經驗累積、觀察圖表是否符合過去各式各樣的特定模式後猜測價 格曲線會往什麼方向移動。在過去的相關文獻中可以發現在技術分析領域中持續有人 提出新的技術分析方法、技術指標和工具[31],截至目前,光是技術指標就有二十幾 種,這些技術分析師都相信價格變化是有固定模式且有跡可尋的,藉由種種推演就可 以整理出規則並加以利用[28]。尤其是近幾十年來,拜計算速度的大幅提昇以及越來越 廉價之賜,多樣技術分析的工具能夠更有效率地搭配以提醒技術分析師某些模式或趨 勢已經悄悄地形成或結束。 技術分析並不打算研究一間公司的財務資料,像是財務報表、紅利、股息等,會 關心以上基本面中所有影響股票價格的研究稱作基本分析,技術分析藉由使用過去歷 史的價格和成交量資訊而發展出一些有物理意義的計算公式,也就是技術指標,期望 能夠科學、客觀地明確量化某種趨勢的程度,進而希望當下次類似趨勢形成時能夠掌 握先機進場或退場。當指定了一個n日的時間間隔(time window)時,各種技術指標就可 以被計算出來。式(3-1)、(3-2)、(3-3)及(3-4)列舉了一些簡單常見的技術指標,依序是 乖離率(bias)、動量指標(momentum)、心理線(psychological line)及成交量比率(volume ratio) ,通常技術指標習慣以百分率表示。式(3-1)的分子稱作乖離,若以兩百日移動平 均線當作判斷標準,在圖3.2中,將當日收盤價減去兩百日移動平均價就稱為乖離,乖 離率是依靠計算股價波動和移動平均線偏離的程度來預測可能的回檔或反彈;動量指 標用以反映股價波動的速度,一般而言當其由正轉負時為賣出時機,反之則為買進時 機;心理線是人氣指標的一種,用以觀察一段時間內投資者的心理是傾向買方或是賣方,作為研判此時股市是處於超買或是超賣;成交量比率是根據衡量買賣氣勢的強弱 來預測之後股價可能繼續上揚或下跌。如同其餘預測機制,技術分析也不保證其預測 結果是百分之百正確,它只是嘗試提供最有可能發生的結果[29],信與不信,端看使用 者的經驗與智慧。儘管看似神奇,自技術分析發展以來還是有不少死忠支持者堅信其 中可能蘊藏微乎其微預測未來的能量。 100 ⋅ 日移動平均價 日移動平均價 -當日收盤價 n n (3-1) (3-2) 日前收盤價 -當日收盤價 n 100 ⋅ n n日內大盤上漲天數 (3-3) 100 2 2 ⋅ + + 日內平盤日總成交量 日內下跌日總成交量 日內平盤日總成交量 日內上漲日總成交量 n n n n (3-4) 所謂基本分析是相對於技術分析而言,基本分析看重大至國內外總體經濟政治局 勢的外部因素,小至目標公司的員工薪水、業務拓展、財物表現、每股紅利、市佔率 與經理人的監督管理風格等其他相當「基本」的營運狀況,並以此為準則來訂定此公 司股票的價值;相反地,技術分析只重外觀表象上價格曲線的移動,所有該是基本分 析討論的影響市場價格的因素,以及是消息面與心理面的潛在效應等都會忠實的在股 票交易的「值」與「量」上表現出來,因為股票的市場價格完全由供需關係來決定, 當要預測股價的趨勢時,只需觀察供需關係本身,而不必再對會影響供需關係的因素 加以討論[30]。 綜合上述技術分析與基本分析的特性:技術分析可以預測短期股價漲跌傾向以及 新、舊趨勢的開始或結束,但要決定應購買哪一檔股票,甚至是要預測其長期走勢就 要使用基本分析,成功的股票投資人會看重技術分析對近期資訊較敏感的特性並以之 作為短期內選擇買賣時機的依據;另一方面利用基本分析著重於一間公司遠景的描 繪,藉由判斷目前股票價位是否合理再選擇長期持有或儘快拋售股票。簡而言之,基 本分析用以長期選股,而技術分析用以決定短期買賣時點,此近乎完美的獲利策略如 下頁圖3.1所示: 19
基本分析
財務報表 各行各業景況 政經局勢
TSMC, MTK, and IBM etc.
技術分析 股票價格 交易量
$
$
基本分析 財務報表 各行各業景況 政經局勢TSMC, MTK, and IBM etc.
技術分析 股票價格 交易量
$
$
圖3.1 獲利策略 本論文因針對短期的買賣時點作探討,故選用技術分析當作交易規則的組成元素。 總結來說,技術分析的理論奠基於下面三項假設[32]: 1 市場行為決定一切,既然價格由供給與需求決定,則所有影響供給與需求 關係的因素,包括消息面、基本面與心裡面,都會反映在價格上,所以只 要專心研究價格波動就已足夠。 2 股價變動有一定趨勢,而且會持續一段時間,因為市場無法對影響供給與 需求的因素立即反應,而是需要一段時間緩緩適應,因此也給予投資人擊 敗市場的機會。 3 歷史將會不斷重演,技術分析師相信投資者的心態和行動都會前仆後繼地 循著前人的腳步,假如台積電股價有機會重回四十元的關卡,在大環境沒 什麼改變的條件下,投資者會相信一間曾經讓先前投資人賺錢的企業的技 術水準還是會持續不斷創新研發,股價一飛沖天指日可待。儘管可能是心 理層面的一廂情願,甚至是不理性的,但是這些導因於人的特質所造成的 影響確實存在,也很難精準地量化。 數十年來許多文獻中對技術分析是否真能從目標市場獲利多有探討,通常不同市場就 可能會得到不同的結論,不過其中就算聲稱有獲利的,其測試步驟也還是存在一些問題值得探討[34]。
然 而 , 技 術 分 析 的 假 設 條 件 卻 和 其 他 市 場 投 資 理 論 , 像 是 (efficient market hypothesis)和隨機漫步理論(random walk hypothesis)有所出入:在財經領域中,所謂消 息,或說是任何會影響市場價格的因素,是隨機出現且事先不可能知道的,效率市場 假說主張金融市場對消息的反應是極度具有效率的,市場價格都會很快速的充分反映 所有可獲得的資訊[35],一個人除非靠內線消息或天生好運,否則是無法藉由目前公諸 天下的訊息獲得超額報酬,當然也就不可能持續地擊敗市場[36]。 除了效率市場假說以外,隨機漫步理論是另一個和技術分析的理論基礎背道而馳 的學說,隨機漫步理論主張儘管每天都有新的消息流入市場,在大家都接觸相同訊息 的條件下,買賣雙方都相當聰明機智,因此價格會在一個合理的價位上作布朗運動 (Brownian motion),這些價格波動是隨機變化、不受過去價格影響的。假如此理論成 真,那麼技術分析派所主張的圖表樣式趨勢論就應聲瓦解,當然也就不可能預測未來 走勢。簡而言之,根本就沒什麼方法可以戰勝市場,因為一切都是隨機變化,股價不 會照你預期的變動,擲骰子決定你的投資組合都有可能打敗專業的建議。 總括來說,技術分析學派贊成市場中絕對不是全部都由如同在效率市場假說中所 陳述的近乎理性的投資者所組成,股價波動也絕對不會和之前的走勢完全無關。冥冥 之中就會有趨勢存在的概念一直是技術分析學派最不可動搖的基石。文獻中有不少針 對台灣股市為目標市場的研究,結果發現技術分析並不是全無用武之地[1, 2, 3, 4, 5, 6],因此利用遺傳程式規劃中隨機取材的特性,並搭配適當的技術指標以成為嶄新的 交易策略將是本論文的研究重點。
3.1.2
幾種技術指標的介紹
時至今日,多種技術分析方法甚至是技術指標如雨後春筍冒出,當然,不同的技 術指標各有其擅場的領域及應用方法,唯其共通點皆主張要充分瞭解其特性並累積經 驗後才能選到正確當用的技術指標。既然技術分析在台灣股市是有發揮餘地的,因此 選取何種技術指標就成了一個很重要的課題。在過去學者研究中發現,在不同的個 股、不同期間選用不同的技術指標都會有不同的績效表現[2, 3, 4, 5]。至於要搭配幾種 技術指標才會有最好的效果,文獻中並沒有明確答案[2, 6]。但可以預期的是,就如同 技術分析所陳述的,一定要搭配多種指標,靠彼此間相輔相成才有預測的功效。 21本研究憑藉國內、外學者在其目標市場的成功經驗[22, 37]以及在實務界的廣泛使 用程度選擇了三樣具代表性的技術指標:分別是移動平均線、動量變化率指標和相對 強弱指數,茲將此三者特性介紹如下: 3.1.2.1 移動平均線 在技術分析的領域中,移動平均線是一種被廣為使用,以達到分析時間序列資料 目的的技術指標線,其中最常被拿來計算股票價格。藉著統計若干日的股價再加以平 均,希望能以公平的方式觀察過去這一段時間以來價格波動的均勢。在數學上,移動 平均線就是一個簡單卷積運算(convolution)的結果;在訊號處理領域中,移動平均的運 算本身就有低通濾波器(low-pass filter)的功用,因此當價格產生劇烈震盪的時候,從移 動平均線是看不太出來的。當計算的日數越多,移動平均線就越顯得平滑;反之則會 越像原本的時間序列資料,如圖3.2所示: 移動 1 118 235 352 469 586 703 820 937 105411711288140515221639 3000 4000 5000 6000 7000 8000 9000 10000 11000 台灣加權股價指數日線圖 30日移動平均線 200日移動平均線 乖離 A B D C 壓力 支撐 移動平均線 移動 1 118 235 352 469 586 703 820 937 105411711288140515221639 3000 4000 5000 6000 7000 8000 9000 10000 11000 台灣加權股價指數日線圖 30日移動平均線 200日移動平均線 乖離 A B D C 壓力 支撐 移動平均線 圖 3.2 技術分析指標—移動平均線 當要繪製移動平均線時,第n+1日的前n日移動平均,表示成MAn+1(n),的計算方是
就是將前n日蒐集到的n筆價格,也就是第一日收盤價p1、第二日收盤價p2…到第n日收 盤價pn全部加總後再加以平均,如式(3-5)所示:
∑
= + = n i i n p n n MA 1 1 1 ) ( (3-5) 隨著時間間隔的移動,當要計算連續的移動平均時,並不需要將過去全部n日重新加總 在平均,只要引入最新一日的價格,移除最舊一日的價格就可以,如式(3-6)所示: n p p n MA n MA n n n 1 1 1 2( ) ( ) − + = + + + (3-6) 在某個特殊情況下移動平均線會失效:當時間序列的資料有週期性變化的特性 時,因為時間間隔總是包括整個週期,引用移動平均反而會看不到資料變化的資訊, 但是好顯在財務金融領域中鮮少有如數學中規律週期的情況發生。 因為計算方式,移動平均有緩和近期價格波動的效果,所以它可以用來代表長期 的趨勢,至於時間間隔要取多長才能表現出長期趨勢則沒有定見,西方社會視200日移 動平均線為一個相當程度可以代表長期走勢的投資依據,行情價格若在長期移動平均 線之上屬於多頭市場,反之則為空頭市場。對照日期後,若以兩百日移動平均線當作 判斷標準,台灣股市在2003年6月到2004年4月代表多頭,2000年7月到2001年11月代表 空頭。不過過於長期的移動平均線會使得投資者無法掌握目前即將形成的高峰或低谷 以把握退場或進場時機,當把時間間隔取越短,移動平均線對近期的股價波動就越敏 感,代表繪製者看中的是較短期的趨勢,同樣地,取多少代表短期則看應用而定。一 般而言,取10日代表短期、90日代表中期、200日代表長期。 技術分析學派也常靠價格與移動平均線的消長程度來判斷買進或賣出:以200日移 動平均線當作判斷標準,圖3.3中的A點稱為黃金交叉,此時價格向上突破移動平均 線,代表趨勢即將向上攀升,為買進訊號;B點乖離極大,因此預期將出現谷底反彈, 為買進訊號;C點漲幅過大,可能創歷史新高,短時間內將出現賣壓,預期價格將向下 修正,因此為賣出訊號;D點稱為死亡交叉,此時價格向下突破移動平均線,代表趨勢 即將反轉,又之前創歷史新高,增加此區為逃命波段的機會,因此為賣出訊號。此外 移動平均線可視作上升趨勢的支撐(support),或是下跌趨勢的壓力(resistance),當有突 破(breakout)發生時,代表下跌趨勢壓力的移動平均線就會轉變為支撐,反之亦然。 233.1.2.2 動量變化率指標 動量變化率指標是由動量指標而來,動量指標的計算方式為當日收盤價減去n日前 收盤價,如式(3-7)所示: 1 1 1(n) p p MTMn+ = n+ − (3-7) 當計算出動量指標後再除以n日前的收盤價就可以更仔細觀察出股價波動的比率,如式 (3-8)所示: 1 1 1 1 1 1 ) ( ) ( p p p p n MTM n ROC n n n − = = + + + (3-8) 在式(3-7)和(3-8)中,MTMn+1(n)以及ROCn+1(n)代表第n+1日的n日動量指標及第n+1日的n 日動量變化率指標,若與移動平均的計算方式相結合,會有如(3-9)的關係: n n MTM n MA n MA n n n ) ( ) ( ) ( 1 1 2 + + + − = (3-9) 觀察(3-9)可發現動量指標其實可由移動平均線圖表求出,等號左邊代表隔日移動平均 線的斜率,因為移動平均線指標選用越多日會使得移動平均線的斜率越小,當兩條移 動平均線隔日的斜率相同時並不表示此n日中動量指標相同,而是要乘以n才能知道此n 日中價格的動能變化。因此當移動平均線出現波峰時,動量指標會由正轉負;當移動 平均線出現波谷時,動量指標會由負轉正,移動平均線走勢越抖,代表這段時間價格 變化的動能越大。 一般而言,動量變化率指標代表一股價格持續變化的動能,當觀察短期市場表現 時,若漲勢形成,動量變化率指標為正;跌勢持續時,動量變化率指標為負。舉例來 說,以虛線繪製的為50日的動量變化率指標,以右邊縱軸為其尺度;以實線繪製的為 1999年到2005年台灣加權股價指數日線圖,以左邊縱軸為其尺度,如下頁圖3.3所示:
5 0 ROC 1 66 1 31 196 261 326 391 456 521 586 651 716 781 846 911 3000 4000 5000 6000 7000 8000 9000 10000 11000 -0.3526 -0.2662 -0.1848 -0.1046 -0.0239 0.0561 0.1372 0.2196 0.3069 0.3902 0.4712 0.5691 台灣加權股價指數日線圖(L) 50日動量變化率指標(R) F E 動量變化率指標5 0 ROC 1 66 1 31 196 261 326 391 456 521 586 651 716 781 846 911 3000 4000 5000 6000 7000 8000 9000 10000 11000 -0.3526 -0.2662 -0.1848 -0.1046 -0.0239 0.0561 0.1372 0.2196 0.3069 0.3902 0.4712 0.5691 台灣加權股價指數日線圖(L) 50日動量變化率指標(R) F E 動量變化率指標 圖 3.3 技術分析指標—動量變化率指標 在圖3.4中,在相對高點形成前,動量變化率指標恆正但遞減,代表反轉趨勢形成前股 價上升動能減低,此時為賣出訊號,如圖3.4的E點,當此上升動能消失後若有下降動 能形成,股價就會應聲下挫,此時動量變化率指標由正穿越零交界轉為負值;在相對 低點形成前,動量變化率指標恆負但遞增,代表反轉趨勢形成前股價下降動能減低, 此時為買進訊號,如圖3.4的F點,當此下降動能消失後若有上升動能形成,股價就可 攀升,此時動量變化率指標由負穿越零交界轉為正值。因此動量變化率指標可視作未 來價格趨勢的先驅,當股價趨勢反轉前,此股動能的趨勢就該先反轉,價格趨勢反轉 的越強烈,動能改變的趨勢也就越強烈。 3.1.2.3 相對強弱指數 在實務上,相較之下相對強弱指數是一種偏向輔助性質的技術指標,用以衡量目 標市場是否有過熱或過於冷淡的現象,在一定時間內目標市場可進出資金為定值的假 設條件下,當過多資金進場買進股票,也就是所謂的超買現象,意味著之後投資者可 25
能已無力加碼造成賣壓湧現,股價隨之有回檔的空間;當投資者持有現金過多以致於 過少資金投入市場,也就是所謂的超賣現象,意味著之後可能出現買壓,股價隨之有 反彈的可能。 相對強弱指數可以表示出買賣雙方互相拉扯的力道,當股價出現漲幅時視為買方 力道,出現跌幅時視為賣方力道,當此兩股力量達到平衡時股價就會趨於穩定。假設 第二日收盤價高於第一日,第三日收盤價低於第二日…第n+1日收盤價高於第n日,則
U1 = p2 - p1,D1 = 0;U2 = 0,D2 = p2 - p3…Un = pn+1 - pn,Dn = 0,定義SUn+1(n)為第n+1
日,前n日中隔日若出現漲幅,則把所有漲幅加總的和,如式(3-10)所示: (3-10)
∑
= + = n i i n n U SU 1 1( ) SDn+1(n)則代表第n+1日,前n日中隔日若出現跌幅,則把所有跌幅加總的和,如式(3-11) 所示: (3-11)∑
= + = n i i n n D SD 1 1( ) 因為當隔日出現漲幅時,Un+1(n)往上累加但Dn+1(n)不變;當隔日出現跌幅時,Dn+1(n)往 上累加但Un+1(n)不變,再引進移動平均的概念,MAUn+1(n)代表上漲點數的移動平均, 也就是第n+1日的前n日上漲點數平均值,同理MADn+1(n)代表下跌點數的移動平均,也 就是第n+1日的前n日下跌點數平均值,因此買方與賣方力道的比,也就是相對強度 (relative strength),可以用式(3-12)來描述: ) ( ) ( ) ( ) ( ) ( 1 1 1 1 n MAD n MAU n SD n SU n RS n n n n n n + + + + + = = (3-12) 式(3-12)中分子、分母可消去共同因子n,RSn+1(n)即代表第n+1日的前n日相對強度。當 要計算相對強弱指數時,通常會將其原本介於0~1之間的數值乘上100以對應到0~100 的尺度,如式(3-13)所示: 100 ) ) ( 1 1 1 ( ) ( 1 1 ⋅ + − = + + n RS n RSI n n (3-13) RSIn+1(n)代表第n+1日的前n日相對強弱指數,將其整理後就可以得到式(3-14):100 ) ( ) ( ) ( 100 ) ( ) ( ) ( ) ( 1 1 1 1 1 1 1 ⋅ + = ⋅ + = + + + + + + + n MAD n MAU n MAU n SD n SU n SU n RSI n n n n n n n (3-14) 考慮一個極端的狀況,當某檔股票呈現全面上揚的局勢時,相對強度會趨近無窮 大,相對強弱指數會趨近一百,數值越大,代表買方力道越強,市場行情出現大多 頭;相反的,當盤勢收黑一片慘綠時,相對強度會趨近零,相對強弱指數也會趨近 零,數值越小,代表賣方力道越強,市場行情出現大空頭。相對強弱指數需視不同目 標市場訂定不同標準,一般來說市場行情多介於30到70之間,且通常定80以上為超 買,20以下為超賣。 一般來說,投資者常使用14日的相對強弱指數來當作參考依據,以右邊縱軸為其 尺度並以虛線繪製;實線依舊代表1999年到2005年台灣加權股價指數日線圖,以左邊 縱軸為其尺度,如圖3.4所示 14 RSI 1 61 121 181 241 301 361 421 481 5 41 601 661 721 781 841 3000 4000 5000 6000 7000 8000 9000 10000 11000 4.0957 12.2856 20.6191 28.6255 36.6264 44.6350 52.6766 60.6771 68.9014 76.9261 84.9569 93.1579 台灣加權股價指數日線圖(L) 14日相對強弱指數(R) H G 相對強弱指數14 RSI 1 61 121 181 241 301 361 421 481 5 41 601 661 721 781 841 3000 4000 5000 6000 7000 8000 9000 10000 11000 4.0957 12.2856 20.6191 28.6255 36.6264 44.6350 52.6766 60.6771 68.9014 76.9261 84.9569 93.1579 台灣加權股價指數日線圖(L) 14日相對強弱指數(R) H G 相對強弱指數 圖 3.4 技術分析指標—相對強弱指數 27
當超買發生但股價反而下跌就是一個後市可能急跌的訊號,如圖3.5的G點;當超賣發 生但股價反而上漲就是一個後市可能止跌回升的訊號,如圖3.5的H點。超買和超賣訊 號通常是用作警訊,尤其是當處在一個價格劇烈波動的市場中,根本就無法以相對強 弱指數來當作進場和退場的依據。
3.2
技術交易法則的樹狀結構
樹狀結構的細部構造是影響遺傳程式規劃能否正確運作的兩大關鍵因素之一,如 同2.2節所討論的,靠著遺傳程式規劃獨特的樹狀結構可以大大地拓展解的搜尋空間, 在必須滿足封閉性(closure)的條件下[13],規劃者必須適當地安排終端節點和函數節點 的組合才能得到一棵有意義的樹,在本問題中一棵樹就是代表一個技術交易法則,隨 之在樹林中,給予指引演化方向的適存度函數,如此遺傳程式規劃就可以自動求解。 樹狀結構的組成元素散佈在終端節點集合以及函數節點集合當中,終端節點集合 的元素都是具有問題特性的變數或使用者定義的常數,這些運算元用作函數節點集合 元素的輸入,因此可視為遺傳程式規劃中的主要輸入元素,因此如何挑選足以代表目 標問題獨特性的變數以及符合問題尺度的常數是非常重要的,例如在尋找交易法則的 問題中就可以引入開盤價、收盤價以及成交量;函數節點集合的元素則直接影響遺傳 程式規劃後所得到結果的好壞,挑選關鍵性的函數和運算子不僅可以拓展搜尋空間, 更可以幫助我們瞭解問題的特性,例如在尋找交易規則的問題引入技術分析指標,反 之若引進太多非必要函數反而讓整個搜尋解的過程猶如大海撈針,相當沒有效率,例 如引入過多技術分析指標,此點通常可藉由經驗累積來避免。 本研究中以樹狀結構來代表一個交易策略,透過終端和函數節點集合元素的交互 配合讓遺傳程式規劃得以運作,茲將本研究使用的終端和函數節點集合敘述如下: 終端節點集合 • 日數常數:隨機在5~250間,以5為間隔取樣,也就是說5、85和195都有可 能被挑中。 • 隨機常數:隨機在0~2取樣,以小數點兩位為原則,例如0.97、1.68。 • 布林常數:「True」和「Fals」。 • 收盤價變數:「Pric」。函數節點集合
• 算數運算:「ADD」、「Abst」、「Mult」和「Over」。
• 實 數 函 數 : 「 Norm 」 、 「 Max 」 、 「 Min 」 、 「 Lag 」 、 「 Avg 」 、
「ROC」和「RSI」。 • 邏輯運算:「AND」、「OR」和「NOT」。 • 比較運算:「More」和「Less」。 • 條件運算:「B_if」、「R_if」。 在終端節點集合中,日數常數用作實數函數中除了「Norm」以外的引數,代表引 入函數所需計算的日數,由於考慮到實務上技術指標類的函數經常被引用的日數,所 以訂定250為其合理上限;隨機常數是算數運算以及「Norm」會使用的運算元,由於 參考經過調整後本研究的資料範圍,所以將隨機常數範圍訂為0~2;布林常數是邏輯 運算以及條件運算中都有可能出現的運算元,「True」和「Fals」被取樣的機會各半; 收盤價變數為本研究中唯一引入代表問題特性的變數,由於原始收盤價並不符合本研 究所能接受資料的尺度,因此把當日收盤價除以前30日收盤價的移動平均值後得到的 資料就是「Pric」,當選用的日數越多,「Pric」曲線會和原始收盤價曲線差異越大, 其散佈在1以外的範圍也越大。 函數節點集合的元素依其特性不同可能需要一至三個引數或敘述,這些敘述可以 是 算 數 運 算 或 邏 輯 運 算 的 子 樹 。 算 數 運 算 的 「 ADD 」 、 「 Abst 」 、 「 Mult 」 和 「Over」依次代表加法、減法、乘法和除法運算,通常以隨機常數或輸出為實數的子 樹為其運算元。當加法、減法、乘法和除法運算的結果超出0~2的範圍時就回傳0或 2,唯獨在除法運算中當除數為0就回傳被除數,也就是把除數當作1;實數函數中的 「 Norm」 會 回 傳 以 隨 機 常 數 或 輸 出 為 實 數 的 子 樹 為 其 運 算 元 的 兩 數 的 絕 對值 , 「Max」、「Min」、「Lag」、「Avg」、「ROC」和「RSI」以日數常數為引數,搭 配收盤價輸入,就可以依次得到數日中收盤價的最大值、數日中收盤價的最小值、數 日前的收盤價、數日如式(3-5)定義的移動平均、數日如式(3-8)定義的動量變化率指標 以及數日如式(3-14)定義的相對強弱指數,另外為了統一尺度,在「ROC」的計算中會 把(3-7)計算出的值會再加上1,在「RSI」的計算中會把式(3-13)用以改變尺度的100換 成2;邏輯運算中的「AND」、「OR」需要兩個運算元,其運算元可以是以布林值為 29
輸出的邏輯運算、比較運算、條件運算、或布林常數,「NOT」只需要一個運算元, 其運算元可以是任何以布林值為輸出的子樹或是布林常數;比較運算需要兩個運算 元,其運算元可以是任何以實數值為輸出的子樹或是隨機常數,特別的是比較運算的 輸出是布林常數,因此常用作實數值與布林值溝通的橋樑;條件運算需要三個運算 元,其運算元組成較具彈性:「B_if」以布林值為輸出,其三個運算元必須是以布林值 為輸出的子樹或是布林常數,當上層敘述為真,「B_if」會回傳中層敘述所計算出的布 林值,否則回傳下層敘述所計算出的布林值;「R_if」的運作原理和「B_if」極為相 似,差別在於中層和下層的敘述為回傳實數值的子樹或隨機常數,當上層敘述為真, 「R_if」會回傳中層敘述所計算出的實數值,否則回傳下層敘述所計算出的實數值。 顯然地,如果不加以限制,終端和函數節點集合的元素在交錯搭配下必定會違反 遺傳程式規劃中必須滿足封閉性的假設,也就是說邏輯運算的運算元不可以是回傳實 數值的算數運算,算數運算的運算元也不可以是布林常數,因此為了避免生成一個不 合邏輯也沒有意義的樹,規劃者就必須多費心思巧妙地安排終端和函數節點集合元素 的組合方式。因為樹的輸出為布林值,因此大致上可以觀察出算數運算和實數函數處 於樹狀架構的較低層級,邏輯運算和條件運算中的「B_if」位於樹狀架構的較高層級, 甚至位於根節點,比較運算和條件運算中的「R_if」則居中協調。 根據上述定義的終端和函數節點集合的元素就可以表示出實務上廣為使用的技術 交易法則,舉例來說,當黃金交叉發生時,會有一個關鍵子樹表示移動平均價小於當 日收盤價,如圖3.5(a);或是需搭配當日收盤價創60日新高才能做出判斷,如圖3.5(b): Less---Avg---200days | | ----Pric -AND---Less---Avg---200days | | | | | ----Pric | ---More---Pric | | ----Max---60days (a) (b) Less---Avg---200days | | ----Pric -AND---Less---Avg---200days | | | | | ----Pric | ---More---Pric | | ----Max---60days (a) (b) 圖 3.5 技術指標型交易策略 更複雜的情況如圖3.6所示,搭配條件運算後使得技術交易策略更為縝密:
-NOT---B_if---Less---0.79 | | | | | ----Mult---0.88 | | | | | ---Min---10days | ----Less---Lag---80days | | | | | ----0.79 | ----Less---0.88 | | ----1.6 圖 3.6 引入條件運算的技術交易法則
3.3
適存度評估
遺傳程式規劃中最主要是靠適存度函數來執行天擇的動作,在決定個體優劣的過 程中,往往由於機器學習(machine learning)演算法的本質而產生過適現象(overfitting), 本研究中主要使用交叉驗證(cross validation)的方法來避免過適現象的出現,另一方 面,適存度函數的計算方式必須建立在技術交易法則輔助型買進觀望策略(technical trading rule assisted buy-and-hold strategy)之上,節3.3.2先介紹適存度函數,技術交易法 則輔助型買進觀望策略將留待在節3.4.1中作介紹,如此在遺傳程式規劃最具畫龍點睛 與代表性的要素就已兼備。3.3.1
過適現象迴避
過適現象之於遺傳程式規劃,就像過度學習(over learning)或過度訓練(over training) 之於資料探勘(data mining)與類神經網路(neural network),是一種導因於機器學習方法 的本質而在某個時間點之後產生所用模型將訓練資料(training data)獨有的古怪特質記憶 住,以致於無法顯現出非訓練資料,或說是整體訓練目標一般性特質的一種現象,換 句話說,在目標市場尋找交易法則的問題中,一個經由遺傳程式規劃尋找交易策略的 過程,其實就是在建立一個市場可獲利部分特性的模型,因此我們希望藉由訓練資料 學習到目標市場的一般化特性以預期未來將此獲利模型應用到以後不可見的資料時也 照樣能獲利。在自然生存法則中,產生過適現象的個體將不可能長期存活,舉例來 31