| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 区块链 -> 利用VAR模型科学管理仓位,提升策略效率 -> 正文阅读 |
|
[区块链]利用VAR模型科学管理仓位,提升策略效率 |
????数量技术宅团队在CSDN学院推出了量化投资系列课程欢迎有兴趣系统学习量化投资的同学,点击下方链接报名:期货行情瞬息万变,保证金体系决定了期货交易的杠杆属性。保证金放多了,资金利用率低,放少了,可能在大幅度的行情波动中造成强平的结果,甚至成为最终盈利和亏损的界限。所以,需要有一个衡量标准,为我们的仓位设置提供参考,VaR模型是科学管理仓位,提升策略效率的一个不错的选择。 VaR模型简述在我们决定仓位的时候,我们其实需要考虑两个重要变量,一个是可能发生的亏损金额,另一个是发生亏损的可能性。用通俗的语言来打个比方,在99%置信区间下,Var值为2w,那么意味着每次交易亏掉2w权益的可能性是1%。具体公式: VaR风险度 = 一定置信度下的VaR值/权益 * 100% VaR模型的计算方法VaR计算方法很多,比如历史模拟法、蒙特卡洛模拟法、核函数法、半参数法、参数法等。 本次我们使用参数法中的Delta-正太模型: 在服从正态分布的假设下,资产Var值为: 式中,$\bar\mu$是资产期望收益,$\bar\sigma$为标准差,$\delta_t$是要计算的时间长度,$Z{1-\alpha}$是从正太分布表中查到的对应于置信度水平$1-\alpha$的Z值,比如$\alpha = 0.01$的$Z{1-\alpha}=2.326$。 在期货市场中,只要我们把保证金控制在Var最大亏损百分比以上,我们就可以认为在这一置信水平下,可以极大程度防范风险。 通过Var模型评估风险数据选择 选取近两年的期货所有品种的连续合约价格,置信度的选择,我们选取了99%和95%两个。 核心代码模块 ? ?if len(data[price].dropna()) != 0: ? ? ? ?#日收益率 收盘价 ? ? ? ?data['d_return'] = data[price].pct_change() ? ? ? ?print(code) ? ? ? ?#收益率均值 ? ? ? ?mean_return = data['d_return'].mean() ? ? ? ? ?#标准差 ? ? ? ?std = data['d_return'].std() ? ? ? ? ?#VAR值 ? ? ? ?var1 = mean_return - Z1 * std ? ? ? ?var5 = mean_return - Z5 * std ? ? ? ? ?#写入表格 ? ? ? ?dic = {'code': code, ? ? ? ? ? ? ? 'var1': var1, ? ? ? ? ? ? ? 'var5': var5} ? ? ? ?if len(table) == 0: ? ? ? ? ? ?table = pd.DataFrame([dic]) ? ? ? ?else: ? ? ? ? ? ?table = table.append([dic]) 部分品种VAR结果可视化 ? ? ? ? ? 买入持有 + VAR那么我们算出了var之后,仓位的变化是否能够改善投资组合的整体表现呢? 为了排除策略的影响,我们让所有品种都采用最简单的买入并持有策略,在这个策略下,使用所有品种平均持仓和根据var进行仓位微调之后,整个策略的表现是否会有影响。 由于我们使用了var1和var5,因此我们以var1的权重weight_var1,记为w1,同样还有w5,w0表示初始权重,所有仓位平均分配。 我们的目标是计算w0,w1,w5的夏普率的差别,看看通过权重的变化,夏普率是否有所改善。 核心代码模块: for code in list['wind_code']: ? ?tmp[code] = data[code]*float(table[table['code'] == code]['w1']) df['w1'] = tmp.sum(axis = 1) df['w1_return'] = df['w1'].pct_change() mean1 = df['w1_return'].mean() std1 = df['w1_return'].std() sharp1 = 2**0.5*mean1/std1 ? for code in list['wind_code']: ? ?tmp[code] = data[code]*float(table[table['code'] == code]['w5']) df['w5'] = tmp.sum(axis = 1) df['w5_return'] = df['w5'].pct_change() mean5 = df['w5_return'].mean() std5 = df['w5_return'].std() sharp5 = 2**0.5*mean5/std5 最终我们计算得出:
可以看到,从夏普率的角度,不论是根据var1调仓还是根据var5调仓,两者数值都有所提高,提高幅度在14.2%。可见,通过VAR模型进行仓位控制,可以在很大程度上,改善投资组合的表现。 VAR仓位管理在量化策略中的表现我们已经验证了仓位在投资组合当中不可替代的作用,那么在实际的应用表现中,整体仓位比例的变化对于组合的收益率曲线有什么影响。我们以均线策略模型为例,抽取部分策略品种进行体现。从收益率数据的表现看,不管是组合中的品种表现,还是整个组合的表现,var调仓的效果都要比平均仓位的表现要好一些。 部分品种比较曲线,w1代表原始策略表现,w0代表经VAR调整仓位后策略表现: ? 品种汇总曲线,同样的,w1代表原始策略表现,w0代表经VAR调整仓位后策略表现: ? ? 想要获取本次分享的完整代码,或是任何关于数据分析、量化投资的问题,欢迎添加技术宅微信:sljsz01,一起交流 ?? 往期干货分享推荐阅读 万物皆可秒——淘宝秒杀Python脚本,扫货618,备战双11! Omega System Trading and Development Club内部分享策略Easylanguage源码 量化交易如何选择云服务器,如何在本地远程开发与调试云服务器程序 【数量技术宅|量化投资策略系列分享】基于指数移动平均的股指期货交易策略 AMA指标原作者Perry Kaufman 100+套交易策略源码分享 【数量技术宅|金融数据分析系列分享】套利策略的价差序列计算,恐怕没有你想的那么简单 【数量技术宅|量化投资策略系列分享】成熟交易者期货持仓跟随策略 【数量技术宅|金融数据分析系列分享】为什么中证500(IC)是最适合长期做多的指数 ??大宗商品现货数据不好拿?商品季节性难跟踪?技术宅带你Python爬虫一键解决没烦恼 【数量技术宅|金融数据分析系列分享】如何正确抄底商品期货、大宗商品 【数量技术宅|量化投资策略系列分享】股指期货IF分钟波动率统计策略 【数量技术宅 | Python爬虫系列分享】实时监控股市重大公告的Python爬虫 ? ? |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 | -2024/12/27 10:48:07- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |
数据统计 |