---
# System prepended metadata

title: April Concall

---

# April Concall

### P28
首先，先來介紹Reinforcement learning的主要概念。在Reinforcement learning中，會細分成agent以及Environment。
agent在與Environment的互動過程中，agent會在Environment中採取acion，而Environment會回傳一個reward給agent學習，除此之外，agent也會重新觀察Environment是否有發生變化。Reinforcement learning的目標是希望讓agent能夠學習到，在不同的環境下，採取不同的行動，以取得最大化的利益。

### P29
那為什麼要在配對交易中使用RL呢？根據Rad在2016年的研究中發現，在空頭市場時，因為波動變大，因此有利於配對交易的進行。
而根據昭憲學長在2019年的研究指出，0050與0051ETF成本股配對交易的報酬與加權指樹報酬呈現負相關。
因此我們希望說，我們先將盤勢進行分類，然後藉由RL的幫助，希望能夠學習到，在不同的狀態下，選用不同的開倉停損門檻，能夠提升配對交易的績效。

### P30
因此要進行RL的訓練前，我們要先將盤勢進行分類。而我們分類的依據主要是根據昭憲學長的研究成果。
這張表格主要是在描述，在選定不同自變數x下，和應變數y的線性回歸。而我們的應變數y為"配對交易報酬"。我們可以看到回歸式三中，自變數定義為TWReturn，也就是加權指數近60天的報酬。可以看到TWReturn與配對交易報酬是有顯著負相關的。因此我們的分類就採用回歸式三。

### P31
在分類過程中，使用的是加權指數10分鐘K棒的收盤價，接著定義X為近1620根加權指數的報酬率，定義Y為預測配對交易報酬可以由回歸式三得到Y = -0.0003+ -0.0013X。為甚麼事1620跟呢？是因為一天交易時間為270分鐘，所以一天會有27跟10分鐘K棒，而前面的回歸式三中使用到的是60天的加權指數報酬，所以是27*60=1620。
若Y>=0，即表示預測配對交易的報酬是正的，我們令他狀態=0
若Y<0，即表示預測配對交易的報酬是副的，我們令他狀態=-1

### P32
緊接著我們要定義我們的action，也就是開倉停損門檻。開倉門檻的設定從0.65-0.9，停損門檻的設定從1.25~2.5，此外增加一組不開倉的action，開倉門檻設定為20，停損門檻設定為30。因此總共會有6*6+1=37組action

### P33
而我們RL使用的演算法為Q-learning，Q-learning的主要作法是會儲存一個Q-table，而Q(s, a)的意義就是在s狀態下，採取a動作的q-value值為多少。當訓練完成後，以後只要遇到s狀態，就可以直接查我們的Q-table這個表，找出在s狀態下誰的Q-value最大，擁有最大Q-value的即為此狀態下最佳的action。
而q-learning演算法的流程為，假設在玩一場遊戲，一開始先初始化Q-table，遊戲開始後初始化目前的狀態，接著開始在這個環境中執行action，執行action完可以得到reward以及s'，得到reward後我們就能根據這條式子更新我們的Q-table，在此式中，alpha表示learning rate，gamma表示discount factor，r為我們的新reward。這個式子我們稍微整理一下後，可以得到此式子，而maxa'Q(s', a')為未來可能可以獲得的最大reward，我們將它乘上gamma，此gamma可以看做是折現，接著再加上我們獲得的reward，再乘上aplha。最後再和原始的Q-value值乘上(1-aplha)相加來更新我們的Q-value值。接著跟新我們的狀態，然後一值重複這個流程，直到這場遊戲結束，在開始下場遊戲。

### P34
接下來，我們設定配對交易為日內交易，捨棄掉前面16分鐘，將Formation period設定為150分鐘，Trading period設定為100分鐘。

### P35
而我們取2018年前面70%的資料當作我們的traing，後面30%當作testing。而因為我們目前的state以及action個數並不多，因此我們使用brute force的方式，也就是每天都將所有的action跑過一次。因此在training時，我們只需要在traing這個時間段跑一次。

### P36
因此整個trainging流程，可以簡化成此張流程圖，一開始Agent會依據policy選擇一個action，而在trainging時，我們的policy為brute force，接著進入到Formation period中，找尋兩檔股票是否擁有共整合關係，如果有，即進入Trading period，觀察序列是否有達到我們的開倉門檻，如果有的話，即會回傳reward以及state給我們的agent，而agent會使用q-learning的演算法，更新我們的policy。

### P37
在testing時，唯一的差別是在Agent的policy，在testing的policy中為根據之前訓練好的Q-table，根據目前的state選擇最好的action。

### P38
接下來是result的部分，首先先來解釋一下整個表格的意義，"RL"這排表示使用剛剛前面提到的方法，可以看到訓練出來的結果為，當預測配對交易為賠錢時，會直接使用不開倉的這個action，而當預測配對交易為賺錢時，開倉門檻為0.85倍標準差，停損門檻為2.5倍標準差。而"-1"這排表示使用預測配對交易為賠錢的action。"0"這排表示使用預測配對交易為賺錢的action。"RL(single state)"這排表示同樣使用RL訓練，但是不細分state，也就是所有的訓練資料都視為同一個state。可以看到在交易成本門檻為0.35%，手續費為0的設定下，RL的績效是可以打敗其他三種。因此可以知道使用RL，在不同的狀態下使用不同的開平倉門檻，績效是比使用固定的開平倉門檻還要好。

### P39
接著將交易成本門檻拉高到0.4%時，可以發現到說RL訓練出來的結果為完全不開倉。接著因為我們使用RL是希望能夠學習到，在不同的狀態下，能夠學習到不同的開倉停損門檻，因此我們將偵測結構性斷裂關閉，看RL是否能夠學習的比較好。

### P40
可以看到在交易成本門檻為0.35%，手續費為0，關閉偵測結構性斷裂的設定下，RL的績效為負的，輸給完全不開倉的。而若將交易成本門檻提高到0.4%，RL的績效同樣不理想，因此可以推論，結構性斷裂能夠有善的改善績效。