基于Python实现有效前沿(Efficient Frontier)
马科维兹有效前沿
有效前沿亦称“有效边界”。理性的投资者一般是厌恶风险而偏好收益的,对于相同的风险水平,会选择能提供最大收益率的组合;对于相同的预期收益率,会选择风险最小的组合。能同时满足这些条件的投资组合就是有效前沿。
“现代投资组合理论”(MPT)是1952年哈里.马克维茨在金融期刊上发表的名为“Portfolio Selection”的文章上提出的投资理论。
虽然在一个投资组合的收益为所有股票收益的平均值/加权平均值,但这个投资组合的风险不等于投资组合里所有股票风险的平均值/加权平均值。风险就是指一个资产的变化情况,如果在你的投资组合里有多只股票,那么你就需要计算一下这些股票之间变化的相关性。多样性的好处在于,你可以通过优化资产配置,使得该投资组合的风险低于投资组合中风险最低的股票的风险。
基于Python实现马科维兹有效前沿
import numpy as np
import pandas as pd
import matplotlib.pyplot as plttickers = ['601100.SH', '600000.SH', '600031.SH']def put_some_stock_close_price_into_df():some_close_price_df = pd.DataFramefor count, ticker in enumerate(tickers):df = pd.read_csv('stock_dfs/{}.csv'.format(ticker))df.set_index('trade_date', inplace=True)df.drop(['index', 'ts_code', 'open', 'high', 'low','pre_close', 'change','pct_chg', 'vol', 'amount'], 1, inplace=True)df.rename(columns={'close':ticker}, inplace=True)if some_close_price_df.empty:some_close_price_df = dfelse:some_close_price_df = some_close_price_df.join(df,how='outer')print('This is {} step'.format(count))some_close_price_df.to_csv('CSI_selected_stocks_close_price.csv')#put_some_stock_close_price_into_df()df = pd.read_csv('CSI_selected_stocks_close_price.csv')
df = df.set_index('trade_date')
df = df.dropna()daily_returns = df.pct_change()
year_returns = daily_returns.mean()*250daily_cov = daily_returns.cov()
year_cov = daily_cov * 250portfolio_return = []
portfolio_volatility = []
stock_weight = []num_assets = len(tickers)
num_portfolio = 5000for single_portfolio in range(num_portfolio):weight = np.random.random(num_assets)weight /= np.sum(weight)returns = np.dot(weight, year_returns)volatility = np.sqrt(np.dot(np.dot(weight, year_cov), weight.T))portfolio_return.append(returns)portfolio_volatility.append(volatility)stock_weight.append(weight)portfolio = {'Return':portfolio_return,'Volatility':portfolio_volatility}
for counter , ticker in enumerate(tickers):portfolio[ticker + ' weight'] = [weight[counter] for weight in stock_weight]df = pd.DataFrame(portfolio)
df.to_csv('big_data.csv')plt.style.use('seaborn')
df.plot.scatter(x='Volatility', y='Return', grid=True)
plt.xlabel('Volatility / std Deviation')
plt.ylabel('Expected Return')
plt.title('Efficient Frontier')
plt.show()
基于Python实现有效前沿(Efficient Frontier)相关推荐
- 利用python 绘制有效边界efficient frontier
利用python 绘制有效边界efficient frontier import numpy as np import pandas as pd import scipy as sp import s ...
- Python之GUI:基于Python的GUI界面设计的一套AI课程学习(机器学习、深度学习、大数据、云计算等)推荐系统(包括语音生成、识别等前沿黑科技)
Python之GUI:基于Python的GUI界面设计的一套AI课程学习(机器学习.深度学习.大数据.云计算等)推荐系统(包括语音生成.识别等前沿黑科技) 导读 基于Python的GUI界面设计的一套 ...
- abaqus生成odb文件_【前沿技术】基于Python的ABAQUS二次开发在飞机蒙皮锤铆中的应用...
基于Python的ABAQUS 二次开发在飞机 蒙皮锤铆中的应用 在飞机蒙皮铆接技术中,锤铆是用一个小冲击力循环累计施加到铆钉使之变形的过程.根据锤铆铆接工艺和铆枪结构原理,铆钉的塑性变形是由铆枪的活 ...
- 基于Python的高校请假管理信息系统开发(Django框架)
摘要 伴随着信息技术的发展与成熟,使用计算机进行人员的科学高效管理模式代替效率低下的人工管理模式已经发展为当下时代的潮流,同时也是当下社会发展的需求.当下,许多高校仍然没有开发出相应的请假管理 ...
- 基于JQData的有效前沿组合及投资组合优化
[转载] 基于JQData的有效前沿组合及投资组合优化 转自 https://www.joinquant.com/community/post/detailMobile?postId=15331&am ...
- JQData | 基于JQData的有效前沿及投资组合优化
基于JQData的有效前沿组合及投资组合优化 转自 https://www.joinquant.com/community/post/detailMobile?postId=15331&pag ...
- python有效边界_Markowitz有效边界和投资组合优化基于Python(附代码)
原标题:Markowitz有效边界和投资组合优化基于Python(附代码) 本期作者:Bernard Brenyah 本期翻译:Barry 未经授权,严禁转载 哈里马科维茨对金融和经济学的世界的贡献是 ...
- causal-learn:基于Python的因果发现算法平台
来源:集智俱乐部 本文约1100字,建议阅读5分钟 本文为你介绍基于Python的统一算法基本框架. Causal-learn,由CMU张坤老师主导,多个团队(CMU因果研究团队.DMIR实验室.宫明 ...
- 基于python的界面自动化测试-基于Python语言的自动化测试系统的设计与实现
黄建军+李宥谋+刘婧+周欢 摘 要: 通过分析现代工业生产对自动化测试系统的要求,提出一种基于面向对象的编程语言Python构建的自动化测试系统.利用Python语言的高效.灵活和简洁等特点,结合Py ...
最新文章
- ue4场景没阴影_UE4性能调试分析常用方法
- 使用Python的twisted和socket模块实现端口的负载分发
- 2021CCPC河北省省赛F题(河南省CCPC测试赛重现)
- 带有Oracle Digital Assistant和Fn Project的会话式UI。 第三部分,迁移到云
- 煮饭的机器人作文_公示|“笔随我心、心由笔动”作文大赛获奖名单
- 前端学习(1262):fetch请求参数
- Nginx反向代理 实现Web负载均衡
- Bootstrap 按钮状态提示
- code vs 1013 求先序排列
- Vue教程:简介(一)
- s7300plc串口通信_西门子PLC300串口通信协议比较与分析
- CentOS 7服务器上使用Nginx+phpMyAdmin
- 为什么每个人都有发旋?
- 2022蓝桥杯冲刺(历年真题剖析,含省赛、国赛)
- 全国计算机二级公共基础知识电子版,全国计算机二级公共基础知识汇总.pdf
- python3爬取网易云歌单数据清洗_利用Python网络爬虫抓取网易云歌词
- 网络攻防——黛蛇蠕虫病毒
- 2021美赛C思路总结
- How to increase our brain power
- 华为手机备份app从内部恢复
热门文章
- java 配置 svn_svn配置
- 神经网络预测未来人口数量
- 微信小程序控制ESP8266WiFi继电器开关
- python并行处理for循环_如何在Python中将for循环转换为并行处理?
- M6拆机详评——为您解说M6的内心世界
- python12345输出54321_C语言编写程序 :输入一个正整数,将其逆序输出。例如,输入12345,输出54321. 跪求大神用循环语句...
- 现代数据栈,谁主沉浮?
- 吹牛的资本之Hibernate框架,五分钟搞定Hibernate...
- G-sensor的完全校准
- STM32入门笔记03_EXTI外部中断详解+案例:红外对射计数、旋转编码器计数