[心得] 以技术分析做程式交易操作(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