
量化投资
文章平均质量分 69
钱塘小甲子
不懂控制的歌手不是好的投资者,不会TCM的coder不是好的FRM
展开
-
简单量化短期的商品情绪
例如下面的黄金为例,在4月中旬,由于市场对联储加息的预期几乎就一致认为5月是最后一次加息,随后就会开始降息;同时美国的银行风险事件也让市场买入黄金进行避险。我们可以看到,黄金的近20个交易日涨幅来到了0.95以上的分位数,很显然,这个时候如果追高就要考虑是不是短期会有回调的压力 了。有时候,市场的情绪会演绎到比较夸张的位置,其实很简单的指标就可以量化,比如过去20个交易日的累计涨跌幅,同时计算过去滚动涨跌幅的分位数就大致可以判断市场情绪。原创 2023-05-06 22:00:40 · 620 阅读 · 1 评论 -
博主的新书上线了
有很多同学希望能够系统的学习股票多因子模型,所以博主深入浅出的通过模型代码解读来让大家了解股票多因子模型背后的逻辑。https://detail.tmall.com/item.htm?id=642577837266望大家支持。原创 2021-04-20 14:59:51 · 1500 阅读 · 7 评论 -
Bokeh可视化笔记——x轴设为日期
Bokeh是一个很好用的可视化工具库,画出来的图还是不错滴。比如想画历史上所有合约的螺纹-热卷价差。整体质感还是不错的,比matplot好看,而且可以放大缩小,可以点击标签来选择是否显示。比如:数据处理部分就不说了,这里应为我们是一个金融数据,x轴设置为日期。随便百度一下百度不到设置方法,所以找了一下官方的一些例子才实现。于是笔者实现之后来写个教程。大致来看一下绘图的函数吧。def plot_month_diff_line(plot_df, contract_df): de原创 2020-12-23 16:52:56 · 2027 阅读 · 0 评论 -
卖期权的时候,我们在卖什么?
一直在思考一个问题,卖期权到底是怎么回事?卖实值期权、平值期权、虚值期权背后的本质有什么区别?卖近期的和远期的期权背后的本质又是什么?我们用沪深300指数期权来研究一下。 我们先从数据上来直观感受一下。上面这个表格是2020-12-09日这一天期权的情况。这里列了四类期权(都是看跌),分别代表实值期权(5400行权价),平值期权(5000行权价),虚值期权(4800行权价)和深度虚值期权(4400行权价)。 我们先来看时间维度,也就是theta*close。...原创 2020-12-10 22:04:49 · 936 阅读 · 0 评论 -
Wind的实时行情API使用
很久以前用过Wind的实时行情接口,最近又要开始用的时候,居然一下子忘记怎么用了。所以写个文章做个记录,毕竟网上也没有人写过这个。 Wind的实时行情是通过回调函数来实现的。也就是大框架下,我们是让主程序一直while循环,然后有新的行情到来的时候,wind的API会自动调用我们写好的回调函数。if __name__ == '__main__': w.wsq("000002.SZ,2202.HK", "rt_date,rt_tim...原创 2020-07-11 21:47:26 · 7693 阅读 · 1 评论 -
vn.py源码解读(七、回测代码解析)
原本想开始讲策略类的编写,后来觉得,结合回测代码其实能够更好的理解,所以先解读一下vnpy回测的代码吧,后续自己也想把vnpy回测的部分优化一下,毕竟我觉得可视化和回测结果方提高还有很多空间。 我们解读的代码从runbacktesting.py开始。首先,和实盘中一样导入了一个策略。from vnpy.trader.app.ctaStrategy.strat...原创 2018-12-16 10:33:02 · 6419 阅读 · 1 评论 -
vn.py源码解读(一、环境配置与回测初试)
近来忙于毕业找工作,也不知道能不能继续在量化界混了。周末比较闲,抽空研究了一下vn.py。有人说,为什么学那么多的回测平台呀。其实我个人觉得,做cta的话,两个回测平台还是要的,这样,当你的策略出现和你预计不符,而你有无法在代码逻辑层面找到问题的时候,你就可以用另外一个平台试一下,来看看到底是你的策略本身就不行,还是你的代码有着当前水平无法察觉的问题,甚至,可能回测平台本身存在一个...原创 2017-11-12 21:50:37 · 26939 阅读 · 7 评论 -
量化、傅里叶变换、风险模型及其他
世界有很多角度,而我们却只能看到一个,并深陷其中,自信不已。每一个角度有不同的维度组合来观察世界。 我们看待股票市场,有一个最常规的角度,就是个股,一个个代码。技术分析者看到的个股k线、价量信息;基本面分析者看到的是公司的财务状况和运营模式。这是一种最普遍的角度。 在信号处理领域,有一个最基本的信号处理方法,时频分析,工具就是傅里叶变换。人类直觉上看待一个信号的维度,就...原创 2018-04-24 21:35:28 · 3209 阅读 · 0 评论 -
量化投资中常用python代码分析(一)
pandas的IO 量化投资逃不过数据处理,数据处理逃不过数据的读取和存储。一般,最常用的交易数据存储格式是csv,但是csv有一个很大的缺点,就是无论如何,存储起来都是一个文本的格式,例如日期‘2018-01-01’,在csv里面是字符串格式存储,每次read_csv的时候,我们如果希望日期以datatime格式存储的时候,都要用pd.to_datetime()函数来转换一下,显得很麻...原创 2018-05-30 20:33:47 · 23431 阅读 · 7 评论 -
Backtrader量化平台教程-跟踪止损单(十)
AD:(本人录制的backtrader视频课程,大家多多支持哦~https://edu.youkuaiyun.com/course/detail/9040)无意中发现了一个巨牛的人工智能教程,忍不住分享一下给大家。教程不仅是零基础,通俗易懂,而且非常风趣幽默,像看小说一样!觉得太牛了,所以分享给大家。教程链接:https://www.cbedai.net/qtlyxCTA当中,...原创 2018-07-25 20:34:27 · 10116 阅读 · 6 评论 -
重回机器学习-《python机器学习及实践》读书笔记一
以前也算比较系统接触过机器学习吧,记得最早的时候是大二,机器学习才刚开始提起,更多的是说统计学习。那个时候,深度学习似乎都还没有听过,看的第一本书也是一本外国人写的,一直拿鸢尾花数据集当例子的书。当时看完也没觉得什么,毕竟年轻,何况那个时候很多东西就是觉得好奇好玩而去学一下。 后来也慢慢接触到,也编程实践过,不过一直都不怎么成体系。最近觉得,还是得再跟一下潮流,所...原创 2018-09-26 22:21:31 · 1773 阅读 · 0 评论 -
statsmodels的回归R2的问题
做量化呢,得经常做回归,各种各样的,ols,wls,正则的lasso, 岭回归等等。回归有一个很重要的整体解释力度的参数就是R2,也就是可决系数。在python中,我们回归一般采用的是statsmodels这个模块,但是回归的时候获得的R2其实有那么点学问,有时候设置错参数可能得到的R2大家会觉得怪怪的。这里就给大家排个雷。首先,我们先给出两组、六个回归函数。第一组:de...原创 2018-10-10 21:23:15 · 7225 阅读 · 0 评论 -
多因子模型之组合构建与优化器(下)
1.不等式约束前面我们讨论了等式约束下的情况,那么如果有不等式约束呢?比如,我们不能做空股票,那么就要求每一个股票的权重都要大于1,或者对于特定的股票我们给予特殊的权重的设定等等。 这里,我们就假设我们设置两个不等式约束: 不能做空 股票s2的权重要要大于等于0.1. 这个时候,我们的约束条件就是: subjectto.A′x≤bsubject to. A^{'}x \leq b 其中,原创 2017-10-22 20:17:54 · 5538 阅读 · 0 评论 -
多因子模型之组合构建与优化器(上)
根据多因子模型,或者说alpha策略的开发顺序,我们应当是按照:因子--》alpha 模型--》风险模型--》组合构建 这样几个模块来的。今天来说说组合构建这个事。 组合构建是在你有了alpha模型和风险模型之后,也就是说,你现在可以预测股票的收益和股票的风险了。那么我们怎么构建组合呢? 大概有这么几种方法: a.根据alpha模型,选择前面N个预测收益高的股票,然后权原创 2017-10-21 21:26:15 · 8798 阅读 · 0 评论 -
一个alpha量化的开源项目--Signal_Report_Platform(单因子测试报告)
目前,网上其实有很多量化的回测平台,比如之前笔者写过教程的backtrader和pyalgotrade,当然还有大名鼎鼎的zipline。但是值得注意的是,这些其实某种意义上是一个回测平台,如此而已。如果做cta,可能就足够了,但是如果是要做多因子策略的话,这种回测平台可能只是整个体系当中的一个小小的部分。基于这样的原因,所以打算在闲时写一个多因子策略的量化平台。目前刚开始起步,先从单因子测试开始原创 2017-10-03 23:50:21 · 4039 阅读 · 0 评论 -
多因子模型之因子(信号)测试平台----alphalens(三)
广告:本人的单因子测试视频教程https://edu.youkuaiyun.com/course/detail/25572今天,我们讲alphalens下一个重要的因子测试的输出部分,Information Analysis,也就是,信息的分析。听起来有点抽象。那么,我们开始吧。 首先,讲一个主动投资组合管理的第一个定理,叫做fundmental law,其形式就是:IR = IC *...原创 2017-09-02 14:09:16 · 5924 阅读 · 0 评论 -
多因子模型之因子(信号)测试平台----alphalens(二)
广告:本人的单因子测试视频教程https://edu.youkuaiyun.com/course/detail/25572 今天这一个部分,我们要用到另外一个python的大杀器,notebook,现在叫做jupter notebook。大家如果装了anaconda的话就会有这个的。 大家在命令窗口中把目录切换到工作目录就可以了。 回车之后就可以启...原创 2017-08-29 22:05:21 · 8219 阅读 · 4 评论 -
多因子模型之因子(信号)测试平台----alphalens(四)
广告:本人的单因子测试视频教程https://edu.youkuaiyun.com/course/detail/25572接下来,还剩下最后一部分的单因子分析,就是换手率的分析。当然,我们要知道,这仅仅是三个主要部分,后续我们可能会增加几个观察的指标。 1.换手率概括表 上图是turnover的分析表。由于实际交易中,我们是有手续费的,所以,对于因子而...原创 2017-09-05 21:37:01 · 4603 阅读 · 0 评论 -
多因子模型之因子(信号)测试平台----alphalens(一)
广告:本人的单因子测试视频教程https://edu.youkuaiyun.com/course/detail/25572 之前,我们计算了revs10这个因子,并且对其进行了去极值、标准化、和行业中性。计算因子,并合理处理是单因子测试的第一步,我们必须有正确、合理的因子值,才会有有意义的结果,否则就是garbage in, garbage out。 对于单因子测试,...原创 2017-08-27 22:56:43 · 8689 阅读 · 0 评论 -
多因子模型之因子(信号)测试平台----因子值的处理(二)
广告:本人的单因子测试视频教程https://edu.youkuaiyun.com/course/detail/25572 我们知道,一个因子值的处理大致分为三个步骤,去极值、标准化、中性化,上次我们对因子值进行了去极值和标准化,这一次,我们主要讲一讲中性化,也就是neut。 neut分为行业中性和风格中性两种。行业中性很好理解,我们知道,一个因子在不同的行业间不一定有可比性...原创 2017-08-26 14:21:57 · 5089 阅读 · 0 评论 -
多因子模型之因子(信号)测试平台----计算因子值
广告:本人的单因子测试视频教程https://edu.youkuaiyun.com/course/detail/25572 近一个半月疯狂的接触多因子模型,其中对于单个因子的回测,是最熟的。而对于单个因子,或者叫做signal(这一系列文章后续都这么叫),是多因子模型的基础。当然,如果你认为,世界上没有alpha,那么只要bet style或者industry就可以了,也不需要寻找alpha。...原创 2017-08-15 22:23:48 · 6294 阅读 · 0 评论 -
vn.py源码解读(三、事件驱动引擎代码分析)
先抛开一切,我们来想一想,如果自己要写一个事件驱动引擎会怎么写?之前也说过,所谓的事情驱动就是你要监听一些事件,当某些事件发生的时候,要分配相对应的方法进行处理。完成这个过程的东西我们抽象出来之后就叫做事件驱动引擎了。那么,如果我们自己写的话,应该有这样几个功能:1.事件的注册和取消,使用者可以根据自己的需求来设置引擎需要关心那些事件 2.事件对于的处理方法的挂钩。显然,一个...原创 2018-12-02 12:03:12 · 7224 阅读 · 1 评论 -
vn.py源码解读(二、实盘交易代码分析)
离上一篇和vnpy有关的文章整整一年了。这一年似乎过得异常的快,快到让人觉得没有成长。可能是工作原因吧,时间一下子就会过去;亦或是自己懈怠了。 一年前vnpy网上的教程还很少,而现在渐渐多了起来,量化交易学习的人群也渐渐多了起来了吧。之前的文章简单介绍了一下vnpy的配置和回测的代码的简单解析。其实vnpy对我的吸引力在回测功能上面几乎没有。说句真心话,回测框...原创 2018-12-01 12:03:04 · 12029 阅读 · 5 评论 -
vn.py2-行情记录的使用
vnpy很早就出新版本了,开始用python3了。毕竟据说2020年python2就寿终正寝了。 vnpy2的文档和说明都详细了很多,很多东西显得具有很好的可用性,这就可以直接使用vnpy的vntrader,简单改装就可以真正的用起来了。 vn_trader里面的功能特别有意思。 一打开这个东西,就会开始在我们C盘的用户文件...原创 2019-09-09 22:44:45 · 4109 阅读 · 0 评论 -
Backtrader量化平台教程-作者的一篇博客(十一)
无意中发现了一个巨牛的人工智能教程,忍不住分享一下给大家。教程不仅是零基础,通俗易懂,而且非常风趣幽默,像看小说一样!觉得太牛了,所以分享给大家。教程链接:https://www.cbedai.net/qtlyx Backtrader的作者在他的博客上写了一篇很有意思的文章。这个哥们从csdn上面找了backtrader的代码,然后改写...原创 2019-05-22 21:33:55 · 13305 阅读 · 2 评论 -
vn.py源码解读(十、参数优化)
任何一个策略,在初步回测之后,都会有一个参数寻优的过程。这个过程vnpy给大家实现了。其实这个是最简单了,说白了就是换参数多跑几次回测嘛。但是,说的直白点,vnpy的参数寻优在代码上来讲是不够高效的,原因很简单,我们其实可以进行一次数据回放就可以完成很多组参数的回测,而不是一组参数回放一次。我们简单过一下代码吧,这部分比较简单。之前我们是配置好之后就调用bactest了,但是如果是优化的话...原创 2019-04-18 21:24:57 · 5033 阅读 · 1 评论 -
升级版VNPY(一)
之前在读vnpy源代码的时候,一直就有升级改造的想法,也有同学在博客下面互动,说希望能够开源升级后的代码。最近花了点时间,做了一点点修改,包括数据的本地获取、回测后的策略测试。大概展示一下吧。回测的结果包括vnpy原来自带的。vnpy自带的是以大图和命令行输出形式,笔者这里变成了网页。但是由于笔者不是前端工作者,所以网页的美化程度几乎没有。vnpy自己原有的内容呢,暂时笔者也不做修...原创 2019-04-02 21:43:58 · 3019 阅读 · 1 评论 -
vn.py源码解读(九、策略类代码解析)
说到这个最重要的类了。这个类说白了就是策略的实现。和绝大部分回测框架一样,策略想法是一个类的抽象,一般会继承一个基础类模板,每一个真实运行的策略就是这个策略想法类的一个实例。好的,有点绕。我们来看代码吧。 在vn.py中,每一个策略类开始不出意外都是下面这样的:1、类的定义和类变量class TRStrategy(CtaTemplate): """学习版...原创 2019-04-05 19:01:59 · 6814 阅读 · 2 评论 -
pyfolio教程3——create_interesting_times_tear_sheet
我们有时候对一些时间段特别的关注,比如911、互联网泡沫、外星人入侵什么的。在pyfolio中,有一个interesting times tear sheet,其实就是把某些特殊的时间段放大了给大家看看。 至于特殊时间段的定义: 在pyfolio的这个文件夹下面,有一个这个py文件,在里面进行设置就可以了:# Dotcom bubblePERIO...原创 2019-03-25 19:45:48 · 1711 阅读 · 1 评论 -
pyfolio教程2——第一个returns_tear_sheet
首先,说明一下我们的数据,为了一步一步的明确pyfolio的功能和一些结果,我们首先选取我们的策略是0.3的中证500指数、0.3的中证1000指数和0.4的上证50指数,也就是我们的组合的收益就是这三个指数的加权收益。换句话说,我们是把这三个指数当成了三个资产。benchmark是沪深300,后续有需要的时候,回依次加入其它的东西。 我们先来看一下我的retur...原创 2019-03-22 22:12:42 · 6322 阅读 · 2 评论 -
tick数据研究
经常听见tick数据,回测的时候也用过,但是还真的没有自己去处理过tick数据,据说tick数据有很多坑,所以打算自己研究一下。首先的第一步就是先拿正常的tick数据来生成bar,从而能够理解一些细节,然后就是自己用ctp去接收tick数据,看看ctp有没有坑。 这里,完美的tick数据是wind上的。 这是wind上面导出来的,看起来还是比较正常的,反...原创 2019-03-15 23:24:52 · 11187 阅读 · 0 评论 -
Brison归因与代码
不管是做FOF也好,仅仅想单纯归因也好,Brison是一种比较常见,也算是通用的归因方法,其一般用于权益类或者大类资产配置类基金。 其实Brison归因的逻辑很简单,假设有一个基准,基准在各类资产的配置上的权重分别是wbi(weight of benchmark of asset i),这些资产的收益率分别是rbi(return of benchmark of asset...原创 2019-03-05 22:27:39 · 6112 阅读 · 3 评论 -
pandas的Groupby加速
在平时的金融数据处理中,模型构建中,经常会用到pandas的groupby。之前的一篇文章中也讲述过groupby的作用:https://blog.youkuaiyun.com/qtlyx/article/details/80515077 但是,大家都知道,python有一个东西叫做GIL,说白了就是python并没有多线程这种东西。那么,现在如果我们要进行grou...原创 2019-02-14 22:05:52 · 8672 阅读 · 7 评论 -
vn.py源码解读(八、回测结果计算代码解析)
我们核心关注一下calculateBacktestingResult这个方法,这个方法中最核心的是一个大循环。 for trade in self.tradeDict.values(): # 复制成交对象,因为下面的开平仓交易配对涉及到对成交数量的修改 # 若不进行复制直接操作,则计算完后所有成交的数量会变成0 ...原创 2018-12-29 17:52:25 · 4806 阅读 · 3 评论 -
pyecharts绘制K线
最近想扩展一下vnpy,优化一些功能和代码的性能。在看backtesting部分代码的时候,发现,vnpy其实回测功能挺弱的,可以自己扩展一下。随之而来的就是一个回测结果可视化的问题。vnpy原生的回测结果没有绘制k线,所以也就没有指标的可视化和开仓平仓的可视化,只有随后交易结果的可视化。笔者自己其实有点点不习惯,没有看到策略的可视化回测结果,有点点不开心,所以打算自己做一下。首先...原创 2018-12-23 20:07:15 · 19500 阅读 · 26 评论 -
vn.py源码解读(六、主引擎代码分析---策略模块)
之前在讲MainEngine的时候,有这样一个代码: me.addApp(ctaStrategy) 这里,我们来看一下MainEngine里面这个addApp函数的代码: def addApp(self, appModule): """添加上层应用""" appName = appModule.appName ...原创 2018-12-11 20:23:28 · 5344 阅读 · 2 评论 -
vn.py源码解读(四、主引擎代码分析----初始化函数)
vnpy有一个叫做主引擎的东西,在三里面也说过,个人觉得这个应该是一个运行框架的东西,不应该叫做引擎,不过没关系,名字而已嘛。这一篇呢主要就是分析一下主引擎的代码。class MainEngine(object): """主引擎""" #----------------------------------------------------------...原创 2018-12-06 21:51:37 · 5795 阅读 · 1 评论 -
vn.py源码解读(五、主引擎代码分析----CTP模块)
上一篇文章讲了MainEngine中的初始化函数,重点是DataEngine的讲解。有了对行情数据的处理,还需要有行情数据的来源。在MainEngine的初始化函数后面的一个函数就是addGateway函数。vnpy的作者还是有很大格局的,希望自己的作品可以兼容很多数据交易接口,所以就比较通用,这里就把ctp这种接口叫做Gateway,而且后面写的也比较复杂,目的就是为了集大成,还...原创 2018-12-07 19:07:05 · 6924 阅读 · 4 评论 -
多因子模型之因子(信号)测试平台----因子值的处理(一)
广告:本人的单因子测试视频教程https://edu.youkuaiyun.com/course/detail/25572在前面一节,我们成功计算出来了因子值。在开始今天的内容前,我们要先了解几个概念。许多书本上,可能不会这样讲,这个仅仅是笔者的一些感悟。0.几种factor 先来弄清楚笔者自己总结的factor的生命周期1)raw facto raw fa...原创 2017-08-16 22:58:33 · 8117 阅读 · 0 评论 -
Backtrader量化平台教程-Portfolio级别的回测(九)
AD:(本人录制的backtrader视频课程,大家多多支持哦~https://edu.youkuaiyun.com/course/detail/9040) 无意中发现了一个巨牛的人工智能教程,忍不住分享一下给大家。教程不仅是零基础,通俗易懂,而且非常风趣幽默,像看小说一样!觉得太牛了,所以分享给大家。教程链接:https://www.cbedai.net/qtlyx ...原创 2017-07-29 19:50:22 · 11745 阅读 · 14 评论