python数据分析-涨跌幅选股策略1 前言 涨跌幅选股策略是一种基于股票价格波动幅度来选择股票的投资方法。这种策略通过
疏影横斜水清浅,暗香浮动月黄昏。
1 前言
涨跌幅选股策略是一种基于股票价格波动幅度来选择股票的投资方法。这种策略通过分析股票在触发策略后的一定时间周期内的涨跌幅度,识别出潜在的投资机会。本文将使用 python
实现该策略并实现数据回测,测算其成功率和盈利情况。
2 选股模型
-
涨幅选股策略
:即股票触发一定的涨幅后买入,然后持有一定的周期,在周期持股内的盈利情况。 -
跌幅选股策略
:即股票触发一定的跌幅后买入,持有一定的周期,在该持股周期内的盈利情况。
通过涨幅选股可以判断追涨策略的成功率和盈利情况,通过跌幅选股策略可以判断抄底的策略成功率和盈利情况。涨幅选股策略的核心理念是寻找上涨趋势的股票,股票因为某个因素上涨,这个因素将持续影响股票的价格上行。跌幅选股策略的核心是在某个跌幅触发时介入,因为市场的波动导致价格偏离了价值,会随着时间的推移而进行价格修复。
针对股票和ETF(场内基金)的策略,其涨跌幅的设置是不同的,股票的波动比ETF更大一些,因此在设置涨跌幅阈值时要有所区别。
股票的波动浮动可以设置为 -4%,-3.5%,-3%, 3%,3.5%,4%
ETF的波动浮动可以设置为 -3%,-2.5%,-2%, 2%,2.5%,3%
如果选择个股票或者ETF的波动比较小,可以将阈值设置的更小一点儿(比如银行股,大盘宽基指数基金)。
3 策略实现
step1 抓取股票或者etf的k线数据,并将数据存储为 pandas 类型。
step2 计算k线的昨日收盘价以及当日的最大跌幅。
step3 循环所有的k线数据,如果最大跌幅超过其阈值,则继续计算其后续交易日的持有收益情况,持有期最长为 31 个交易日。
step4 计算所有的k线数据,统计其周期内所有的触发策略次数,持有期间的盈亏情况,以及最终的盈亏情况。
step5 将计算数据和持有盈亏情况存入数据库或者文件中。
如下图所示,可以组装请求参数,抓取 stock
的 kline
线数据,并且将数据转换为 pandas
。
读取数据并计算其昨日收盘价以及每天的最高涨幅和最大的跌幅,计算方式如下图所示:
如下的代码涨跌幅的选股核心策略,首先需要读取计算数据,并准备存储的数据,通过涨跌幅的判断方法judge_condition
来进行是否触发条件,然后计算该交易日的后续交易日,通过计算后续交易日的收盘价来和触发买入的价格进行比较,计算每个持有交易日的收益情况。
运行完成后,需要计算持有期间首次盈利的时间以及收益率,通过计算次数和总的触发次数判断其胜率,最后将期间数据输出,并且写入文件或者数据库中方便后续的数据分析。
4 策略运行
策略的运行需要指定运行的参数,主要是指定股票或者ETF代码以及设置阈值,这里使用的是跌幅策略。
# ETF 上证综指ETF 510760 触发阈值为 -1%
stm = stock_model(code="510760", name="上证综指ETF", threshold=-0.01, start="20210101")
stm.run_model()
如下图所示,即模型策略运行需要传入的所有参数:
下图所示,即上证综指ETF今年触发的时间以及买入的价格,白色底纹的即是持有期间的收益率情况。
5 策略分析
如下图所示,即是策略运行的结果分析:
针对2021-至今上证综指ETF的表现,如果以交易日触发1%跌幅即买入的策略,我们可以得出以下的结论:
1 期间一共触发策略 199次,买入后能够30天内能盈利的概率为 94%,平均持有 2.69天可以回本,最小可以收益率 0.01%,最大 4.62%,平均收益率为 0.68%。
2 如果持有到期,即买入后持有31个交易日,正收益概率为52%,负收益概率为47%,并且正收益平均值为4.5%,负收益平均值为 -3%。
总结一下,如果执行跌幅策略,就要在回本后即卖出,长期持有的胜率只有 52%。通过运行所有的ETF 基金通过历史数据的回测,可以找到最好表现的标的,同时可以设置不同的阈值来提高胜率。
6 总结
本文通过涨跌幅的策略,通过运行模型测算其盈利的概率和收益率情况,其模型可以适用于沪深上市的股票和ETF基金,通过数据分析和策略数据回测,为投资提供坚实的数据支撑。 相关代码已经上传至 github, 欢迎大家 star, 项目地址 fund_python。
转载自:https://juejin.cn/post/7410410146483060777