基于python的金融分析与风险管理-代码块-c8-股票投资组合

news/2024/10/24 15:21:03

绘图

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt  
##Matplotlib是一个用于绘制数据可视化的Python库。它提供了一种类似于Matlab的绘图接口,可以用于生成各种静态、动态、交互式的图形,包括线图、散点图、柱状图、饼图、等高线图等。
###Matplotlib具有强大的功能和灵活的可定制性,可以满足各种数据可视化的需求。from pylab import mpl  
##pylab是一个Python库,用于科学计算,数据分析和绘图。它是Matplotlib库的一个模块,提供了类似于MATLAB的绘图接口。
##pylab库结合了NumPy库和Matplotlib库的功能,使得用户可以使用简单的命令来创建和定制各种类型的图形。mpl.rcParams['font.sans-serif']= ['SimHei']  
##这段代码的意思是设置matplotlib图表的默认字体为"SimHei",即使用"SimHei"字体来显示中文。mpl.rcParams['axes..unicode _minus']= False  
##  mpl.rcParams[‘axes.unicode_minus’] = False是Matplotlib库中的一个配置参数,用于设置轴标签是否显示减号的Unicode字符。应该是不显示负轴的意思index_data = pd.read_excel('C:/desktop/a.xlsx', sheet_name = "sheet1", header = 0, index_col = 0)  
## 数据的第一行将被作为列名,第一列将被作为行索引。读取的数据将被存储在名为index_data的Pandas DataFrame中。index_data.plot(subplots= True, layout = (2,2), figsize = (10, 10), fontsize = 13, grid = True)  
##这行代码是用来绘制一个包含4个子图的图表,并设置图表的布局为2行2列。
##其中,参数subplots=True表示创建子图,layout=(2,2)表示布局为2行2列,figsize=(10,10)表示图表的大小为10x10英寸,fontsize=13表示字体的大小为13,grid=True表示显示网格线。

随机数

##预期收益率
x = np.random.random(5) ##这些随机浮点数的范围在0到1之间。
weights = x/np.sum(x)  #broadcasting
print(weights)
round(sum(weights,2) #检验

方差

(data/data.iloc[0]).plot(figsize = (8,6))  ##根据第一行进行归一化R = np.log(data/data.shift(1)) ###data.shift(1)将数据框中的每一列向下移动一行,并将第一行的值替换为缺失值。
####对数收益率
R = R.dropna()
R = R.describe()
R.hist(bins = 40, figsize = (10, 10))  #其中参数bins=40表示将数据分成40个区间,每个区间表示一个柱子
R_mean = R.mean()*252
R_cov = R.cov()*252
R_corr = R.corr()
R_vol = R.std()*mp.sqrt(252)R_port = np.sum(weights * R_mean)  #投资组合预期收益率
vol_port = np.sqrt(np.dot(weights, np.dot(R_cov, weights.T)))  ###投资组合方差

模拟有效前沿

Rp_list = []  ##列表是Python中用来存储多个值的数据结构,可以存储不同类型的数据。
Vp_lisp = []
for i in np.range(1000):x = np.random.random(5)weights = x/sum(x)Rp_list.append(np.sum(weights*R_mean))Vp_list.append(np.sqrt(np.dot(weights, np.dot(R_cov, weights.T))) )plt.figure()   ###用于创建一个新的图形窗口
plt.scatter(Vp_list, Rp_list)
plt.xlabel((u'波动率',fontsize = 13)
plt.ylabel((u'收益率',fontsize = 13, rotation = 0)  ##rotation=0表示标签不旋转
plt.xticks(fontsize = 13) ###设置x轴刻度的字体大小
plt.yticks(fontsize = 13)
plt.xlim(0.1, 0.28) ###用于设置x轴的取值范围
plt.ylim(-0.1, 0.2)
plt.title(u'投资组合收益率与波动率的关系', fontsize= 13)
plt.grid('True')  #plt.grid(‘True’)用于显示图形的网格线
plt.show()  ###plt.show()用于显示图形

最优解 optimize包

import scipy.optimize as sco
def f(w):w = np.array(w)  #将变量w转换为NumPy数组Rp_opt = np.sum(w*R_mean)Vp_opt = np.sqrt(np.dot(w, np.dot(R_cov, w.T)))return np.array([Rp_opt, Vp_opt])def Vmin_f(w):return f(w)[1]   ###读取第一个数字cons = ({'type':'eq', 'fun':lambda x:np.sum(x)-1}, {'type':'eq', 'fun':lambda x:f(x)[0]-0.1})  
###该变量用于optimize
bnds = tuple(0,1) ##以元组格式生成边界条件
fox x in range(len(R_mean))results = scp.minimize(Vmin_f, lem

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

强化学习的数学原理-03贝尔曼最优公式

目录最优策略和公式推导右侧最优化问题公式求解以及最优性Contraction mapping theorem(压缩映射定理)解决贝尔曼最优公式分析最优策略(analyzing optimal policies)Summary 最优策略和公式推导 首先定义一个策略比另一个策略好: \[v_{\pi_{1}}(s) \ge v_{\pi_{2}}(s) \quad…

css3实现文字线性渐变,css3实现背景渐变

<div class=who1>我是线性渐变文字我是线性渐变文字我是线性渐变文字我</div> <div class=who2>我是背景渐变我是背景渐变我是背景渐变我是背景渐变我</div>.who1{width:400px; background: linear-gradient(to right, #ff0000, #ffff00); /*设置渐…

吉客云数据集成到金蝶云星空:盘盈入库单对接方案

吉客云数据集成到金蝶云星空:盘盈入库单对接方案 在企业资源管理中,数据的准确性和实时性至关重要。本文将分享一个具体的系统对接集成案例,即如何将吉客云中的盘盈入库单数据高效、可靠地集成到金蝶云星空中,形成盘盈单。 为了实现这一目标,我们采用了数据集成平台,通过…

Linux 中 awk命令整列的替换

001、测试数据[root@localhost test2]# ls a.txt [root@localhost test2]# cat a.txt 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 …

ElevenLabs Voice Design :可通过文本创建个性化语音;苹果推出首个开发者测试版丨 RTE 开发者日报

开发者朋友们大家好:这里是 「RTE 开发者日报」 ,每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享 RTE(Real-Time Engagement) 领域内「有话题的 新闻 」、「有态度的 观点 」、「有意思的 数据 」、「有思考的 文章 」、「有看点的 会议 」,但内容仅代表编辑…

nginx总结

使用auth_basic控制访问nginx代理的网站,直接访问如果需要添加安全性,如需要输入用户名+密码才能访问页面,可以通过nginx的auth_baisc配置来实现检查htpasswd 一般nginx的安装之后会自带或者nginx容器镜像自带 root@ea6255db9f51:/config/nginx/site-confs# htpasswd Usage:…

1024程序员节Fast Request发福利啦

今天是 1024 程序员节,祝各位老铁程序员节快乐!愿大家安全上线,永无 bug,代码行行如丝滑。 首先,特别感谢大家一直以来对 Fast Request 的支持与厚爱。在这个属于程序员的节日里,我们准备了一波诚意满满的福利,送给每一位辛勤付出的你! 以下福利是我们对大家辛勤付出的…

浪潮服务器开机不进系统

浪潮服务器开机无法进入系统的问题,可能由多种因素导致。以下是一些常见的原因及其相应的解决方法: 一、电源故障 问题描述:电源故障可能导致服务器无法正常启动。 解决方法: 检查电源插头和电源线是否松动或损坏。 确保电源供应正常,尝试更换电源线或连接到其他插座进行测…