建立自己的算法交易事业
文章平均质量分 84
以机器学习的视角,分解量化投资中面临的逐项挑战。从数据整理,到特征工程,模型选择调优等。从传统机器学习,时间序列分析,深度学习,强化学习等。最终希望建立自己的算法交易事业。
AI量化投资实验室
央企副总兼CTO,机器学习专家,算法交易践行者; MBA/CFA。开源项目:ailabx,在gittee上维护。
展开
-
lightGBM合成因子|对Alpha158因子集进行筛选,并做单因子分析(代码+数据)
第三个因子: CORD5(corr(close/shift(close,1), log(volume/shift(volume, 1)+1), 5)),5个收盘价与成交额背离(相关系数)接下来我们给单因子做分析,分的IC/IR值,进行对比,以及因子之间的相关性的分析,进一步论证其有效性。因些更需要科学的工具,咱们星球就是用科研的方式,如何科学的,流水线工厂的方式来挖掘因子。后续的工作就是找到那些高ic的因子,同时在模型里能有不错的表现的因子集。更多的因子分析,大家可以自己从星球取代码,试试看,找找感觉。原创 2024-01-23 14:38:38 · 982 阅读 · 0 评论 -
年化33.8%,夏普1.22:lightGBM在ETF行业模动上小试牛刀(附代码下载)。
今天做排序学习算法在ETF行业轮动上的策略,我们选用的DBDT框架是lightGBM,它的优点就是快且效果不错。原创文章第240篇,专注“个人成长与财富自由、世界运作的逻辑与投资"。闲庭独坐对闲花, 轻煮时光慢煮茶, 不问人间烟火事, 任凭岁月染霜华。return False # 需要继续处理。作为对比,如果我们把pred_score按最差的买入。结果是如下这样,也侧面印证我们排序的正确性。明天把alpha因子集扩充,然后加入。财富自由的生活,值得期待。原创 2023-06-13 11:35:42 · 916 阅读 · 0 评论 -
打造一个投资组合管理的金融强化学习环境
网上的金融学习环境不少,但都太过于“业余”,或者离像样的投资还差得太远。我一直觉得投资组合应该是必要的,不做投资组合,要控制回撤实在太难了,加上低相关多资产组合,对于投资而言,低层逻辑就是成立的。再加上一些规则也好,模型也罢,或者强化学习的加持,争取提升收益率。传入的参数actions是各标的的权重,按actions归一化为和为1的向量,计算新的投资组合收益率,计算新的组合价值。在finRL-meta里有投资组合分配的环境,今天结合咱们自己的AI量化平台,打造一个金融“投资组合管理”的学习环境。原创 2022-11-30 15:54:15 · 1262 阅读 · 1 评论 -
把backtrader改造成金融强化学习回测引擎
小时候,受到不公正的待遇,私下默默努力。看到有些平台,股票一个环境,加密货币一个环境,期货又是另一个环境,甚至把数据源处理都耦合到环境中,这是不对的。我们的AI量化平台,针对传统规则量化策略,进行了“积木式”的拆分,这种拆分的好处,就是最大化复用代码逻辑,这样开发策略又快且不容易出错。同样,我们也希望可以最大化复用之前的成果,把强化学习环境也整合到一起,我们就不必关心数据处理,回测系统等环节的处理。努力的意义是自由,财务自由就是你能离得开职场,进而不受地点的约束,而同样可以过上有品质的生活,你就是自由的。原创 2022-11-29 11:21:48 · 1507 阅读 · 0 评论 -
dataloader重构与keras入门体验
我们的目标是量化投资,把深度学习应用于量化,而不是研究深度学习细节本身,所以,能够最小代价满足我们的诉求是关键。数据加载器从数据库、csv文件或者hdf5存储格式中读取数据,通常是一个个symbol对应的时间序列数据,以pandas的dataframe的格式加载入内存。因子一多,计算量较大,每次启动都计算一次,影响效率,我们可以借助hdf5存储dataframe的能力,把计算好的因子与标注结果存储起来,下一次直接从缓存里加载。Keras的出现,大幅降低的tensorflow的使用门槛。原创 2022-11-27 13:11:46 · 1022 阅读 · 0 评论 -
机器学习模型与backtrader框架整合
排序算子,就是在候选池或者已选择的标的池里,按某一个因子顺序选择前K个,比如动量从大到小选前2支,或者按机器模型预估的分数值,选前面K支。这个算法类似qlib里的TopK,qlib的更复杂一些,它是针对全市场选股,为了保证流动性,会强调淘汰排名靠后的后5支,但原理是类似的。然后对数据进行预测,生成pred_score列。我们前面已经完成了数据标注,特征工程,数据集划分,模型准备,训练与评估等等。2、取当前日期的bar,对order_by字段进行排序(默认是升级,可以指定为降序)。否则使用整体资产候选池子。原创 2022-11-26 15:14:38 · 1297 阅读 · 0 评论 -
金融机器学习:数据集划分与baseline模型
其中一个常见的方法就是将已有数据集中保留一部分数据作为测试集,即将原有数据分为X_train, X_test,X_train用来训练模型,X_test用来验证调整模型。最常用的是按日期来选择,比如“2017-01-01”这一天之前的数据都将作为训练集,用于训练模型,而这一天之后的数据都作为测试集,也就是未来回测使用的时间区间。同样的数据集,最好的是随机森森,其实是lightGBM(未调参版本)。x_cols是所有的特征列,y_col的标签列,如果划分的日期为空的话,会按训练集80%计算出日期。原创 2022-11-25 18:15:16 · 1114 阅读 · 0 评论 -
深度强化学习+金融投资的应用入门
网上很多代码都把数据获取和预处理,都整合到强化学习的环境里,对于总体量化平台而言,这不利于代码的复用。智能体通过观察环境状态,选择相应的动作,执行动作后,从环境得到反馈。一个强化学习的环境要定义四个东西:状态空间,动作空间,reward函数以及状态obseravtion。状态空间就是智能体可以观察到的环境的维度,对于金融强化学习环境而言,就是因子的维度(特征的维度)。动作空间是智能体针对观察到的状态,可以采用的动作的维度,比如“买入”和“平仓”就是两个动作。# 根据传入的动作,计算奖励reward。原创 2022-11-24 18:13:44 · 1153 阅读 · 0 评论 -
ETF动量轮动+RSRS择时,RSRS修正标准分,回撤降至16%
动量与RSRS都是不错的东西,如何把它们有机整合起来,还需要再做更深层次的挖掘,结合真实交易背后的逻辑,实现订单与交易的情况进行分析。10年太长,那么沧海桑田,往前看三年,想想眼前面临的困难,纠结,担忧还算不算事?我们要做的,趁着这些时光,快速充实自己,在类似的黑天鹅出现时,不会再次陷入被动。其实很多时候,想骂人的话,想动的手,你让自己能冷静10秒钟,感觉不叫事;昨天看万维纲的《高手》,做决策的时候,10/10/10的理念,也就是想想自己10分钟,10个月,10年后对自己当前这个决策会怎么看。原创 2022-11-23 11:06:34 · 1414 阅读 · 0 评论 -
ETF轮动+RSRS择时,加上卡曼滤波:年化48.41%,夏普比1.89
如下是一些常用的ETF,包括宽基:上证50, 沪深300,创业板,创业板50,行业如医药,消费,红利,新能车等。在现实世界中,我们会交易指数对应的ETF而非指数,从理论上讲,收益只会更高,因为指数本身不包含分红之类的信息。'510050.SH', # 上证50ETF。'512120.SH', # 医药50ETF。'510880.SH', # 红利ETF。#'159928.SZ', # 中证消费ETF。#'512120.SH', # 医药50ETF。'510050.SH', # 上证50ETF。原创 2022-11-22 15:39:16 · 1628 阅读 · 1 评论 -
etf动量轮动+大盘择时:年化30%的策略
这里的动量定义为 20日收盘价的“斜率”——就是线性回归的斜率。然后RSRS(18,600)对市场择时,如果RSRS信号为buy,则按上述动量组合调仓,若RSRS信号为SELL,则平仓。logger.error('排序字段{}未计算'.format(self.order_by))大盘择时的逻辑为:若择时指标为“买”,则按原计划操作,若大盘择时为“卖”,则全部平仓退场。如果把“斜率”换成“20日ROC”,收益率小一点,但回撤大不少。动量定义为 20日收盘价的“斜率”——就是线性回归的斜率。原创 2022-11-21 16:59:51 · 2424 阅读 · 0 评论 -
alpha模型:打开量化投资的黑箱;附创业板布林带策略代码:年化15%。
巴菲特的老师格雷厄姆那个年代的价值投资比较纯粹,就是计算出公司的内在价值,然后算出价格的合理区间,若股价低于这个区间,则买入,反之卖出。二者看似矛盾,其实都有道理。量化投资比人工智能还难,人工智能面对的是“确定”的环境,而金融市场叠加了人的情绪的因素,它的“不确定性”呈指数级攀升。理论驱动的研究,就是我们现代科学运行的逻辑,我们知道宏观世界的牛顿力学,了解空气动力学,进而去制造和改进飞机,以满足我们不同场景下的需求。从数据准备,预处理,因子特征工程,因子分析,规则策略,模型,回测,指标分析,可视化等等。原创 2022-11-18 15:30:43 · 1036 阅读 · 1 评论 -
因子特征工程:alphalens库深度解析
而收益分析类似“回测”,即买入因子最高分位的收益率是多少,最低分位的收益率是多少,两者多空的利差是多少。可以看出来,IC值是每个截面的因子值与未来某期收益率的相关系数,然后对这个相关系数序列均值,标准差,偏度,峰度等等。这里的y是因子收益率,x是因子值,与IC不同,IC是两者之间的相关系数,而Alpha,Beta是二者之间的线性拟合。前面的文章我们把数据,因子定制,自动标注的功能都准备好了,今天继续因子分析,分析的框架当然还是alphalens。IC分析是其中最重要的,就是单因子与预期收益之间的相关关系。原创 2022-11-17 16:39:56 · 1620 阅读 · 0 评论 -
【每周研报复现】基于阻力支撑相对强度(RSRS)的市场择时
2、支持返回多个series,比如RSRS_betas, RSRS_r2,或者像布林带这种,一次可以返回上下两轨,不需要写两次。另外说一句,RSRS指标最近几年似乎不太行,而且官方后续的研报也证实了这一点。今天要复现的研报是:”光大证券_金融工程深度:基于阻力支撑相对强度(RSRS)的市场择时——技术择时系列报告之一“。我们目前的框架,把qlib的因子表达式的代码抽离出来,使用自己的hdf5存储,没有使用qlib自带的数据格式。年化19.1%,最大回撤50.6%,与研报(未计算交易成本)的结果类似。原创 2022-11-16 15:29:11 · 1451 阅读 · 0 评论 -
如何设计一个机器学习驱动的策略?
与传统机器学习随机抽样不同在于,由于我们需要在测试集在做“连续”的回测,所以不能把总体随机打乱取其中一部分,而是将期按比列分成两段。机器学习驱动的量化策略,与传统量化不同在于,它的交易信号是由模型给出,所以它需要遵守机器学习流程。对划分好的数据集,进行模型训练和预测,模型提供了两个函数,fit和predict,代码比较简法,就是从dataset中分别读取训练集和测试集,使用model进行训练和预测。文章里的交易信号是由规则给定的,若是交易信号由机器模型生成,则就是一个AI驱动的模型。今天我们主要还做这个。原创 2022-11-15 15:36:59 · 772 阅读 · 0 评论 -
整合:qlib的AI导向的框架与backtrader的事件驱动与实盘
当然,策略不是静态的,一劳永逸的东西,它是一个体系,需要可迭代会随市场自我进化,并不存在永恒的圣杯,这是金融与物理最大的差别。物理定律就在那里,你发现或者不发现,它都不会变,它就等着你去发现。我观察分析了一下,星球会员群里主要是两类用户,一类是工程师,算法专家等,熟悉python,对金融量化感兴趣;大家的需求有几个方面:首先是量化的知识体系,如何体系化的入门到精通,需要一个更加结构化的知识体系。从大的技术路线上来看,AI量化肯定是对的方向,这个不需要怀疑,只是所处的阶段,有多少能够落地这个需要时间来论证。原创 2022-11-10 15:39:14 · 1331 阅读 · 0 评论 -
AI量化与机器学习流程:从数据到模型
这个过程几乎是标准的,后来主要是添加更多、更好的因子,不同的标注方法,可以是分类也可以是连续的。同时,因子也可以做一些预处理,滤波之类的。金融量化注入到机器学习全流程中,主要就是数据预处理,因子计算,数据自动化标注,然后模型训练,模型预测等等。原创文章第99篇,专注“个人成长与财富自由、世界运作的逻辑, AI量化投资”。实现三个基准模型,分别为logistic回归、随机森森和SVM。第99篇了,第一个100篇原创小目标就要完成,非常好。这里得到特征工程及标注后的数据集,然后就是更好的,能力更强的模型。原创 2022-11-09 11:42:14 · 914 阅读 · 1 评论 -
【每周研报复现】AI量化特征工程之alphalens:一套用于分析 alpha 因子的通用工具
到这个函数有 2 个输入变量:股票的因子值(factor), 股票的价格(prices),以及 7 个参数变量:股票的行业分组(groupby),是否按行 业分组(by_group),分组个数(quantiles),直方图个数(bins),因子换手周期(periods),异常值阀值设定(filter_zscore),行业分组标签(groupby_labels)。首先,我们要做的就是数据的预处理。过去20天的动量值对于未来10天的收益是有正IC的,所以我们使用简单的20天动量的回测策略,着实收益还不错。原创 2022-11-08 18:13:50 · 1099 阅读 · 0 评论 -
因子特征工程:基于pandas和talib(代码)
后续要引入“因子表达式”,就是使用MACD($close,12,26,9)这样的公式,直接给数据做标注,因为机器学习需要使用的因子会非常多,手动代码费事,而且容易出错。昨天有同学留言,说能否更加成体系的梳理AI量化的相关知识体系,这个建议非常中肯,其实上周开始,在星球里已经这么做了。后面按照:数据准备、特征工程 , 投资组合优化,模型训练与调优,回测与实盘来展开AI量化的一个完整的工作流程。申请一个tushare的token。公众号是主题文章的形式,一般是想到哪就写到哪了,都是独立成篇,但确实难以成体系。原创 2022-11-07 17:02:39 · 1046 阅读 · 0 评论 -
AI量化(代码):深度强化学习DRL应用于金融量化
而类比人类的学习,我们不会拿1万张猫的图片让孩子学习什么是猫,一个小朋友也许只见过几只猫,他几乎可以认出各种图片的,抽象的,卡通的猫。所以有了alpha go, alpha master和alpha zero这样的围棋大师,然后它们的技能迁移的打战略游戏上,也是一等一的好手,都拜强化学习所赐。昨天我们讲的DNN的模式,我们是让模型学习过去的因子“预测”当天的收盘价的“涨跌”。我们学骑自行车,并不会用物理学的公式,去计算,人体和地面的角度,手臂要如何发力,而是骑就是了,自行车和地面给你反馈,你随之调整。原创 2022-11-03 11:57:57 · 2361 阅读 · 0 评论 -
大类资产智能投顾模型:从风险平价开始,夏普比1.9
回应之前有一个朋友问我的一个问题,若有AI量化有最优解,比如上帝视角,那就一个ai模型就够了。结果会导致就是大家都这样交易,然后市场就有效了,大家都有alpha,那证明没有有效的模型。其实一定程度上,美股就是这样的,都是专业基金管理团队,估值模型都差不多,美股想获得超额收益很难,所以才有买指数基金是最优方案,赚的是市场BETA,或者说smart beta。投资周期有长有短,风险收益偏好的不一样,大家的预期就不一样,需要也不一样。风险平价,需要额外的参数,就是所有交易标的的收益率。原创 2022-10-27 15:19:30 · 945 阅读 · 0 评论 -
代码实证:风险平价及其改进思路——主成分风险平价
主成分分析是一种基于降维思想把多个资产利用数学变换转化为少数几个主成分(即综合变量)的 多元统计分析方法,这些主成分能够反映原始资产的大部分信息,更具有现实意义,通常表现为原始资产的线性组合,为使得这些主成分所包含的信息互不重叠,要求各主成分之间互不相关。通过对原资产进行线性组合形成互不相关的投资组合,针对不相关的投资组合进行风险平价模型的资产配 置,最终确定确定原资产的投资权重。我们引入PCA,可以把资产之中的风险不相关。主要是提供一个思路,风险平价不需要预估收益率,所以,风险平价相比之MVO的纯理论,原创 2022-10-26 11:22:28 · 2368 阅读 · 0 评论 -
AI大类资产配置:从风险平价开始
这段时间,真切体会好,没有健康,一切归零。试想,今年以来,很多时间饿着肚子,晚上7:30-8:00才吃晚饭,而且吃到过饱,回到家可能还吃些坚果,然后就躺下睡觉。周末带儿子们到公园,儿子想自己上蹦床去玩,说:“爸爸,我自己上去,会找到滑梯下来,我不会丢的”。中间态留给主观交易者,这里要处理的信息实在太大,需要专业的投研团队,拜访上市公司,研读财报,甚至去工厂调研等等,这就是专业基金团队做的事情,而且结果还不一定好。面对市场大幅波动,甚至是持续下行,想在这样的市场获利,犹如想要跨过7英尺(2米多)的栏杆。原创 2022-10-25 16:18:12 · 1175 阅读 · 0 评论 -
大类资产与动量轮动,年化24.3%,回撤不到20%
比如你的风险偏好是股债20:80,那么在股市动量强时,可以变成股债30:70等等。布林带指标的逻辑简单且直接,布林带有三条线,中线就是20日均线,上轨是中线加上2倍的移动标准差,下轨是中线减去2倍的移动标准差。这里相当于“4个希格玛”,从概率的角度,已经包含95%+的取值范围。也就是说如果突破了上轨,我们认为动量很强,则入场,反之出场。长期优秀的ETF和LOF,城投债,医药,黄金,消费,纳指,另外两支lof,兴全商业模式和万家行业优选。布林带通道从回测看是没有明显效果的,但更加简单的动量alpha明显。原创 2022-10-21 10:32:30 · 641 阅读 · 1 评论 -
长期年化20%到底难不难呢?量化给你看
即买入规则,可以复合成一个buy_signal,卖出规则,也可以复合成一个sell_signal。而机器学习模型,则不需要bug和sell信号,直接根据order_by取top K的轮动即可(qlib的topK就是这么做的)。但是请注意,风险收益是不对称的,我们没必要为了2-3个点,冒10%个点的回撤风险。动量+0.02,-0.02,K=1(年化24.8,mdd=37.1%,夏普1.06)。入场条件更严格,改为0.08,出场-0.02不变,K=1。其实,这个对比,容易看出来,”盈亏同源“,风险收益并存。原创 2022-10-20 11:17:10 · 654 阅读 · 0 评论 -
用ETF做大类资产配置,夏普比1.84,附源码
而时间序列里,又以动量类模型最简单,更为关键的是,它真的有效!如上8支ETF,进行大类资产配置,超大盘的上证50,行业的消费和医药,美股的纳指,招商双债和城投债以及国债。期货里的CTA有多空,有杠杆,比较适合小资金练手,但千万要知道自己在做什么,能承受多少风险。原创文章第78篇,专注“个人成长与财富自由、世界运作的逻辑, AI量化投资”。季度再平稳,每个季度1号再平衡一次,把仓位恢复成原来的样子。对于大资金理财,这是一个有效的策略,可以作为一个基准。积木式的开发,只需要改动一个代码,特别容易。原创 2022-10-19 15:39:28 · 786 阅读 · 0 评论 -
ETF场内基金:AI量化投资最佳切入点(数据篇)
每个客户机每秒可以查询数百万行,网络带宽达到10倍的压缩,磁盘达到10倍的压缩,每个 MongoDB 实例每秒可扩展到数亿行。ETF背后是指数,可以是行业,可能是市值,也可能是红利这样的smart beta。相对下来,股票背后是一家家公司,就算白酒都挺好,但不是谁都能成为茅台,更何况商战信息千变万化,要判断一家公司未来前景谈何容易。指数基金是跨品种(货币,债券,可转债,FOF,商品,REIT…),跨市场的,覆盖香港,美国、日本,越南,德国…再从风险收益来看,从基金到加密货币,从“保守”到“激进”。原创 2022-10-18 15:44:35 · 2460 阅读 · 0 评论 -
sklearn里的逻辑回归,随机森林及SVM应用于指数方向”预测“
这样,你可以使用历史数据,充分地试验你的想法,而不用真的掏真金白银去试错,又浪费时间,精力又浪费钱,这是量化回测的意义所在。,它的进化还是取决于人,使用者自身经验的积累,对策略的改进。传统量化更像经验的规则表达,比如MACD为何是12,26,9,你要仔细问,这就伤感情,本身就是一种“模糊的”经验。我们使用“收盘价”,“成交量”,以及5天前的数据,“预测””下一天“是”涨“还是”跌“50%左右,跟瞎猜差不多,意料之中,哪有这么容易,那门槛也太低了。就是数据集准备,数据划分,然后模型训练,模型检验。原创 2022-10-17 08:00:47 · 808 阅读 · 1 评论 -
量化投资里的风险收益分析与可视化:empyrical和pyfolio实战,与backtrader整合
pyfolio是量化结果分析与可视化框架,alphalens是因子分析框架,使用度都不错,今天我们重要说pyfolio。backtrader框架内置了兼容pyfolio的分析器,添加之后,可以从结果得到收益率,仓位,交易等信息,可以create_full_tear_sheet来分析。print('累计收益:', empyrical.cum_returns_final(returns))print('累计收益:',empyrical.cum_returns_final(returns))原创 2022-10-16 11:01:47 · 1444 阅读 · 1 评论 -
均线交叉策略、海龟策略:基于backtrader框架的实现
abs(self.high(0) - self.close(-1)), # abs(当日最高价−前一日收盘价)abs(self.low(0) - self.close(-1))) # abs(当日最低价-前一日收盘价)self.TR = bt.ind.Max((self.high(0) - self.low(0)), # 当日最高价-当日最低价。也就是”上穿”值为1,下窗值为-1。本篇主要演示bt框架里,指标如何计算,尤其是一些复合的向量计算,以及策略如何写,包括止损、止盈,仓位管理等。原创 2022-10-15 08:58:21 · 1618 阅读 · 0 评论 -
backtrader:基于信号的策略开发及参数优化
如果系统中同时存在SHORTEXIT 信号类型,SIGNAL_SHORT 中的多头信号将不起作用,将会使用 SHORTEXIT中的多头信号来平仓空头。analyzer['最大回撤(%)'] = result.analyzers._DrawDown.get_analysis()['max']['drawdown'] * (-1)如果系统中同时存在LONGEXIT 信号类型,SIGNAL_LONG 中的空头信号将不起作用,将会使用 LONGEXIT中的空头信号来平仓多头,如上面的多条交易信号的例子。原创 2022-10-14 09:28:47 · 1103 阅读 · 0 评论 -
backtrader框架学习:交易配置篇
方式1:通过设置backtrader.brokers.BackBroker() 类中的参数,生成新的broker实例,再将新的实例赋值给cerebro.broker;国内的vnpy算是功能完善度比较高的,口号是“by traders, for traders”,大致就是这样的目标,但vnpy的代码有点重,安装和使用较复杂。print('当前持仓量', self.broker.getposition(self.data).size)1.佣金按照百分比。市面上很多开源的框架,更像是学术的,面向研究和学习的。原创 2022-10-13 09:03:19 · 707 阅读 · 0 评论 -
技术分析,指标为王:详解backtrader的指标体系与扩展
bt.And、bt.Or、bt.If、bt.All、bt.Any、bt.Max、bt.Min、bt.Sum 计算返回的结果与在next()中对当前时点通过常规 python 运算语法返回的结果是一致的。Backtrader的指标模块 Indicator 侧重的是技术分析,提供了各式各样的技术指标计算函数,考虑到大家技术指标的计算习惯,还内接了 TA-Lib 指标库,bt的line还可以自动匹配时间,对齐周期,这个着实非常方便。# bt.If(a, b, c) 如果满足条件 a,就返回 b,否则返回 c。原创 2022-10-12 10:50:09 · 1118 阅读 · 0 评论 -
backtrader框架使用与数据导入详解
line的取法和很多种表达,一般使用self.datas[X].close[0], 0表示当前日期,-1表达昨天,-2是前天,依此类推。取多个数据,可以使用self.datas[X].close.get(ago=0,size=N)来取,但如果超过当前已经有的bar,会返回空的array。若一句有效市场,说全盘否定了技术面,基本面,甚至内幕消息,显然是不对的。这个市场上有多少抓住了一段时间的“失效”,而只要你用心,这个世界到处充满了无效,而正是这些行动者,才让市场变得有效,这个过程中,他们收获了财富,认知。原创 2022-10-11 18:54:05 · 3916 阅读 · 0 评论 -
pandas向量化回测策略开发
cut_ages = pd.cut(ages, [0,5,20,30,50,100], labels=[u"婴儿",u"青年",u"中年",u"壮年",u"老年"])ages = np.array([1,5,10,40,36,12,58,62,77,89,100,18,20,25,30,32]) #年龄数据。比如0,0.2,0.4,0.6,0.8,1, 这样把收益率进行5等分。身体健康真心非常重要,大约从七月份开始,间歇性腹胀,去医院开了两次药,有缓解,但没有根治,原因不明。原创 2022-10-10 15:23:49 · 855 阅读 · 0 评论 -
动量轮动与光大RSRS指标在backtrader的实现
比如N天收益率,均线,MACD金叉或者RSRS(光大证券的一个阻力支撑指标),甚至是通道突破(唐奇安通道或者布林带)都是动量的逻辑。说白了,过去12年(从2010年开始,就买这两个指数,过去20天的动量大的,如果动量都小于0,则空仓),年化收益超过股神巴菲特了,回撤21%也在可接受范围内,真的能做到一定的“抄底逃顶”的。但其实这符合人的直觉,“左侧交易”的低位价值投资或者“均值回归”是反人性的,而“右侧交易”更符合直觉。,可能吃到大部分,并且可以把成果保留下来,但对于震荡向上的市场,则效果一般。原创 2022-09-28 16:21:04 · 1405 阅读 · 0 评论 -
机器学习量化前的准备——全球指数数据篇
可以这么说,传统量化使用backtrader就够了,而前沿的机器学习量化qlib更合适。好在我们把数据聚焦在OHLCV上,而且专注在指数上,那么数据量就少很多,使用csv就可以轻松管理——很多时候,是因子的问题,还是模型参数的问题,这就是我们要解决的核心关键。但上述的模型在实盘中仍然不好操作,原因是它经常交易50支以上的股票,而且由于计算量大,单机训练已经很吃力了。,A股,港股,美股等以及A股里重要的行业指数,像消费、科技、医药、证券等等。'399006.SZ': '创业板指数',原创 2022-09-26 14:45:33 · 1157 阅读 · 0 评论 -
backtrader_plotting扩展包:用bokeh来可视化bt框架的量化结果
backtrader_plotting不只是使用bokeh替换matplotlib,它还做了大量的工作,把analyzer和observer的结果直接呈现出来,这省了我们不少事。但如果标的多,就不容易看清楚,还有一个办法,就是做一个“等权买入并持有”的策略作为基准。终值/起始值后取对数。——总收益率取对数有点不符合直觉,直接年化收益率是在总收益的基础上的,这样数字偏小101%,实际是(173%)。todo:两个策略可以一起跑,但读出来的结果不对,需要使用优化策略的方式,这个后续文章里再说明。原创 2022-09-24 07:37:50 · 1660 阅读 · 0 评论 -
十年回报155%,最大回撤20%:实证多指数动量轮动模型
不要去研究面粉怎么来的,小麦怎么种的,蒸笼是如何做出来的,竹子是如何生长的。也许它们之间有些许的联系,但是竹子对包子的影响,远不及你把调料好好研究一番——直面结果而去,站在巨人的肩膀上这很重要。之于量化,最重要就是策略。你要落地策略的时候,也许先碰到了pyalgotrade,那就用好,功能不够了,qlib或backtrader,甚至是。20日动量>0.02时买入,20日动量原创 2022-09-23 11:02:32 · 856 阅读 · 0 评论 -
backtrader指标体系:多支股票的指标计算
demo都没有run起来吧,因为涉及到陌生的概念,第一反应是先看它的代码,把它的代码改造成为自己的。然后就是专注指标、因子,机器学习模型lightGBM,强化学习也可以,但要循序渐进,有些太前沿无法落地。多关注前沿,新鲜的东西是好的,但不必所有事情都亲力亲为,太发散导致都没有结果。若要说反思的话,专注目标而去,就是策略,那前提就是熟悉一个框架,可以执行策略与想法即可。重点是有没有好的策略。我们没有写策略,只是定义了指标,可以看到,下图可以把两个指数的ROC指标(20日变化率的动量指标)画出来。原创 2022-09-22 10:58:14 · 1535 阅读 · 1 评论