原创内容第800篇,专注量化投资、个人成长与财富自由。
今天的策略是基于波动率(通过归一化的ATR平均波幅)来选择ETF。
ATR可以帮助交易者判断市场是处于趋势状态还是盘整状。
-
趋势市场:当ATR上升时,表明市场波动性增加,可能是趋势延续的信号。交易者可以考虑在ATR上升时进入趋势方向的交易。
-
盘整市场:当ATR下降时,表明市场波动性降低,交易者可能选择避免交易或采用区间交易策略。
TR的计算方法如下:
首先计算每个周期的真实波幅(TR),TR是以下三者之间的最大值:
当期最高价与最低价之差(High - Low)
当期最高价与前一收盘价之差的绝对值(|High - Previous Close|)
当期最低价与前一收盘价之差的绝对值(|Low - Previous Close|)
然后,计算一定周期(通常为14天)内所有TR的平均值,即为ATR。
由于talib安装比较麻烦,因此我让deepseek用pandas直接写:
@calc_by_symbol def ATR(high, low, close, timeperiod=14): # 计算前一日收盘价,第一个元素为NaN prev_close = close.shift(1) # 计算三个波动值 tr1 = high - low tr2 = (high - prev_close).abs() tr3 = (low - prev_close).abs() # 计算真实波幅TR,当prev_close为NaN时(首日),仅取tr1 tr = pd.Series( np.where(prev_close.isna(), tr1, np.maximum(np.maximum(tr1, tr2), tr3)), index=high.index ) # 初始化ATR为TR的滚动平均值 atr = tr.rolling(window=timeperiod, min_periods=timeperiod).mean() # 使用Wilder's平滑方法计算后续ATR for i in range(timeperiod, len(tr)): if pd.isna(atr.iloc[i]): prev_atr = atr.iloc[i - 1] current_tr = tr.iloc[i] atr.iloc[i] = (prev_atr * (timeperiod - 1) + current_tr) / timeperiod return atr
完整的策略代码如下:
from bt_algos_extend import Task, Engine def ranking_ETFs(): t = Task() t.name = '均线能量行业轮动' # 排序 t.period = 'RunDaily' t.weight = 'WeighEqually' t.order_by_signal = 'ATR(high,low,close,10)/close' t.start_date = '20210101' t.symbols = [ '162411.SZ', # 华宝油气LOF' '159981.SZ', # 能源化工 '159980.SZ', # 有色 '518880.SH', # 黄金 '161226.SZ', # 白银 '159985.SZ', # 豆粕 # 跨境 '164824.SZ', # 印度 '159920.SZ', # 恒生 '513100.SH', # 纳指 '513080.SH', # 法国CAC40 '513030.SH', # 德国30 '513520.SH', # 日经 ] t.benchmark = '510300.SH' return t from config import DATA_DIR_QUOTES_INDEX res = Engine(path='quotes').run(ranking_ETFs()) import matplotlib.pyplot as plt print(res.stats) from matplotlib import rcParams rcParams['font.family'] = 'SimHei' # res.plot_weights() (res.prices.pct_change()+1).cumprod().plot() plt.show()
ATR一般是用于计算止损位置,不过高波动率也是市场趋势判断的状态之一,因此,这个策略就是使用ATR来判断趋势方向,效果还不错。
代码在如下位置 :
吾日三省吾身
01
重刷完《流星花园》,再刷一下《匆匆那年》对冲一下。
《流星花园》是懵懂青春,是公主和王子,梦幻的世界。
情啊爱啊,如此纯粹。
回过头看,青春啊,热血啊,普通人破局何其难。
《匆匆那年》就是一群普通人,一群热血少年,到普通中年的故事。
“不悔梦归处,只恨太匆匆”。
那些年,还没有来得及说的话,也许这辈子也不会再说了。
年少时,总觉得未来很好,有那么一天,以胜利者的姿态,王者归来。
蝴蝶飞不过沧海,是沧海那边没有了等待。
欲买桂花同载酒,终不似,少年游。
02
无论是deepseek还是《哪吒2》的成功,都深刻体现出一个道理:做生产者的时代来临。
不必费心去连接,你修炼好自己的内功,然后做出自己作品,自然会被人看到,就是这样。
认知的提升完全可以通过海量阅读、深度思考来获得。
这对于i人是一个巨大的利好。
不必要什么口齿伶俐,所谓情商高,会说话之类的,将不是核心技能,把心思放在长期主义,能力提升和创造上。
代码和数据下载:AI量化实验室——2025量化投资的星辰大海
AI量化实验室 星球,已经运行三年多,1400+会员。
aitrader代码,因子表达式引擎、遗传算法(Deap)因子挖掘引擎等,支持vnpy,qlib,backtrader和bt引擎,内置多个年化30%+的策略,每周五迭代一次,代码和数据在星球全部开源。
扩展 • 历史文章
EarnMore(赚得更多)基于RL的投资组合管理框架:一致的股票表示,可定制股票池管理。(附论文+代码)
deap系统重构,再新增一个新的因子,年化39.1%,卡玛提升至2.76(附python代码)
deap时间序列函数补充,挖掘出年化39.12%的轮动因子,卡玛比率2.52
年化19.3%,回撤仅8%的实盘策略,以及backtrader整合CTPBee做实盘(附python代码和数据)
近四年年化收益19.3%,而最大回撤仅8%,卡玛比率2.34,投资应该是一件简单的事情。(附python代码+数据)