使用蒙特卡罗模拟的投资组合优化

在金融市场中,优化投资组合对于实现风险与回报之间的预期平衡至关重要。蒙特卡罗模拟提供了一个强大的工具来评估不同的资产配置策略及其在不确定市场条件下的潜在结果。

我们的目标是开发一个蒙特卡罗模拟模型的投资组合优化。参与者将被要求构建和分析由各种资产类别(例如,股票,债券和另类投资)组成的投资组合,以最大化预期回报,同时管理风险。

数据

我们从Kaggle的找到乐资产价格数据,使用CSV文件进行分析。也可以使用yfinance在固定的时间内(b/w开始和结束日期)获得实时股票价格。

然后重点分析了由于多种因素导致的股票“调整后收盘价”。数据的“调整后收盘价”部分是指市场收盘前最后一个交易价格的现金价值。调整后的收盘价归因于任何可能影响当天市场收盘后股价的因素。

调整后的收盘价有助于投资者了解公司行动宣布后股票的公允价值,也有助于保持股票价格开始和结束的准确记录,因此我们选择对其进行分析,而不是收盘价。

我们还需要更深入地了解正在使用的股票之间的关系,以及一个股票的变化如何影响另一个股票。这将有助于投资者分散投资组合,从而将风险降至最低。分散投资很重要,因为当市场下跌时,它可以帮助投资者,因此一些股票可能会抵消其他资产所造成的损失。所以绘制了协方差和相关性的热图

Seaborn的pairplot()函数用于创建散点图矩阵。在这个矩阵中,可以看到stock_returns中的变量是如何成对关联的。由此得出的图表可以让我们深入了解不同公司日收益之间的相关性和模式。

使用下面代码生成一个热图来可视化stock_returns与在所提供的代码段中创建的相关矩阵之间的相关性。

对数收益率和简单收益率

我们通常更喜欢对数收益率而不是收益率。因为它是时间可加的,并且它服从正态高斯分布

我们还可以从对数回报的直方图中看到,它大多以0为中心,看起来有点正态分布。

但这里有一个相当棘手的问题:对于金融数据来说,正态分布是一个好的假设吗?

我们先假设价格或更准确的对数回报是正态分布的。

可以看到,偏差很大,在正态分布中,99.75%的数据在3个标准差以内,而这里不是这样。但是我们如何检验正态性以及如何将其近似为高斯分布。

可以看到,通常将金融数据视为正态分布在大多数情况下是一个不错的假设(除了尾部)。从上图中我们也可以看到,头部和尾部都偏离了正态。

我们还可以证明对数收益是可加的,通过观察当我们将整个过程的对数收益相加,我们得到收盘价。

从上面的代码片段中看到,log的结果准确地预测了它。但是如果我们使用简单收益率,

这些简单的收益率虽然给出了实际值的预测,但不是实际值,因为正态分布变量的乘积不是正态分布的。

简单移动平均线(SMA)

采用移动平均线以消除波动并减少数据中存在的变化数量。这个过程称为时间序列平滑。

可以使用10、20、30天移动平均线,短移动平均线通常用于短期交易,而长移动平均线则用于长期交易。

当我们考虑更多的天数时,这条线变得越来越平滑。所以当考虑更多的天数时,这条线对波动的滞后性就会更大。

计算收益和分配

下面代码片段计算数据列表中每个公司的日收益,并使用直方图可视化这些收益的分布。

我们看到它几乎遵循正态分布,我们说“几乎”,因为在直方图的头部和尾部(我们对其进行了平滑以得出这个结论)并不严格遵循正态分布

随机股票,组合和最大夏普比率

我们这里有一个randomPortfolio()的函数,该函数负责生成一个随机的股票组合。

它通过从标准正态分布中提取随机值,对其取幂以确保其为正值,然后将其规范化以表示总投资组合价值的比例,从而生成随机的股票投资组合。通过调用这个函数,可以为投资组合获得随机分配的股票。

收入组合(Rand)和风险组合(Rand)。这些函数被设计用来执行与投资组合的收入和风险相关的计算。

IncomePortfolio(Rand)函数根据平均收入值和资产配置计算投资组合的预期收入。

RiskPortfolio(Rand)函数根据收益和资产配置的协方差矩阵计算投资组合的风险。

这些函数为评估投资组合的收益和风险特征提供了基本的度量。

将变量“组合”初始化为10000。这个变量决定了将要生成和评估的投资组合的数量

接下来创建三个名为“risk”、“income”和“portfolio”的数组,并将它们初始化为零。这些数组将存储每个组合的风险、收益和投资组合数据。

然后将随机生成的投资组合分配到“投资组合”数组的第i行。“投资组合”数组中的每一行代表不同的股票组合。

调用“RiskPortfolio()”函数,将当前的投资组合作为参数传递。此函数计算与给定投资组合相关的风险。然后使用当前投资组合作为参数调用“IncomePortfolio()”函数。该函数计算投资组合的收益或预期收益。

该比率是指每单位波动率或总风险的平均收益超过无风险利率。波动性是衡量资产或投资组合价格波动的指标。

无风险收益率是指零风险投资的回报,也就是说,这是投资者在不承担风险的情况下所期望的回报。

最优风险投资组合是夏普比率最高的投资组合。

通过在其相应的风险和收益值上添加一个红点,使用一个图例来识别最大夏普比率。散点图直观地表示了投资组合的风险和收益关系。

最佳投资组合是具有最大夏普比率的投资组合,其权重也可以提取的。

该代码标识夏普比率最高的投资组合,然后显示分配给该投资组合中每个公司的分配或权重。使我们能够看到资产或公司在最佳表现的投资组合中是如何分配的。

使用蒙特卡罗模拟未来的价格预测

所提供的代码片段引入了一个名为monte_carlo的函数,该函数使用蒙特卡罗方法来模拟股票的未来价格。

对于随机路径的生成,这里使用了算术布朗运动,也可以使用几何布朗运动。

算术布朗运动

方差越大,价差越大,陡峭度越小。

在蒙特卡罗模拟的前提下,如果方差较小,生成的随机路径将较少微分,如果方差较大,则产生更平坦的曲线,则生成的随机路径将更多。

monte_carlo函数使用蒙特卡罗方法生成指定天数的模拟股票价格。它考虑了初始股票价格、平均日收益和日收益的标准差。该函数结合随机冲击和漂移组件来计算每天的模拟价格。

这段代码通过1000次模拟来预测Twitter的未来价格,从而对Twitter的股票进行蒙特卡洛分析。这些模拟的最终价格存储在“sim”数组中并绘制出来。通过这样做,代码提供了对Twitter股票未来价格范围的潜在洞察,这是由蒙特卡洛模拟确定的。

所提供的代码构造了一个直方图来说明从蒙特卡洛模拟中得到的Twitter股票模拟价格的分布。可视化包括概述模拟价格的平均值、标准偏差和初始价格的文本注释。根据蒙特卡洛模拟,这种可视化表示为Twitter未来股价的潜在范围和特征提供了有价值的见解。

下一步工作

我们上面只是简单进行了蒙特卡罗模拟,如果想深入研究,还可以进行以下工作:

1、采用Q-Q图(如上所述)、箱形图、Kolmogonov Smirmov测试等正态性度量来量化正态性,这将有助于可视化量化数据的正态性。

2、使用指数移动平均线(EMA), EMA的计算强调最近的数据点。EMA对价格变化的反应比简单移动平均线(SMA)更快。

3、在计算移动平均线时考虑的天数的影响及其对平滑的影响。

4、使用Sortino Ratio、M2 Ratio、Calmar Ratio等其他风险回报指标,并对其差异进行校正,根据场景选择最合适的风险回报指标。

5、利用几何布朗运动(GBM)代替算术布朗运动(ABM)生成随机路径,将随机路径输入到蒙特卡罗仿真中。观察改变风险因素如何影响最优投资组合。

本文代码:

https://avoid.overfit.cn/post/9d7e2c80f7464d0b94b364e3d53f64be

作者:Aman Behera

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/182838.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Camtasia2024破解版电脑屏幕录制剪辑软件

屏幕录制剪辑 TechSmith Camtasia for Mac v2021是 TechSmith 公司所开发出一款专业屏幕录像和编辑, Camtasia Studio2024版是由TechSmith公司官方进行汉化推出的最新版本,除2023版以下版本均没有官方汉化。 同时TechSmith公司打击第三方贩卖Camtasia Studio汉化的…

数据库的备份和恢复

备份:完全备份,增量备份 完全备份:将整个数据库完整的进行备份 增量备份:在完全备份基础的之上,对后续新增的内容进行备份 备份的需求 1生产环境中,数据的安全性至关重要,任何数据都可能产生非…

Disk Drill v5.3.1313(数据恢复备份)

Disk Drill是一款功能强大的数据恢复软件,它可以帮助用户恢复已删除、丢失、格式化或损坏的文件,并支持多种存储设备,包括计算机硬盘驱动器、外部硬盘、USB闪存驱动器、内存卡和其他存储介质。它和很多的文件系统都兼容,比如&…

NOIP2023模拟12联测33 B. 游戏

NOIP2023模拟12联测33 B. 游戏 文章目录 NOIP2023模拟12联测33 B. 游戏题目大意思路code 题目大意 期望题 思路 二分答案 m i d mid mid ,我们只关注学生是否能够使得被抓的人数 ≤ m i d \le mid ≤mid 那我们就只关心 a > m i d a > mid a>mid 的房…

No Presto metadata available for docker-ce-stable

Linux CentOS中执行Docker一键安装脚本报错: No Presto metadata available for docker-ce-stable 执行以下命令可以解决,整个过程比较耗费时间,请耐心等待。 yum install docker-ce -y

蓝桥杯每日一题2023.11.6

取位数 - 蓝桥云课 (lanqiao.cn) 题目描述 题目分析 由题意我们知道len中为现阶段长度&#xff0c;如果其与k相等也就是找到了正确的位数&#xff0c;否则就调用递归来进行搜索&#xff0c;每次搜索一位数。 #include <stdio.h> // 求x用10进制表示时的数位长度 int …

LED点阵显示原理(取字模软件+Keil+Proteus)

前言 写这个的时候我还是有点生气的&#xff0c;因为发现完全按照书上面的步骤来&#xff0c;结果发现不理想&#xff0c;后面还是自己调试才解决了。-_-说多了都是泪&#xff0c;直接进入正文。 软件的操作还是参考我之前的博客。 LED数码管的静态显示与动态显示&#xff0…

基于wireguard与NAT实现windows10代理服务器

参考文章&#xff1a;https://blog.csdn.net/babytiger/article/details/127111474 一、 下载windows 安装包 下载wireguard安装包 二、 配置服务端&#xff1a; 新建空隧道并保存为server1&#xff0c;配置如下&#xff1a; 点击保存&#xff0c;并连接&#xff0c;多了个se…

Docker数据管理、网络与Cgroup资源限制

目录 一、Docker的数据管理 1、数据卷 2、数据卷容器 3、端口映射 4、容器互联 二、Docker网络 2.1Docker网络实现原理 2.2Docker 的网络模式 3.3网络模式详解&#xff1a; host模式 container模式 none模式 bridge模式 自定义网络 创建自定义网络 三、Cgroup资源…

Harbor企业级Registry基础镜像仓库的详细安装使用教程(保姆级)

Harbor Docker 官方提供的私有仓库 registry&#xff0c;用起来虽然简单 &#xff0c;但在管理的功能上存在不足。 Harbor是vmware一个用于存储和分发Docker镜像的企业级Registry服务器&#xff0c;harbor使用的是官方的docker registry(v2命名是distribution)服务去完成。 ha…

shell综合项目

主菜单 http和Nginx分别的install的菜单&#xff0c;安装过程通过重定向到/dev/null达到看不见的效果 输入非整数或者大于4的数字都会提示错误 代码如下: [rootserver ~]# vim install_menu.sh #!/bin/bash function menu() { cat << EOF …

蓝桥杯官网填空题(方格计数)

题目描述 本题为填空题&#xff0c;只需要算出结果后&#xff0c;在代码中使用输出语句将所填结果输出即可。 如下图所示&#xff0c;在二维平面上有无数个 11 的小方格。 我们以某个小方格的一个顶点为圆心画一个半径为 50000 的圆。 你能计算出这个圆里有多少个完整的小方…

CSAPP BOMB LAB part2

bomb lab part2 phase3 将rsp0xc存入rcx, 将rsp0x8存入rdx, 地址0x4025cf存储格式&#xff0c;然后调用好sscanf函数&#xff0c; 当rsp0x8的值大于0x7, 会跳转到400fad, 会boom!!! 所以rsp0x8的值不大于0x7。 0x8rsp的值不进入ja的代码段&#xff0c;会执行400f71对应的指令…

docker---dockerfile相关知识

第 3 章 Docker 高级实践 在这一部分我们主要来介绍一些Docker的高级内容&#xff1a; Dockerfile 和 Docker compose 3.1 Dockerfile Dockerfile我们从下面的几个方面来介绍&#xff1a; Dockerfile简介 Dockerfile快速入门 Dockerfile详解 Dockerfile简单 实践 3.1.1 Docke…

阿里云安全恶意程序检测(速通一)

阿里云安全恶意程序检测 赛题理解赛题介绍赛题说明数据说明评测指标 赛题分析数据特征解题思路 数据探索数据特征类型数据分布箱型图 变量取值分布缺失值异常值分析训练集的tid特征标签分布测试集数据探索同上 数据集联合分析file_id分析API分析 特征工程与基线模型构造特征与特…

【Kubernetes部署】通过Kubeadm部署Kubernetes高可用集群

Kubeadm 一、kubeadm部署思路二、基本架构2.1 资源分配2.2 系统初始化操作&#xff08;所有节点&#xff09;2.2.1关闭防火墙、selinux和swap分区2.2.2 修改主机名&#xff0c;添加域名映射2.2.3 内核相关2.2.4 加载ip_vs模块2.2.5 时间同步 三、部署docker3.1 通过yum安装dock…

程序员笔记本电脑选 windows 还是 MAC

计算机选择是每个进入 IT 行业同学的第一个重要选择&#xff0c;那么你是怎么选择的呢&#xff1f; 选择操作系统&#xff08;Windows还是macOS&#xff09;取决于程序员的需求、偏好和工作流程。每个操作系统都有其优点和缺点&#xff0c;下面将分别讨论它们&#xff0c;以帮助…

小红书运营篇1,新手如何快速分析拆解对标账号

hi&#xff0c;同学们&#xff0c;本期是第1期AI运营技巧篇 很多新手博主初期都非常迷茫&#xff0c;主要是因为他们没有找对标账号&#xff0c;也没有充分分析同行账号。 有些人可能会说&#xff0c;“我不想参考同行&#xff0c;我想要追求创新”。这种勇气是真的非常值得鼓…

文件夹批量改名:轻松实现文件夹随机重命名

无论是在我们的日常生活还是工作中&#xff0c;批量重命名文件夹是一项非常常见的任务。当我们需要整理或分类大量的文件时&#xff0c;往往需要对相应的文件夹进行重命名。然而&#xff0c;手动一个接一个地完成这个任务不仅会消耗大量的时间&#xff0c;还容易在重命名过程中…

JS逆向爬虫---请求参数加密②【某麦数据analysis参数加密】

主页链接: https://www.qimai.cn/rank analysis逆向 完整参数生成代码如下&#xff1a; const {JSDOM} require(jsdom) const dom new JSDOM(<!DOCTYPE html><p>hello</p>) window dom.windowfunction customDecrypt(n, t) {t t || generateKey(); //…