PTT推薦

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

看板Stock標題[心得] 以技術分析做程式交易操作(Part.4)作者
drazil
(在風雨飄搖的年代裡)
時間推噓14 推:14 噓:0 →:27

前文的連結
https://www.ptt.cc/Stock/M.1609662954.A.C44
https://www.ptt.cc/Stock/M.1613288438.A.178
https://www.ptt.cc/Stock/M.1617529021.A.0FC
https://www.ptt.cc/Stock/M.1632205662.A.512

之前寫過一些關於開發使用技術分析做程式輔助交易的心得
當初提到我的選股程式開發分成三個階段(或者世代)。
第一階段是技術線型選股
第二階段加上了進出場策略與績效回測
第三階段再加上資金管理與模擬
這篇則是想再補充一些資金模擬系統裡面關於選股評分的部分

一開始程式在第一與第二世代的時候並沒有對於選出來個股的評估機制
操作上就是程式選出來之後我再人工憑自己的感覺挑喜歡的去操作。
不過這個時候已經遇上在篩選門檻設定上選擇的問題
條件設太寬會出現太多看上去就覺得不會想做而且拉低回測績效的個股
條件設太嚴則會變成選出來的太少
還有一個也是門檻的問題,假設有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

圖 以技術分析做程式交易操作(Part.4)
看起來分數與績效有正相關性,公式姑且算是有用。接著
大波段斜率 https://i.imgur.com/cxLn4gn.png
圖 以技術分析做程式交易操作(Part.4)
離前高的距離 https://i.imgur.com/M6U0Aeo.png
圖 以技術分析做程式交易操作(Part.4)
平均成交值 https://i.imgur.com/qEJunSL.png
圖 以技術分析做程式交易操作(Part.4)
前兩個相關性看起來比較高所以權重給高一點
後兩個相關性看起來偏低所以權重給低一點
做完加權平均之後就長這樣
https://i.imgur.com/k0kdzg2.png
圖 以技術分析做程式交易操作(Part.4)
一個簡單的評分模型就完成了
接下來跑資金模擬的時候,就是每次操作都從分數最高的開始買起買到配額用完為止

同時這也解決了之前遇到的篩選門檻是要寬鬆還是要嚴格
以及出現其他都很好就是有一個門檻差一點點沒過的問題:
「我把每個篩選門檻通通調很低,選進來之後用分數再篩一次」

不過這個方法其實真的就很感覺是在想辦法去湊答案
從分數轉換公式到權重的分配,都是一直試再試,試到覺得回測看起來不錯為止
我也有在想也許有比這個更好的辦法,只是現階段我只想到這個方法,
而且這姑且也算是個還算有效的方法所以目前也就一直用著了

--

※ PTT留言評論
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 118.231.201.82 (臺灣)
PTT 網址

UltraSeven 06/22 23:29

SRNOB 06/22 23:36字太多 30字總結

「我遇到選股比持股配額還多的問題,所以弄了評估優先順序的模型」

neo5277 06/22 23:55你是想寫策略跟回測的話為什麼不用multichat,純粹好

neo5277 06/22 23:55奇考量是什麼?還是是要做論文啊?

在第二篇的回覆推文裡面有提到, 因為這個系統一開始不是寫來跑程式交易的 然後在前面的基礎上一直加新東西到後來變成一個完整系統後 也很難以移植到其他現成的應用工具去了 而且我是用C#寫的,如果晚個幾年才開始寫的話我應該會用Python….

sazabijiang 06/23 00:58其實貼對帳單就好

在前文連結的第四篇裡面有附一個用這個方法的模擬程式

https://reurl.cc/L7bxMX

Justisaac 06/23 03:51最後四行我覺得overfitting........

是說前面文章的推文裡面也一直有人提及overfitting的問題 我自己也覺得我的程式會有這個情況,到什麼程度的問題而已 所以我現在看待我自己的程式都預設他有overfitting的狀況 就是我確定他是有效的, 但是回測的結果可以參考但是不要真的太相信他真的這麼厲害.....

hsucheng 06/23 09:18這個有比用NN的強嗎

我還沒用過所以不知道耶 我正在開發第四世代,目前差不多收尾了。 等經過一段時間實戰驗證過後如果有時間的話我會再寫關於第四世代的心得 然後我在考慮是不是要在第五世代使用神經網路去做策略優化

carolgilbert06/23 10:18程式可以分享嗎?

請參考上面的連結

※ 編輯: drazil (118.231.201.82 臺灣), 06/23/2023 10:26:09 ※ 編輯: drazil (118.231.201.82 臺灣), 06/23/2023 10:27:43 ※ 編輯: drazil (118.231.201.82 臺灣), 06/23/2023 10:28:54

ProTrader 06/23 12:32分數轉換方法很多但多不一定好 用自己熟悉的最好

ProTrader 06/23 12:34初學者請慎重考慮要不要用商用軟體

ProTrader 06/23 12:37坦白說商用軟體能符合絕大多數人的需求

ProTrader 06/23 12:37只是想要賺錢的話 商用軟體用的好就很夠了

ProTrader 06/23 12:38我自己是到了能做論文的等級才覺得自己開發沒有虧

ProTrader 06/23 12:40自創的複雜演算法以及自己想要的資料整理方式

ProTrader 06/23 12:41商用軟體支援的終究有限不可能完美

ProTrader 06/23 12:44我在初級與中期甚至部分高階的開發 商用軟體都有

ProTrader 06/23 12:45所以 只是想賺錢的話 商用軟體就夠了而且CP值高

ProTrader 06/23 12:47但想走真正走出自己的道路還是要自行開發

ProTrader 06/23 12:49如果能人生重來我會先學好商用軟體再考慮自己開發

感謝分享 其實如果我跟人提及程式交易的話,我也都會說能先用現有的應用工具去開發就用, 不要學我整個系統自己從0建起來, 我自己會變成全部自己從頭做,一方面就如我前面講的, 一開始我只是想寫個交易日誌產生器,結果玩到後面歪過來的 另一方面我以前是念數學系,現在工作是軟體工程師 寫這種東西是老本行,甚至有點是當作興趣在寫的 (有時候我都自嘲白天上班寫C++,晚上跟假日休息時間在寫C#) 一般人真的要這樣搞那個成本跟代價太大了。 --------------------------------------------------------- 這邊推文應poker119要求刪除推文內容 ---------------------------------------------------------

※ 編輯: drazil (118.231.201.82 臺灣), 06/23/2023 16:56:33

pillowkiller06/23 18:18

sky22485816 06/23 22:20如果是從盈利的角度看用商用軟體確實比較好,也比

sky22485816 06/23 22:20較不用擔心工具寫錯的問題,但是自己寫我覺得有個

sky22485816 06/23 22:20好處就是會讓自己一直不斷的思考(反過來說就是一

sky22485816 06/23 22:20直不斷的懷疑自己),我覺得對我自己來說還是挺有

sky22485816 06/23 22:20幫助的

gtcw 06/23 22:25推推

ProTrader 06/23 23:29我當年作過簡單的機器學習專題(非NN)就自以為利害

ProTrader 06/23 23:30認為我作程式交易發大財是很簡單的事就開始DIY

ProTrader 06/23 23:32因為無知所以讓我有無所畏懼的勇氣

ProTrader 06/23 23:34商用軟體以及程式交易的知識初學當然是從填鴨開始

ProTrader 06/23 23:36入門後當然就要能對策略與結果評論檢討才能進步

ProTrader 06/23 23:39DIY就只能靠不斷的自我檢討反思改善來求進步

ProTrader 06/23 23:40若沒有跟別人比較 我覺得一但自己有盲點會很難發現

ProTrader 06/23 23:41然後就原地踏步直到發現盲點 這時間耗損很恐怖

ProTrader 06/23 23:44像我 作好作壞都曾經因為沒有發現而拖慢自己進度

ProTrader 06/23 23:45所以不管DIY或是商用 都需要跟自己也跟別人比較

說到這個,我在2021年中到今年初找到開發第四世代方向的靈感之前, 超過一年半的時間遇到了嚴重的瓶頸 就是現有模型的計算式跟參數調到後面優化的邊際效益越來越低 到後來無論怎麼嘗試優化,回測績效都無法再出現有效提升 自己關門起來摸索碰到這種事情的時候還蠻無力跟挫折的

patricktu 06/24 00:02NN沒有想像中強 overfit的程度超越你的想像

Hatewoman 06/24 02:27那.......有賺嗎?

呃,有喔...

poker119 06/24 07:56可以把我的推文部份修掉嗎 感謝

刪了

※ 編輯: drazil (118.231.201.82 臺灣), 06/24/2023 10:07:17 ※ 編輯: drazil (118.231.201.82 臺灣), 06/24/2023 10:15:39

ProTrader 06/24 13:07商用軟體的策略庫與別人論文可能有突破方法

ProTrader 06/24 13:08都沒有 就只能等柯南那種靈光一閃出現靈感