在打造策略之前,決定先參考看看別人的策略成果如何,
這次先選擇了樂活大叔 只買4支股,年賺18% 書中提到的選股方式來做個回測試試看。
策略說明
樂活大叔的策略是多頭市場時,
加權指數 K<20 買進 K>80 賣出,
為了方便起見本文就直接使用 0050 的K值
接著做一些假設,方便回測:
- 以本金100萬投入市場
- 當日 0050 K<20,以收盤價格買入1張,持續買進至沒錢為止
- 當日 0050 K>80,以收盤價格賣出1張,持續賣出至沒股票為止
- 計算期間 2019/01/01 - 2019/12/31
計算KD值
利用上一篇 用 C# .NET Core 自動爬取台股每日股價 得到的資料
直接從資料庫取得0050的股價並做KD計算
安裝套件
1 | dotnet add package TA-Lib --version 0.5.0.3 |
這裡直接使用TA-Lib套件中的 Stoch 來計算 KD 值
程式部分
這裡直接使用台股一般選用的參數(9,3,3)
如果不了解參數的意義,可以參考 => 什麼是『KD』?
1 | IEnumerable<Stock> _stockList = _stockRepository.GetStocks(stockQuery); // 從資料庫抓資料,詳細內容省略 |
這樣我們就可以得到計算後的KD值,不過這裡要注意的是 outSlowK、outSlowD 沒有前12天的資料,所以也不會進行交易
另外這邊算出來的KD值應該會和市面上的看盤軟體不太一樣,畢竟KD值還和前幾天的資料有關,開始計算的時間點不一樣,值應該也會不同,很合理!
接著我們要篩選出符合 K<20 和 K>80 的index
1 | public List<int> K_BiggerThan(List<int> indexList, double value) |
利用index篩選出買入和賣出的資料
1 | var buyStockList = K_SmallerThan(indexList).Select(index => _stockList[index + 12]); |
接著我們直接來看看結果
結果
日期 | 價格 | 訊號 | 實際 | 持有 | 股票資產 | 現金資產 |
---|---|---|---|---|---|---|
2019/01/18 | 75.95 | 賣出 | 0 | 0 | 1000000 | |
2019/01/21 | 76.5 | 賣出 | 0 | 0 | 1000000 | |
2019/01/24 | 74.05 | 買進 | 買進1張 | 1 | 74050 | 925950 |
2019/01/25 | 75 | 買進 | 買進1張 | 2 | 150000 | 850950 |
2019/02/14 | 75.25 | 賣出 | 賣出1張 | 1 | 75250 | 926200 |
2019/02/20 | 76.35 | 賣出 | 賣出1張 | 0 | 0 | 1002550 |
2019/02/21 | 77.1 | 賣出 | 0 | 0 | 1002550 | |
2019/02/22 | 76.95 | 賣出 | 0 | 0 | 1002550 | |
2019/02/25 | 77.5 | 賣出 | 0 | 0 | 1002550 | |
2019/02/26 | 77.7 | 賣出 | 0 | 0 | 1002550 | |
2019/02/27 | 77.65 | 賣出 | 0 | 0 | 1002550 | |
2019/03/04 | 76.95 | 賣出 | 0 | 0 | 1002550 | |
2019/03/11 | 76.15 | 買進 | 買進1張 | 1 | 76150 | 926400 |
2019/03/18 | 78.1 | 賣出 | 賣出1張 | 0 | 0 | 1004500 |
2019/03/19 | 78.4 | 賣出 | 0 | 0 | 1004500 | |
2019/03/20 | 78.5 | 賣出 | 0 | 0 | 1004500 | |
2019/03/21 | 79.15 | 賣出 | 0 | 0 | 1004500 | |
2019/03/22 | 79.35 | 賣出 | 0 | 0 | 1004500 | |
2019/04/03 | 80.15 | 賣出 | 0 | 0 | 1004500 | |
2019/04/08 | 80.9 | 賣出 | 0 | 0 | 1004500 | |
2019/04/09 | 81.4 | 賣出 | 0 | 0 | 1004500 | |
2019/04/10 | 81.5 | 賣出 | 0 | 0 | 1004500 | |
2019/04/11 | 81.15 | 賣出 | 0 | 0 | 1004500 | |
2019/04/12 | 81.1 | 賣出 | 0 | 0 | 1004500 | |
2019/04/15 | 81.85 | 賣出 | 0 | 0 | 1004500 | |
2019/04/16 | 82.1 | 賣出 | 0 | 0 | 1004500 | |
2019/04/17 | 82.75 | 賣出 | 0 | 0 | 1004500 | |
2019/04/18 | 82.7 | 賣出 | 0 | 0 | 1004500 | |
2019/04/19 | 82.8 | 賣出 | 0 | 0 | 1004500 | |
2019/04/25 | 83.4 | 賣出 | 0 | 0 | 1004500 | |
2019/05/13 | 80.15 | 買進 | 買進1張 | 1 | 80150 | 924350 |
2019/05/14 | 79.65 | 買進 | 買進1張 | 2 | 159300 | 844700 |
2019/05/15 | 79.75 | 買進 | 買進1張 | 3 | 239250 | 764950 |
2019/05/16 | 79.05 | 買進 | 買進1張 | 4 | 316200 | 685900 |
2019/05/17 | 78.25 | 買進 | 買進1張 | 5 | 391250 | 607650 |
2019/05/20 | 78.2 | 買進 | 買進1張 | 6 | 469200 | 529450 |
2019/05/21 | 78.4 | 買進 | 買進1張 | 7 | 548800 | 451050 |
2019/05/22 | 78.4 | 買進 | 買進1張 | 8 | 627200 | 372650 |
2019/05/23 | 76.95 | 買進 | 買進1張 | 9 | 692550 | 295700 |
2019/05/24 | 77.35 | 買進 | 買進1張 | 10 | 773500 | 218350 |
2019/05/27 | 77.15 | 買進 | 買進1張 | 11 | 848650 | 141200 |
2019/05/28 | 77.1 | 買進 | 買進1張 | 12 | 925200 | 64100 |
2019/05/29 | 76.75 | 買進 | 12 | 921000 | 64100 | |
2019/06/04 | 78.05 | 賣出 | 賣出1張 | 11 | 858550 | 142150 |
2019/06/05 | 78.3 | 賣出 | 賣出1張 | 10 | 783000 | 220450 |
2019/06/11 | 79.4 | 賣出 | 賣出1張 | 9 | 714600 | 299850 |
2019/06/12 | 79.7 | 賣出 | 賣出1張 | 8 | 637600 | 379550 |
2019/06/13 | 79.05 | 賣出 | 賣出1張 | 7 | 553350 | 458600 |
2019/06/20 | 80.85 | 賣出 | 賣出1張 | 6 | 485100 | 539450 |
2019/06/21 | 80.85 | 賣出 | 賣出1張 | 5 | 404250 | 620300 |
2019/06/24 | 81.2 | 賣出 | 賣出1張 | 4 | 324800 | 701500 |
2019/06/25 | 80.75 | 賣出 | 賣出1張 | 3 | 242250 | 782250 |
2019/06/27 | 81.5 | 賣出 | 賣出1張 | 2 | 163000 | 863750 |
2019/07/01 | 82.65 | 賣出 | 賣出1張 | 1 | 82650 | 946400 |
2019/07/02 | 82.45 | 賣出 | 賣出1張 | 0 | 0 | 1028850 |
2019/07/15 | 83.2 | 賣出 | 0 | 0 | 1028850 | |
2019/07/16 | 83.35 | 賣出 | 0 | 0 | 1028850 | |
2019/07/17 | 82.8 | 賣出 | 0 | 0 | 1028850 | |
2019/07/23 | 83.6 | 賣出 | 0 | 0 | 1028850 | |
2019/07/24 | 83.55 | 賣出 | 0 | 0 | 1028850 | |
2019/07/25 | 83.8 | 賣出 | 0 | 0 | 1028850 | |
2019/08/02 | 80.95 | 買進 | 買進1張 | 1 | 80950 | 947900 |
2019/08/05 | 80.15 | 買進 | 買進1張 | 2 | 160300 | 867750 |
2019/08/06 | 80.1 | 買進 | 買進1張 | 3 | 240300 | 787650 |
2019/08/07 | 79.7 | 買進 | 買進1張 | 4 | 318800 | 707950 |
2019/08/20 | 81 | 賣出 | 賣出1張 | 3 | 243000 | 788950 |
2019/08/21 | 81.1 | 賣出 | 賣出1張 | 2 | 162200 | 870050 |
2019/08/22 | 80.9 | 賣出 | 賣出1張 | 1 | 80900 | 950950 |
2019/08/23 | 81 | 賣出 | 賣出1張 | 0 | 0 | 1031950 |
2019/09/02 | 81.9 | 賣出 | 0 | 0 | 1031950 | |
2019/09/03 | 81.2 | 賣出 | 0 | 0 | 1031950 | |
2019/09/04 | 82.15 | 賣出 | 0 | 0 | 1031950 | |
2019/09/05 | 83 | 賣出 | 0 | 0 | 1031950 | |
2019/09/06 | 83.5 | 賣出 | 0 | 0 | 1031950 | |
2019/09/09 | 83.8 | 賣出 | 0 | 0 | 1031950 | |
2019/09/10 | 83.4 | 賣出 | 0 | 0 | 1031950 | |
2019/09/11 | 83.45 | 賣出 | 0 | 0 | 1031950 | |
2019/09/12 | 83.9 | 賣出 | 0 | 0 | 1031950 | |
2019/09/16 | 84.4 | 賣出 | 0 | 0 | 1031950 | |
2019/09/17 | 84.25 | 賣出 | 0 | 0 | 1031950 | |
2019/09/18 | 84.95 | 賣出 | 0 | 0 | 1031950 | |
2019/09/19 | 84.45 | 賣出 | 0 | 0 | 1031950 | |
2019/10/14 | 87.55 | 賣出 | 0 | 0 | 1031950 | |
2019/10/15 | 87.7 | 賣出 | 0 | 0 | 1031950 | |
2019/10/16 | 88.1 | 賣出 | 0 | 0 | 1031950 | |
2019/10/17 | 88.15 | 賣出 | 0 | 0 | 1031950 | |
2019/10/18 | 87.95 | 賣出 | 0 | 0 | 1031950 | |
2019/10/21 | 87.85 | 賣出 | 0 | 0 | 1031950 | |
2019/10/22 | 88.7 | 賣出 | 0 | 0 | 1031950 | |
2019/10/23 | 88.45 | 賣出 | 0 | 0 | 1031950 | |
2019/10/24 | 88.8 | 賣出 | 0 | 0 | 1031950 | |
2019/10/25 | 88.8 | 賣出 | 0 | 0 | 1031950 | |
2019/10/28 | 89.2 | 賣出 | 0 | 0 | 1031950 | |
2019/10/29 | 89.45 | 賣出 | 0 | 0 | 1031950 | |
2019/10/30 | 89.85 | 賣出 | 0 | 0 | 1031950 | |
2019/10/31 | 90.1 | 賣出 | 0 | 0 | 1031950 | |
2019/11/01 | 90.1 | 賣出 | 0 | 0 | 1031950 | |
2019/11/04 | 92.2 | 賣出 | 0 | 0 | 1031950 | |
2019/11/05 | 92.9 | 賣出 | 0 | 0 | 1031950 | |
2019/11/06 | 93.35 | 賣出 | 0 | 0 | 1031950 | |
2019/11/07 | 92.85 | 賣出 | 0 | 0 | 1031950 | |
2019/11/08 | 92.55 | 賣出 | 0 | 0 | 1031950 | |
2019/11/20 | 93.25 | 賣出 | 0 | 0 | 1031950 | |
2019/11/21 | 92.5 | 賣出 | 0 | 0 | 1031950 | |
2019/12/09 | 93.65 | 賣出 | 0 | 0 | 1031950 | |
2019/12/11 | 93.75 | 賣出 | 0 | 0 | 1031950 | |
2019/12/12 | 95.85 | 賣出 | 0 | 0 | 1031950 | |
2019/12/13 | 96.9 | 賣出 | 0 | 0 | 1031950 | |
2019/12/16 | 96.85 | 賣出 | 0 | 0 | 1031950 | |
2019/12/17 | 98.15 | 賣出 | 0 | 0 | 1031950 | |
2019/12/18 | 98.2 | 賣出 | 0 | 0 | 1031950 | |
2019/12/19 | 97.65 | 賣出 | 0 | 0 | 1031950 | |
2019/12/20 | 96.95 | 賣出 | 0 | 0 | 1031950 | |
2019/12/23 | 97.15 | 賣出 | 0 | 0 | 1031950 |
心得
從結果來看,最後的本金大概是103萬多一些,大約是3%的報酬率,
我嘗試將本金下降到50萬,結果報酬率更差,
又嘗試將本金調升到200萬,對績效也幾乎沒有什麼太大的影響。
也許分批買進的方式可以再調整,但個人認為對於提升報酬率的效果應該有限。
回顧一下歷史線圖,2019年應該算是有一波大多頭行情,此策略並沒有辦法在大多頭行情中得到太多好處,
不過樂活大叔提倡的是用最簡單的方式來交易,比起績效,樂活人生可能比較重要一些,
如果是要追求更高的報酬率,應該可以找出更好的策略才對!
↓↓↓ 如果喜歡我的文章,可以幫我按個Like! ↓↓↓
>> 或者,請我喝杯咖啡,這樣我會更有動力唷! <<<
街口支付
街口帳號: 901061546