原创内容第660篇,专注量化投资、个人成长与财富自由。
咱们ailabx量化实验室的策略开发平台基本开发完成了,预计本周向星友们开放。
今天实现一个斜率策略:
斜率因子是:对数年化收益*R平方,计算公式比较复杂一点,大概的意思是:它使用历史数据、对数收益率、线性回归和 R² 统计分析,来为每个 ETF 计算一个综合得分。
@calc_by_symbol
def slope(close: pd.Series, d: int = 20):
def _slope(close):
y = np.log(close)
x = np.arange(y.size)
slope, intercept = np.polyfit(x, y, 1)
annualized_returns = math.pow(math.exp(slope), 250) - 1
r_squared = 1 - (sum((y - (slope * x + intercept)) ** 2) / ((len(y) - 1) * np.var(y, ddof=1)))
score = annualized_returns * r_squared
return score
score = close.rolling(window=d).apply(lambda sub: _slope(sub))
return score
年化31.5%,卡玛比率1.06,只轮动不择时。
策略代码:代码在如下位置:
t = Task()
t.name = '斜率轮动'
t.start_date = '20131230'
#t.end_date = '20240625'
t.names = ['slope_25']
t.fields = ['slope(close,25)']
# t.period = 'RunEveryNPeriods'
# t.period_days = 10
# 信号因子
#t.select_buy = ['ma_5>ma_20']
#t.select_sell = ['ma_5<=ma_20']
# 排序
t.order_by_signal = 'slope_25'
t.order_by_topK = 1
t.order_by_DESC = True
t.order_by_dropN = 0
t.symbols = [
'159934.SZ', #黄金ETF(大宗商品)
'513100.SH', #纳指100(美股科技)
'510300.SH', #沪深300ETf
'159915.SZ' #创业板ETF (A股成长)
]
res = Engine().run(t)
print(res.stats)
res.plot()
import matplotlib.pyplot as plt
trans = res.get_transactions()
trans.to_csv('trans.csv')
plt.show()
在网站在配置也是一样:
年化20%+的策略集与代码下载:AI量化实验室 星球,已经运行三年多,1100+会员。quantlab代码交付至5.X版本,含几十个策略源代码,因子表达式引擎、遗传算法(Deap)因子挖掘引擎等,每周五迭代一次。
《明朝那些事儿》的结尾,当年明月写徐霞客。
为了那个结论——人应该按自己喜欢的方式度过一生。
我想到的方式:“心无挂碍,寄情山水”。
“心无挂碍”,向内修心,允许一切发生,一切发生皆有利于我。、向外需求财务自由,被动收入。
寄情山水,读书,探索,创作。
作者:AI量化实验室(专注量化投资、个人成长与财富自由)