首页 > 编程语言 >基于python的金融分析与风险管理-代码块-c8-股票投资组合

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

时间:2024-10-24 15:12:17浏览次数:6  
标签:13 plt python ## c8 weights np 股票投资 ###

绘图

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

标签:13,plt,python,##,c8,weights,np,股票投资,###
From: https://www.cnblogs.com/rdwalk/p/18499638

相关文章

  • 使用跳板机在 PyCharm 中配置远程服务器的 Python 环境
    使用跳板机在PyCharm中配置远程服务器的Python环境在需要通过跳板机连接到远程服务器时,PyCharm提供了一些内置的方式,可以让你通过中间服务器访问远程机器上的Python解释器。本指南将介绍如何使用PyCharm通过跳板机连接,并在远程服务器上运行Python。前提条件PyCharm......
  • python编程语言实现身份证实名认证?身份证查询接口
    互联网的便利性犹如一把双刃剑,在给人们带来便利的同时,也滋生了网络诈骗、网络水军等影响网络健康、安全的隐患。为了更好地监管网络安全,建设绿色、健康的网络环境,互联网平台软件均开始实行实名认证,下面以翔云身份证实名认证接口为例。翔云身份证实名认证接口,实时联网,通过......
  • python编程语言实现身份证实名认证?身份证查询接口
    互联网的便利性犹如一把双刃剑,在给人们带来便利的同时,也滋生了网络诈骗、网络水军等影响网络健康、安全的隐患。为了更好地监管网络安全,建设绿色、健康的网络环境,互联网平台软件均开始实行实名认证,下面以翔云身份证实名认证接口为例。翔云身份证实名认证接口,实时联网,......
  • python C3算法
    PythonMROC3算法是python当中计算类继承顺序的一个算法,从python2.3以后就一直使用此算法了。c3linearization算法称为c3线性化算法C3算法原理首先定义几个符号的意义:符号意义L针对一个类进行解析用L进行表示,例如L(A)表示对类A进行解析merge合并操作的一个函......
  • Python的买家秀大揭秘:用代码点亮API数据
    在一个充满无限可能的数字世界里,Python侦探正准备开始他的新任务:揭开买家秀API数据的神秘面纱。这不仅是一次技术的挑战,更是一次与时间赛跑的较量。Python侦探,这位编程界的福尔摩斯,打开了他的笔记本电脑,准备开始这场冒险。Python侦探知道,要获取买家秀的API数据,他需要使用一些......
  • knime集成python实现当库存大于售出的80%发邮件给对应的客户实战案例
    数据样例:......
  • Python爬虫:爬取B站视频(详细讲解)
    Hello,大家好,我是南枫,今天带来什么项目呢?就是——爬B站视频。刷过B站的都知道,B站并没有下载功能,连官网都没有下载功能的话,那我们还能正常爬取吗?当然~首先我们要知道B站视频是分为视频和音频两部分,所以我们抓下来还不行,还需要把视频和音频给拼接起来。工作量乍一看感觉很大,其......
  • python_matlab图像去雾_去雨综述
    图像去雾和去雨是计算机视觉领域的两个重要任务,旨在提高图像质量和可视化效果。本文将综述图像去雾和去雨的算法、理论以及相关项目代码示例。一、图像去雾算法基于暗通道先验的方法:这是广泛应用于图像去雾的经典算法之一。该方法基于一个观察:自然场景中的大多数像素在......
  • 2024年韩顺平老师Python教程保姆级笔记
    代码获取:https://github.com/qingxuly/hsp_python_coursePython语言描述Python转义字符Python常用的转义字符转义字符说明\t制表符,实现对齐的功能\n换行符,\\一个\\"一个"\'一个'\r一个回车代码演示#\t制表符print("jack\t20")​#\n换行print("Hello,jack......
  • wrf-python安装教程
    记录一下wrf-python安装过程安装过程中出现了许多报错,这里记录了成功安装的完整流程。1.创建新环境#创建一个新环境推荐使用3.11版本condacreate-nWRFpython=3.11condaactivateWRF2.搭建Fortran环境1.安装visualstudio(自行前往官网下载)2.安装OneAPI(Base......