• 沒有找到結果。

3. 研究方法

3.4 遺傳演算法

本研究中因牽涉到選取最佳的技術指標模型、最佳化參數,故採用一種廣泛被使用的 演算法即是 Holland [19]所提出之遺傳演算法來處理本研究中最佳化的問題。

3.4.1 演化流程

遺傳演算法是依據達爾文的物競天擇說,模仿生物學的演化過程,經由選擇親代、交 配及突變進而產生子代等機制,不斷改進群體適應性的演算法。其中個體的適應性是利用 可克服當時生存環境定義的適應性函數(fitness function)來判定,適應值較佳的個體將有較 高的機會被選擇成為親代以產生子代,其演算法簡易流程步驟如下:

(1) 隨機產生一組有 x 個個體的初始族群,每個個體各自存在 n-bits 的遺傳型基因(染色體),定義如下:

𝐴 = {𝐶1, 𝐶2, ⋯ , 𝐶𝑥}, 𝑥 ∈ 𝑁; 𝐶𝑥 = {𝐷1, 𝐷2, ⋯ , 𝐷𝑛}, 𝐷𝑛 ∈ {0,1}. (28)

A 表示由 x 個個體所組成的群組,𝐶𝑥代表第 x 個體,𝐷𝑛則代表在某個體中的一個編碼

數,在二進位的表示法中其值為 0 或 1。

(2) 評估每個個體的適應性強度,在本文中我們會根據 3.3 節所定義的績效指標作為染色 體的適應值。

(3) 依序選擇親代、交配及異變,經不斷重複運算直到有 x 個後代子孫被產生。

(4) 以新產生 x 個的子孫取代原有 x 個個體的族群,成為一個新族群。

(5) 回到(2),直到終止條件發生為止。

依序上述步驟可歸類出遺傳演算法演化步驟流程,如圖 3.1 所示。

判斷演算法停止計算的條件一般可透過三種方法:(1)判斷是否收斂:設定收斂值門檻,

一旦到達門檻即可停止執行演算法。(2)訂定終止世代:設定系統執行到特定世代便停止進 行演算法。(3)時間決定:預設演算法可執行時間,到達時間便停止運算。

圖 3.1. 遺傳演算法演化步驟

3.4.2 編碼方式

本研究基本資料設定為交配機率(crossover rate)為0.7,突變機率(mutation rate)則為

0.005,染色體數量為50條並採取二進位編碼。篩選機制則採用競賽選擇法[6]。

圖3.2為一染色體中所含各參數示意圖,每一條染色體內皆含有7種不同參數;參數由 左至右分別為風險乘數(m)、要保額度(f)、進場策略、MA值、短MA值、長MA值、離差值,

值域範圍依序介紹如下:

圖3.2. 染色體編碼

其中每一個𝑑1⋯ 𝑑𝑁利用內插法的方式將原本50位元的2進位編碼轉成固定的值域範圍 的數值,各種不同參數的值域範圍如下所示:

(1) 風險乘數(m):值域範圍為0.01至9;

(2) 要保額度(f):值域範圍為0至1;

(3) 進場策略:我們使用的技術指標有共有7種:移動平均線(MA),研究中還區分為價格突破 與斜率轉折兩種、乖離率(bias)、指數平滑移動平均線(EMA)、隨機指標(KD)、指數平 滑異同移動平均線(MACD)以及固定交易日其等;

(4) MA值:移動平均法所需MA天數,值域範圍為2-200;

(5) 短MA值:此為MACD與EMA所需參數,值域範圍為2至200;

(6) 長MA值:此為MACD與EMA所需參數,值域範圍為2至200;

(7) 離差值(DIF):此為MACD策略所需參數,值域範圍為2-200。

本文利用上述架構為基礎,針對不同適應性函數(fitness)之定義進行探討。

3.4.3 交配與突變

於本研究中突變與交配所採用方式為 Goldberg 和 Deb [15]於 1991 年提出的競賽選取 法(tournament selection),以 2 進制編碼產生 50 條染色體,從中隨機選擇 2 條染色體來競 爭選出優秀的親代,進行多次的競賽直到選出足夠的親代,再進行交配與突變。

交配方式為將 2 個染色體設為親代,經過將染色體互換方式產生出含有親代部分特性 的子代,在本研究中我們使用由 1993 年 De Jong 和 Spears [12]提出的單點交配的方式,交 配步驟如下:

(1) 將 50 條染色體任意選擇 2 條𝐹𝐷𝑥、𝐹𝐷𝑦作為親代,定義如下:

𝐹𝐷𝑥 = {𝐷1𝑥, 𝐷2𝑥, ⋯ 𝐷𝑛−1𝑥 , 𝐷𝑛𝑥}; 𝐷𝑛𝑥 ∈ {0,1}; 𝑛 ∈ 𝑁, 𝐹𝐷𝑦 = {𝐷1𝑦, 𝐷2𝑦, ⋯ 𝐷𝑛−1𝑦 , 𝐷𝑛𝑦}; 𝐷𝑛𝑦 ∈ {0,1}; 𝑛 ∈ 𝑁.

(29)

(2) 任意選擇某一點 i 作為交配點,將親代𝐹𝐷𝑥、𝐹𝐷𝑦依 i 點區分為兩部分並進行交配如圖 3.3 進而產生子代𝑆𝐷𝑥、𝑆𝐷𝑦。其公式如下:

𝑆𝐷𝑥 = {𝐷1𝑥, 𝐷2𝑥, ⋯ , 𝐷𝑖𝑥, 𝐷𝑖+1𝑦 , ⋯ , 𝐷𝑛−1𝑦 , 𝐷𝑛𝑦}; 𝐷𝑛𝑥 ∈ {0,1}; 𝑛 ∈ 𝑁 , 𝑆𝐷𝑦 = {𝐷1𝑦, 𝐷2𝑦, ⋯ , 𝐷𝑖𝑦, 𝐷𝑖+1𝑥 , ⋯ , 𝐷𝑛−1𝑥 , 𝐷𝑛𝑥}; 𝐷𝑛𝑥 ∈ {0,1}; 𝑛 ∈ 𝑁.

(30)

圖 3.3. 遺傳演算法之交配示意圖

突變為針對交配後所產生的每一子代染色體中任一點進行反轉,在本研究中即為 0 轉 為 1 或 1 轉為 0。在合理的突變範圍內可使避免區域最佳解。若突變機率設定過高則將使 遺傳演算法變成隨機演算法,其突變方式如圖 3.4 所示:

圖 3.4. 遺傳演算法之突變示意圖

相關文件