把投资当成科学问题来研究,同时也允许其艺术的一方面(开源回测系统代码+数据下载)

发布于: 雪球转发:0回复:0喜欢:0

原创文章第317篇,专注“个人成长与财富自由、世界运作的逻辑与投资"。

昨天晚上,灵感突发,在星球里写下的一段话,我觉得挺好。

对于量化新手,最有效的方式,去线上量化社区找看起来不错的策略,修改,优化。并不能指望直接能用,但策略思路是可以用借鉴的。 多看自己就有思路了。

我们的策略算子是可以积累的,因此写策略会越来越快。

进阶当然是金工研报,高阶就是金融前沿论文了。

还有一个就是社群交流,无论线上线下,多碰撞。

我们是把投资当成科学问题来研究的,尽管它有艺术的成份,这也是量化投资好玩之处,若是纯科研问题,那也是科学家的事情,普通人的机会有限。

上午尝试使用numba来改造RSRS的计算,看来没有成功。numba不支持pandas,连numpy的polyfit也不支持。

由于pandas不支持多序列的rolling,这个没办法,要么使用cython来重写,但代码的可读性和可维护性又堪忧,这个还需要再想想办法。

#@jit()
def _slope_pair(se_left, se_right, N=18, index=None):
slopes = []
R2 = []
# 计算斜率值
for i in range(len(se_left)):
if i < (N - 1):
slopes.append(np.nan)
R2.append(np.nan)
else:
x = se_right[i - N + 1:i + 1]
y = se_left[i - N + 1:i + 1]
slope, intercept = np.polyfit(x, y, 1)
#lr = LinearRegression().fit(np.array(x).reshape(-1, 1), y)
## y_pred = lr.predict(x.reshape(-1, 1))
#beta = lr.coef_[0]
# r2 = r2_score(y, y_pred)
slopes.append(slope)
# R2.append(r2)
slopes = pd.Series(slopes)
slopes.index = index
return slopes

策略的基础思路其实可以很多,现在可以做的事情是太多,而不是太少:

比如行业轮动:

策略示例采用第一种策略构建方法,利用行业动量设计策略。为了提高策略速度,以6个行业为例进行演示。

第一步:确定行业指数,获取行业指数收益率。
第二步:根据行业动量获取最佳行业指数。
第三步:在最佳行业中,选择最大市值的5支股票买入。

比如股票多因子策略:

第一步:获取股票市值以及账面市值比数据。
第二步:将股票按照各个因子进行排序分组,分组方法如上表所示。
第三步:依据式2式3,计算SMB、HML因子。
第四步:因子回归,计算alpha值。获取alpha最小并且小于0的10只的股票买入开仓。

不在浮沙筑高台,星球目前的计划是把回测引擎基础调稳定,然后把模块化算子补充完整,磨刀不误砍材功。

【实盘策略】18年至今总回报95%,最大回撤才10%,夏普比率和卡玛比率均超过1(策略代码+数据下载)

做一个年化50%的策略容易,但做出一个年化15%,但夏普超过1个策略不容易(代码+数据+优惠券)

【限时优惠200】知识星球与开源项目:万物之中,希望至美