[心得] 以技術分析做程式交易操作(Part.4)

作者: drazil (在風雨飄搖的年代裡)   2023-06-22 23:12:29
前文的連結
https://www.ptt.cc/bbs/Stock/M.1609662954.A.C44.html
https://www.ptt.cc/bbs/Stock/M.1613288438.A.178.html
https://www.ptt.cc/bbs/Stock/M.1617529021.A.0FC.html
https://www.ptt.cc/bbs/Stock/M.1632205662.A.512.html
之前寫過一些關於開發使用技術分析做程式輔助交易的心得
當初提到我的選股程式開發分成三個階段(或者世代)。
第一階段是技術線型選股
第二階段加上了進出場策略與績效回測
第三階段再加上資金管理與模擬
這篇則是想再補充一些資金模擬系統裡面關於選股評分的部分
一開始程式在第一與第二世代的時候並沒有對於選出來個股的評估機制
操作上就是程式選出來之後我再人工憑自己的感覺挑喜歡的去操作。
不過這個時候已經遇上在篩選門檻設定上選擇的問題
條件設太寬會出現太多看上去就覺得不會想做而且拉低回測績效的個股
條件設太嚴則會變成選出來的太少
還有一個也是門檻的問題,假設有A、B兩支個股
A每個篩選指標都只稍微過門檻低空飛過
B是有一個差一點點沒過但是其他每個篩選指標都超過門檻一段距離
理論上B應該會比較好,但是卻是A會過B不過
接著在第三世代的程式,
也就是為了評估年化報酬率開始做資金模擬的時候就馬上遇到問題
因為買進持股配額是有限的(測試設定大約就5~10支)
當篩選出來的個股多於配額的時候就必須做出取捨
因此就需要一個對選出來個股做出排序的機制,於是就衍生發展出評分的系統
最直接的想法就是
對當初篩選的指標,想辦法弄出公式把他正規化成0~1區間,然後再做加權平均
例如之前那個資金模擬模擬程式用的前高突破選股第一個篩選指標:
「過去180個交易日最高價大於最低價1.2倍」
分數公式 score = Min(1.0, (max_value ÷ min_value - 1.0))
然後對分數做排序計算每個分數區間績效平均就可以得到這個圖表
https://i.imgur.com/PZ4S21v.png
看起來分數與績效有正相關性,公式姑且算是有用。接著
大波段斜率 https://i.imgur.com/cxLn4gn.png
離前高的距離 https://i.imgur.com/M6U0Aeo.png
平均成交值 https://i.imgur.com/qEJunSL.png
前兩個相關性看起來比較高所以權重給高一點
後兩個相關性看起來偏低所以權重給低一點
做完加權平均之後就長這樣
https://i.imgur.com/k0kdzg2.png
一個簡單的評分模型就完成了
接下來跑資金模擬的時候,就是每次操作都從分數最高的開始買起買到配額用完為止
同時這也解決了之前遇到的篩選門檻是要寬鬆還是要嚴格
以及出現其他都很好就是有一個門檻差一點點沒過的問題:
「我把每個篩選門檻通通調很低,選進來之後用分數再篩一次」
不過這個方法其實真的就很感覺是在想辦法去湊答案
從分數轉換公式到權重的分配,都是一直試再試,試到覺得回測看起來不錯為止
我也有在想也許有比這個更好的辦法,只是現階段我只想到這個方法,
而且這姑且也算是個還算有效的方法所以目前也就一直用著了
作者: carolgilbert (凱洛吉博)   2023-06-23 10:18:00
程式可以分享嗎?
作者: pillowkiller (pillow)   2023-06-23 18:18:00

Links booklink

Contact Us: admin [ a t ] ucptt.com