python画蜡烛致敬烈士_「」matplotlib 股票-用python绘制蜡烛线型k线图是用代码还是绘图工具-TOP金融网...

用python绘制蜡烛线型k线图是用代码还是绘图工具

import matplotlib.pyplot as plt

from matplotlib.dates import DateFormatter, WeekdayLocator, DayLocator, MONDAY,YEARLY

from matplotlib.finance import quotes_historical_yahoo_ohlc, candlestick_ohlc

plt.rcParams['font.sans-serif'] = ['SimHei']

plt.rcParams['axes.unicode_minus'] = False

ticker = '600028' # 600028 是"中国石化"的股票代码

ticker += '.ss'   # .ss 表示上证 .sz表示深证

date1 = (2015, 8, 1) # 起始日期,格式:(年,月,日)元组

date2 = (2016, 1, 1)  # 结束日期,格式:(年,月,日)元组

mondays = WeekdayLocator(MONDAY)            # 主要刻度

alldays = DayLocator()                      # 次要刻度

#weekFormatter = DateFormatter('%b %d')     # 如:Jan 12

mondayFormatter = DateFormatter('%m-%d-%Y') # 如:2-29-2015

dayFormatter = DateFormatter('%d')          # 如:12

quotes = quotes_historical_yahoo_ohlc(ticker, date1, date2)

if len(quotes) == 0:

raise SystemExit

fig, ax = plt.subplots()

fig.subplots_adjust(bottom=0.2)

ax.xaxis.set_major_locator(mondays)

ax.xaxis.set_minor_locator(alldays)

ax.xaxis.set_major_formatter(mondayFormatter)

#ax.xaxis.set_minor_formatter(dayFormatter)

#plot_day_summary(ax, quotes, ticksize=3)

candlestick_ohlc(ax, quotes, width=0.6, colorup='r', colordown='g')

ax.xaxis_date()

ax.autoscale_view()

plt.setp(plt.gca().get_xticklabels(), rotation=45, horizontalalignment='right')

ax.grid(True)

plt.title('中国石化 600028')

plt.show()

如何用python实现Markowitz投资组合优化

0.导入需要的包import pandas as pd

import numpy as np

import statsmodels.api as sm #统计运算

import scipy.stats as scs #科学计算

import matplotlib.pyplot as plt #绘图

1.选取几只感兴趣的股票

000413 东旭光电,000063 中兴通讯,002007 华兰生物,000001 平安银行,000002 万科A

并比较一下数据(2015-01-01至2015-12-31)

In[1]:

stock_set = ['000413.XSHE','000063.XSHE','002007.XSHE','000001.XSHE','000002.XSHE']

noa = len(stock_set)

df = get_price(stock_set, start_date = '2015-01-01', end_date ='2015-12-31', 'daily', ['close'])

data = df['close']

#规范化后时序数据

(data/data.ix[0]*100).plot(figsize = (8,5))

Out[1]:

2.计算不同证券的均值、协方差

每年252个交易日,用每日收益得到年化收益。计算投资资产的协方差是构建资产组合过程的核心部分。运用pandas内置方法生产协方差矩阵。

In [2]:

returns = np.log(data / data.shift(1))

returns.mean()*252

Out[2]:

000413.XSHE 0.184516

000063.XSHE 0.176790

002007.XSHE 0.309077

000001.XSHE -0.102059

000002.XSHE 0.547441

In [3]:

returns.cov()*252

Out[3]:

3.给不同资产随机分配初始权重

由于A股不允许建立空头头寸,所有的权重系数均在0-1之间

In [4]:

weights = np.random.random(noa)

weights /= np.sum(weights)

weights

Out[4]:

array([ 0.37505798, 0.21652754, 0.31590981, 0.06087709, 0.03162758])

4.计算预期组合年化收益、组合方差和组合标准差

In [5]:

np.sum(returns.mean()*weights)*252

Out[5]:

0.21622558669017816

In [6]:

np.dot(weights.T, np.dot(returns.cov()*252,weights))

Out[6]:

0.23595133640121463

In [7]:

np.sqrt(np.dot(weights.T, np.dot(returns.cov()* 252,weights)))

Out[7]:

0.4857482232609962

5.用蒙特卡洛模拟产生大量随机组合

进行到此,我们最想知道的是给定的一个股票池(证券组合)如何找到风险和收益平衡的位置。

下面通过一次蒙特卡洛模拟,产生大量随机的权重向量,并记录随机组合的预期收益和方差。

In [8]:

port_returns = []

port_variance = []

for p in range(4000):

weights = np.random.random(noa)

weights /=np.sum(weights)

port_returns.append(np.sum(returns.mean()*252*weights))

port_variance.append(np.sqrt(np.dot(weights.T, np.dot(returns.cov()*252, weights))))

port_returns = np.array(port_returns)

port_variance = np.array(port_variance)

#无风险利率设定为4%

risk_free = 0.04

plt.figure(figsize = (8,4))

plt.scatter(port_variance, port_returns, c=(port_returns-risk_free)/port_variance, marker = 'o')

plt.grid(True)

plt.xlabel('excepted volatility')

plt.ylabel('expected return')

plt.colorbar(label = 'Sharpe ratio')

Out[8]:

6.投资组合优化1——sharpe最大

建立statistics函数来记录重要的投资组合统计数据(收益,方差和夏普比)

通过对约束最优问题的求解,得到最优解。其中约束是权重总和为1。

In [9]:

def statistics(weights):

weights = np.array(weights)

port_returns = np.sum(returns.mean()*weights)*252

port_variance = np.sqrt(np.dot(weights.T, np.dot(returns.cov()*252,weights)))

return np.array([port_returns, port_variance, port_returns/port_variance])

#最优化投资组合的推导是一个约束最优化问题

import scipy.optimize as sco

#最小化夏普指数的负值

def min_sharpe(weights):

return -statistics(weights)[2]

#约束是所有参数(权重)的总和为1。这可以用minimize函数的约定表达如下

cons = ({'type':'eq', 'fun':lambda x: np.sum(x)-1})

#我们还将参数值(权重)限制在0和1之间。这些值以多个元组组成的一个元组形式提供给最小化函数

bnds = tuple((0,1) for x in range(noa))

#优化函数调用中忽略的唯一输入是起始参数列表(对权重的初始猜测)。我们简单的使用平均分布。

opts = sco.minimize(min_sharpe, noa*[1./noa,], method = 'SLSQP', bounds = bnds, constraints = cons)

opts

Out[9]:

status: 0

success: True

njev: 4

nfev: 28

fun: -1.1623048291871221

x: array([ -3.60840218e-16, 2.24626781e-16, 1.63619563e-01, -2.27085639e-16, 8.36380437e-01])

message: 'Optimization terminated successfully.'

jac: array([ 1.81575805e-01, 5.40387481e-01, 8.18073750e-05, 1.03137662e+00, -1.60038471e-05, 0.00000000e+00])

nit: 4

得到的最优组合权重向量为:

In [10]:

opts['x'].round(3)

Out[10]:

array([-0. , 0. , 0.164, -0. , 0.836])

sharpe最大的组合3个统计数据分别为:

In [11]:

#预期收益率、预期波动率、最优夏普指数

statistics(opts['x']).round(3)

Out[11]:

array([ 0.508, 0.437, 1.162])

7.投资组合优化2——方差最小

接下来,我们通过方差最小来选出最优投资组合。

In [12]:

#但是我们定义一个函数对 方差进行最小化

def min_variance(weights):

return statistics(weights)[1]

optv = sco.minimize(min_variance, noa*[1./noa,],method = 'SLSQP', bounds = bnds, constraints = cons)

optv

Out[12]:

status: 0

success: True

njev: 7

nfev: 50

fun: 0.38542969450547221

x: array([ 1.14787640e-01, 3.28089742e-17, 2.09584008e-01, 3.53487044e-01, 3.22141307e-01])

message: 'Optimization terminated successfully.'

jac: array([ 0.3851725 , 0.43591119, 0.3861807 , 0.3849672 , 0.38553924, 0. ])

nit: 7

方差最小的最优组合权重向量及组合的统计数据分别为:

In [13]:

optv['x'].round(3)

Out[13]:

array([ 0.115, 0. , 0.21 , 0.353, 0.322])

In [14]:

#得到的预期收益率、波动率和夏普指数

statistics(optv['x']).round(3)

Out[14]:

array([ 0.226, 0.385, 0.587])

8.组合的有效前沿

有效前沿有既定的目标收益率下方差最小的投资组合构成。

在最优化时采用两个约束,1.给定目标收益率,2.投资组合权重和为1。

In [15]:

def min_variance(weights):

return statistics(weights)[1]

#在不同目标收益率水平(target_returns)循环时,最小化的一个约束条件会变化。

target_returns = np.linspace(0.0,0.5,50)

target_variance = []

for tar in target_returns:

cons = ({'type':'eq','fun':lambda x:statistics(x)[0]-tar},{'type':'eq','fun':lambda x:np.sum(x)-1})

res = sco.minimize(min_variance, noa*[1./noa,],method = 'SLSQP', bounds = bnds, constraints = cons)

target_variance.append(res['fun'])

target_variance = np.array(target_variance)

下面是最优化结果的展示。

叉号:构成的曲线是有效前沿(目标收益率下最优的投资组合)

红星:sharpe最大的投资组合

黄星:方差最小的投资组合

In [16]:

plt.figure(figsize = (8,4))

#圆圈:蒙特卡洛随机产生的组合分布

plt.scatter(port_variance, port_returns, c = port_returns/port_variance,marker = 'o')

#叉号:有效前沿

plt.scatter(target_variance,target_returns, c = target_returns/target_variance, marker = 'x')

#红星:标记最高sharpe组合

plt.plot(statistics(opts['x'])[1], statistics(opts['x'])[0], 'r*', markersize = 15.0)

#黄星:标记最小方差组合

plt.plot(statistics(optv['x'])[1], statistics(optv['x'])[0], 'y*', markersize = 15.0)

plt.grid(True)

plt.xlabel('expected volatility')

plt.ylabel('expected return')

plt.colorbar(label = 'Sharpe ratio')

【本文标题和网址】matplotlib 股票-用python绘制蜡烛线型k线图是用代码还是绘图工具:http://www.jjta.cn/pzzx/201144.html

声明本站分享的文章旨在促进信息交流,不以盈利为目的,本文观点与本站立场无关,不承担任何责任。如有伤害到您的利益,请联系站长删除!

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

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

相关文章

[html] 后缀.html和.htm有什么区别?

[html] 后缀.html和.htm有什么区别? 历史遗留问题,原来的结尾只能由三个字母,是一摸一样的。个人简介 我是歌谣,欢迎和大家一起交流前后端知识。放弃很容易, 但坚持一定很酷。欢迎大家一起讨论 主目录 与歌谣一起通…

oracle数据同步异常,案例:DataGuard同步异常问题处理记录

本帖最后由 yuanqk 于 2018-8-11 20:28 编辑真实案例,记录一下,都是小白,非常理解小白在遇到问题时的无奈,希望能帮助到一些人。过程非常简单,主要是处理问题的思路。1、早上收到告警,说备库有15个归档没有…

获取图片倒影效果

获取图片倒影效果 View Code 1 /**2 * 获取传入图片的倒影3 * 4 * param originalImage 原始图片5 * param reflectionGap 原始图片与倒影图片的间距6 * param percentage 倒影是原图的高度的百分比 . 0< percentage < 1 7 * param o…

三星关闭shell提示_啄木鸟家庭维修|三星滚筒洗衣机4c故障代码

三星滚动洗衣机是很多用户都会安装的一种洗衣机&#xff0c;不管什么牌子的洗衣机&#xff0c;使用一段时间都可能出现一些故障&#xff0c;需要维修洗衣机。三星滚筒洗衣机4c就是一个常见洗衣机故障。下面介绍三星滚筒洗衣机4c故障代码。三星滚筒洗衣机4c故障代码表示进水故障…

[html] html6即将到来,你最期待的是什么特性呢?

[html] html6即将到来&#xff0c;你最期待的是什么特性呢&#xff1f; 模块化个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#xff0c; 但坚持一定很酷。欢迎大家一起讨论 主目录 与歌谣一起通关前端面试题

oracle 细粒审核,oracle10g 细粒审计

oracle10g 细粒审计oracle10g 细粒审计自己试验成功的例子&#xff1a;sqlplus /nologconn /as sysdbabegindbms_fga.add_policy (object_schema>system, ####方案名object_name>nbstutb, ####表名policy_name>nbstu, ####自定义的策略名statement_types> SELECT,D…

懒惰了

少玩游戏&#xff0c;这不是韩国&#xff0c;你打不出房子车子还有资本。可以有爱好&#xff0c;但要把握尺度&#xff0c;少玩农场&#xff0c;牧场&#xff0c;斗地主等一些高度吸引人思想的晋级游戏&#xff0c;也许你的级别很高&#xff0c;但不代表你有多么成功&#xff0…

[html] 你是如何理解html与css分离的?

[html] 你是如何理解html与css分离的&#xff1f; 降低冗余度, 易理解, 易维护, 分离可以减轻html与css的逻辑, 加快提升速度吧个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#xff0c; 但坚持一定很酷。欢迎大家一起讨论 主目录 与歌谣一起通…

python爬取酷狗音乐top500_Python爬取酷狗Top500的歌曲!够你吹个小牛皮了吧!

soup.select(.pc_temp_songlist > ul > li >a)同样对歌曲时长的分析方法也如上&#xff0c;对 select 的具体用法可参考如下&#x1f517;&#xff1a;Python中BeautifulSoup库的find_all、select用法三、爬取酷狗Top500的歌曲import requestsfrom bs4 import Beautif…

C#汉字转换拼音技术详解(高性能)

通过网上汉字转换成拼音的代码&#xff0c;经过本人优化&#xff0c;性能将更加优异。 下面将源代码贴出。 [csharp] view plaincopy public static class ChineseToPinYin { private static readonly Dictionary<int, string> CodeCollections n…

oracle出错如何备份数据,备份oracle数据库出错

备份oracle数据库出错input datafile fno00027 name/index/neas_standard01.dbfinput datafile fno00035 name/oradata1/tancke/neas_standard09.dbfinput datafile fno00001 name/oradata/new/tancke/system01.dbfchannel ch01: starting piece 1 at 06-SEP-10RMAN-03009: fai…

python整数因子_Python:通过非整数因子下采样2D numpy数组

我最后写了一个小函数,使用scipy.ndimage.zoom升级图像,但是为了缩小它,它首先将它升级为原始形状的倍数,然后通过块平均缩小.它接受scipy.zoom的任何其他关键字参数(order和prefilter)我仍在寻找使用可用软件包的更清洁的解决方案.def zoomArray(inArray, finalShape, sameSum…

[html] 当html中使用map标签时,area中coords值如何精确定位呢?

[html] 当html中使用map标签时,area中coords值如何精确定位呢&#xff1f; 在 area 标签上支持的属性有 shape、coords、href、alt、target、type、download、hreflang、media、rel&#xff1b; coords 值如何精确定位圆形&#xff0c;在绘制一个圆形时&#xff0c;其 shapeci…

[html] 当img标签中的src图片加载失败时,怎么让它变得更美观呢?

[html] 当img标签中的src图片加载失败时&#xff0c;怎么让它变得更美观呢&#xff1f; 当默认图也失效&#xff0c;就会陷入死循环&#xff0c;需加变量计数&#xff0c;如果是 vue 的话用 error.once 更妙。在 onerror 给元素加个类名也阔以&#xff0c;这个就挺 nice 的。使…

python输入n×n的矩阵0和1_关于Python数组和矩阵的用法X[:,0]、X[:,1]、X[:,:,0]、X[:,:,1]、X[:,m:n]和X[:,:,m:n]...

1、关于数组、矩阵的说明。X[:,0] 取二维数组中第一维的所有数据。X[:,1] 取二维数组中第二维的所有数据。X[:,m:n] 取二维数组中第m维到第n-1维的所有数据。X[:,:,0] 取三维矩阵中第一维的所有数据。X[:,:,1] 取三维矩阵中第二维的所有数据。X[:,:,m:n] 取三维矩阵中第m维到第…

将时间格式的字符串转换成日期类型浏览器兼容解决方案

var currentTime "20120612"; var y currentTime.substring(0, 4); var m currentTime.substring(4, 6); var d currentTime.substring(6, 8); currentTime y "-" m "-" d;//此种写法在火狐跟谷歌下都可以currentTimey"/"m&qu…

对比linux终端模式和图形模式,Linux知识-2. Linux初学(CnetOS Linux7)之切换命令模式和图形模式...

2. Linux初学(CnetOS Linux7)之切换命令模式和图形模式通常我们也称命令模式为终端机接口,terminal 或console 。Linux 预设的情况下会提供六个Terminal 来让使用者登入&#xff0c;切换的方式为使用&#xff1a;[Ctrl] [Alt] [F1]~[F6]的组合按钮。那这六个终端接口如何命名…

[html] 你有用过图片热区吗?它有什么运用场景?

[html] 你有用过图片热区吗&#xff1f;它有什么运用场景&#xff1f; 点击logo回到主页点击地图区块跳到具体的地方网站个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#xff0c; 但坚持一定很酷。欢迎大家一起讨论 主目录 与歌谣一起通关前端面…

mysql 写入慢_MySQL主从,你遇到过哪些问题?

上篇文章介绍了单机环境下的MySQL主从异步复制和主从半同步复制的搭建过程。搭建过程很简单&#xff0c;但是在实际使用过程中&#xff0c;更多的是解决问题&#xff0c;本篇文章将介绍一下MySQL主从复制中常见的问题以及如何定位问题和如何解决问题。1、可能的原因如下(1)主从…

Girl Love Value

【原题链接】 【题意说明】 有一组共有N个正整数&#xff0c;每次只能取其中的一个数&#xff0c;每次没有被取到的数会减少相应的值&#xff0c;把每次取到数的值累加&#xff0c;问共要取K个数&#xff0c;在所有取法中&#xff0c;和最大是多少&#xff1f; 【问题分析】 快…