量化金融
呆萌的代Ma
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
python计算半衰期数据中,各个时间点的值
半衰期的计算我们按照公式来,比如半衰期N,则距离当前时间点过去K个时间点后,当前值变为0.5N1K1。原创 2024-03-15 14:17:54 · 943 阅读 · 0 评论 -
基金评价指标3——滚动收益率测算(近N日收益率,当周/月/年平均收益率)
区间收益率 = (区间终值累计收益 - 区间初始累计收益) / 区间初始累计收益。近N日收益率 = (当日累计收益 - N日前的累计收益) / N日前的累计收益。这里需要区分不同时间段的起始与终止区间。原创 2024-03-14 13:41:02 · 1214 阅读 · 0 评论 -
基金评价指标2——Alpha、Beta、跟踪误差、信息比率、特雷诺比率
Alpha是指风险调整后的收益(剔除掉基准带来的收益后的剩余),如果Alpha值大于0,表示剔除基准带来的收益后,策略仍然能够取得正收益,如果Alpha小于0表示主动管理部分造成了负收益。表示每单位系统风险资产获得的超额报酬,可以认为是承担beta的性价比,注意:如果使用OLS回归有四个基本假设,最好使用corr/var的计算方式。Beta用来衡量个别股票或股票基金相对于整个股市的价格波动情况。信息比率表示剔除市场基准的波动后,主动管理带来的单位收益。跟踪误差表示策略与基准的偏离程度。原创 2024-02-29 16:27:40 · 3635 阅读 · 0 评论 -
基金评价指标1——收益率、回撤、下行标准差、痛苦指数、夏普比率、索蒂诺比率
【代码】基金评价指标1——收益率、回撤、下行标准差、痛苦指数、夏普比率、索蒂诺比率。原创 2024-01-30 13:27:17 · 1675 阅读 · 0 评论 -
解决掘金量化平台,赋权原因导致委托异常(委托价格低于标的[xxxx]当日的跌停价格)
在2015-01-05年的时候,前复权价格正确,Wind显示当天收盘价8.49。以长生生物(002680.SH)为例,它已经退市了,下图为Wind的截图。进行回测,最新的版本支持分红配股了, 在交易的时候控制市值即可。但是在下单时,显示价格错误。修改为全部使用不复权数据。原创 2023-11-29 10:52:07 · 619 阅读 · 0 评论 -
Excel计算索蒂诺比率
索蒂诺年化下行标准差年化收益率−无风险收益率其中下行标准差是指:小于均值的数据,构成的序列的标准差但是“小于均值”是与自己比较,基金中也有时会用日收益小于无风险收益/252的数据计算下行标准差。原创 2023-11-23 16:29:38 · 1856 阅读 · 0 评论 -
Akshare获取分红数据
分红数据参考:- 分红数据源网站:[https://data.eastmoney.com/yjfp/](https://data.eastmoney.com/yjfp/)- Akshare参考网站:[https://akshare.xyz/data/stock/stock.html#id148](https://akshare.xyz/data/stock/stock.html#id148)原创 2023-11-07 16:17:04 · 1167 阅读 · 0 评论 -
Akshare获取同花顺行业
使用akshare可以很方便的获取同花顺行业列表,与每个行业对应的个股信息,流程如下:使用ak.stock_board_industry_summary_ths()获取行业列表循环行业列表,使用ak.stock_board_industry_cons_ths()获取行业对应的个股信息原创 2023-11-06 18:18:29 · 2775 阅读 · 0 评论 -
复原akshare的股票代码缺失前面000代码
原始的akshare保存成文件,再读取时,代码会被自动转换为如下形式:我们需要对每一个元素,补齐前面的0,将代码补充为6位。原创 2023-10-05 10:08:52 · 350 阅读 · 0 评论 -
python生成中金所期权行权价
就是在4950的行权价的基础上,获取向上3个行权价档位的期权,对应的行权价。原创 2023-10-02 19:40:09 · 436 阅读 · 0 评论 -
Wind API 定点复权提取数据,并解决提取数据结果显示错误的问题
注意给定的定点复权日期需要是 %Y%m%d 的格式,不是 %Y-%m-%d原创 2023-08-15 11:11:06 · 499 阅读 · 0 评论 -
Backtrader量化&回测11——策略信号Indicator
对于程序来讲,该有的代码一行都不会少,但是把代码分块就可以很直观的阅读或修改代码。使用Indicator可以将策略的信号从策略类Strategy中脱离出来,方便策略进行协调与控制。原创 2023-03-12 16:18:25 · 517 阅读 · 0 评论 -
解决东方财富数据接口激活后仍显示reactive的问题
在编辑器(如vscode、pycharm)中,按住ctrl键然后鼠标点一下。原创 2023-01-03 15:04:21 · 1469 阅读 · 0 评论 -
Windows配置万德(Wind)量化接口
原理:wind会在python的第三方库中安装一个属于wind的库。原创 2022-12-31 14:16:22 · 10312 阅读 · 1 评论 -
Mac配置python wind量化接口
首先Mac与Windows的wind配置完全不同:wind金融终端的官方下载页面:https://www.wind.com.cn/portal/zh/WFT/index.html既有Windows,也有Mac版本的下载页面,但是Windows上的金融终端是大杂烩,查看数据、分析、量化等功能都有了,但是Mac上的wind金融终端却是一个阉割的版本,很多数据无法展示,操作比较反人类,可视化也不如Windows流畅…虽然也在不断改进,但目前看来还是一言难尽包括配置量化接口,Mac上的Wind金融终端是不能够配置的原创 2022-12-05 12:46:24 · 5888 阅读 · 16 评论 -
Backtrader量化&回测10——取消预加载,读取自定义的可迭代数据
从这一部分开始,我们将不会再聚焦于基本的操作细节上,而是更多的做一些有特点的修改(or 魔改)这篇博客记录了:不进行预加载数据,而是实时加载数据的操作。原创 2022-12-01 15:31:49 · 823 阅读 · 0 评论 -
量化python:使用热力图heatmap绘制胜率图方法及工具函数
胜率图是分析策略的一种图形,对于胜率的分析需要三种数据:策略/参数集:表现在胜率图的横纵轴含义对比的场景编号:表现在对比两个策略时使用的场景;通常见于不同的时间、不同的参数、不同的周期场景对应的值:场景对应的值,可能代表收益率、模型的分数等。原创 2022-11-29 09:32:57 · 1132 阅读 · 0 评论 -
万得Wind量化与东方财富Choice量化接口使用
接口需要付费,这里接口的付费和配置就不展开了- wind相对容易配置,直接用软件就可以点击并配置- 东财请参考:[Mac使用Python接入东方财富量化接口Choice,调试与获取数据](https://blog.csdn.net/weixin_35757704/article/details/125552803)但有一点需要注意:- wind使用量化接口的时候wind终端需要后台运行- 东财使用的时候不需要登录终端,但是因为每个接口有个有效期,有效期之后哪怕账号续了一波钱,有效期延后了,也需原创 2022-11-11 08:48:07 · 9627 阅读 · 0 评论 -
Qlib股票数据获取与查看(Qlib学习1)
Qlib Github主页:[https://github.com/microsoft/qlib](https://github.com/microsoft/qlib)Qlib quickstart:[https://qlib.readthedocs.io/en/latest/introduction/quick.html#introduction](https://qlib.readthedocs.io/en/latest/introduction/quick.html#introduction)原创 2022-11-10 14:49:35 · 2894 阅读 · 1 评论 -
Qlib将csv格式数据转为Qlib支持的文件bin格式
这篇博客主要介绍从 csv -> bin文件的流程。原创 2022-10-25 10:17:09 · 2026 阅读 · 0 评论 -
python计算复合年化增长率、年化波动率与夏普比率
根据日收益率,计算:- 复合年化增长率- 年化波动率- 夏普比率原创 2022-10-11 16:40:20 · 4178 阅读 · 0 评论 -
量化:年化收益、期初收益、期末收益、年份,任意3个值计算剩下的1个值
$FV=(1+r)^n * PV$其中:- FV:初始值- PV:终值由此计算,可知:1. $PV = \frac{FV}{(1+r)^n}$2. $n=\log_{(1+r)}{\frac{FV}{PV} }$3. $r = \sqrt[n]{\frac{FV}{PV} } -1$原创 2022-10-11 13:52:46 · 388 阅读 · 0 评论 -
根据证券代码获取证券市场(SH,SZ,IB)
【代码】根据证券代码获取证券市场(SH,SZ,IB)原创 2022-10-05 19:54:38 · 1655 阅读 · 0 评论 -
Python判断股票是交易日,爬虫抓取深交所交易日历
为了判断某一天是不是股票的交易日,以此区分自然日与交易日,我们通过抓取深交所的交易日历获取相关数据。原创 2022-08-29 08:34:01 · 4472 阅读 · 4 评论 -
解决backtrader绘图报错Axis limits cannot be NaN or Inf或MemoryError: Unable to allocate 70.8 GiB for....
报错可能是:也可能是:解决方法步骤1. 降低matplotlib的版本:步骤2. 修改绘图的代码为:问题解析这是个BUG…原创 2022-07-11 15:27:42 · 4644 阅读 · 2 评论 -
Python使用efinance获取全部股票代码数据
使用的工具包是efinance github:https://github.com/Micro-sheep/efinance使用:原创 2022-07-03 11:26:44 · 5416 阅读 · 0 评论 -
Mac使用Python接入东方财富量化接口Choice,调试与获取数据
这篇博客用来把在Mac平台上使用python接入东方财富Choice接口的流程细化并重写,官方文档有些地方说的太含糊了,有的地方博主尝试了多种方法才试出来,这里直接把标准答案给到大家,尽量避坑吧~吐槽:同花顺科技感很足,赞,但是没有Mac版本的,而且券商数据太少太少啦,希望再接再厉吧首先使用这个接口的时候,需要有购买的账号哈,价格请参考:https://choice.eastmoney.com/buyingcenter,应该是每年3w一般你注册账号之后会有人打电话联系你,或是主动打客服,都可以的。然后给账号原创 2022-07-01 11:40:41 · 15137 阅读 · 3 评论 -
解决choice金融终端Excel/Wps插件修复visual basic异常
如下情况无解!!注意:下面是安装Office专业版的教程:原创 2022-06-29 08:47:10 · 5859 阅读 · 0 评论 -
Backtrader量化&回测9——精细的订单管理,订单时效性
官方 order 文档:https://www.backtrader.com/docu/order/在策略中我们常常需要限价单来制定策略的运行情况,因此使用订单的参数来确定订单的有效期,比如:上面的订单为:限价单,单价10元/个,卖出500个,有效期1天;1天之后这个订单会转为...原创 2022-06-14 13:20:53 · 780 阅读 · 0 评论 -
Backtrader量化&回测8——手续费
Backtrader官方文档:https://www.backtrader.com/docu/commission-schemes/commission-schemes/手续费是交易中必不可少的,尤其当调试策略参数时,结果都差不多,但不同参数导致的换手次数不同,此时手续费的影响就很大了,因此在backtrader中需要在计算时添加手续费Backtrader有两种手续费的设置方法:常见于期货等此时commission表示每一单位(每一手)的佣金,margin为保证金,mult为杠杆率,name代表是哪一个标的原创 2022-06-06 13:37:15 · 2721 阅读 · 0 评论 -
Backtrader量化&回测7——使用作弊方法cheat_on_open拥有更多的操作空间
cheat_on_open 官网简介:https://www.backtrader.com/blog/posts/2017-05-01-cheat-on-open/cheat-on-open/在代码中需要在运行前添加:然后在运行时添加一个参数:在使用的时候,backtrader会在所有的策略都执行完后:因此,在与中,既可以知道所有策略的执行结果,也可以开上帝视角去看明天的情况,而不用等到下一个模拟的交易日可以看到执行顺序:...原创 2022-06-01 12:50:31 · 976 阅读 · 0 评论 -
Backtrader量化&回测6——分析师Analyzer使用与添加
Backtrader Analyzer文档:[https://www.backtrader.com/docu/analyzers/analyzers/](https://www.backtrader.com/docu/analyzers/analyzers/)Backtrader 已有的Analyzer:[https://www.backtrader.com/docu/analyzers-reference/](https://www.backtrader.com/docu/analyzers-re原创 2022-05-27 16:26:37 · 1049 阅读 · 0 评论 -
Backtrader多策略回测时,获得其他策略的信息
这一部分好像在文档中没有出现,所以曲线救国:在某一个策略中使用:self.cerebro.runningstrats就可以看到全部的策略列表了,然后使用下标即可定位具体的策略原创 2022-05-25 15:09:16 · 517 阅读 · 0 评论 -
使用quantstats对金融回测结果进行评估
QuantStats的github页面:https://github.com/ranaroussi/quantstats原创 2022-05-22 20:16:46 · 2387 阅读 · 0 评论 -
Backtrader解决多股回测时跳过日期的问题
股票的上市日期各不相同,有些也退市了。在回测时,Backtrader会遍历所有的数据,选择有效期的**交集**开始执行```next()```。这时我们的选股策略就会因为数据的问题出现一段时间的空窗期,所以我们不要用```next()```来执行,而是用```prenext()```来执行,Backtrader会循环所有的数据,选择最小的那个日期作为开始日,执行```prenext()```,但是此时衍生出两个问题:1. 这只股票的开始日,未必是另一支股票的开始日,这回导致另一只股票没数据2. 一直原创 2022-05-18 14:53:32 · 2495 阅读 · 5 评论 -
解决Backtrader中self.broker.get_value()值为nan与问题解析
解决方法删除数据源中close为空的行;或者更极端一点,删除存在空值的行。主要查看数据源是否存在缺失值:如果使用Backtrader的默认逻辑,计算value会对应收盘价,收盘价不能有缺失值如果使用开盘价购买,则开盘价不能有缺失值问题解析程序中计算在next()之后,代码跳转到cerebro.py文件中第1688行,执行self_brokernotify()然后,跳转到1355行,执行def _brokernotify(self)然后,跳转到brokers/bbroker.py文件的第原创 2022-05-17 15:55:35 · 1347 阅读 · 0 评论 -
Backtrader获得当前持仓详情——持仓数量与持仓的名称
Backtrader通过Position得到持仓的情况Position官方文档:https://www.backtrader.com/docu/position/在策略中,使用self.broker.positions获取全部的仓位情况,包括已清仓的股票,但这不是我们想要的,所以对它进行修改:当前持仓的股票代码在策略中使用:hold_bond_name = []for _p in self.broker.positions: if self.broker.getposition(_p).siz原创 2022-05-17 11:39:58 · 3706 阅读 · 0 评论 -
Backtrader 获得上个交易日的日期
在策略类backtrader.Strategy中使用:self.datetime.date(-1)即可得到上个交易日但是不能得到下个交易日的日期,因为目前还没有循环过这个时间原创 2022-05-17 10:41:47 · 1239 阅读 · 0 评论 -
解决Backtrader交易后cash为nan的问题
解决方法原始数据没有开盘价,添加上即可修改交易规则,比如把:self.buy()中的exectype参数修改为backtrader.Order.Stop更多可以参考:https://www.backtrader.com/docu/order/问题解析这里是因为框架的问题,导致默认参数由于没有开盘价,无法交易导致的一个问题...原创 2022-05-13 16:34:38 · 498 阅读 · 0 评论 -
Backtrader获取数据集当天的全部数据
在Backtrader中使用:self.datas[0].getlinealiases():获得数据的列名list(self.datas[0].lines):行的值因此组合一下: dict(zip( self.datas[0].getlinealiases(), # key [i[0] for i in list(self.datas[0].lines)] # value ))即可得到当前数据的全部值,其中zip()函数是将两个列表对应匹配并打包;dict()则是解原创 2022-05-13 10:27:14 · 1107 阅读 · 0 评论
分享