导航:首页 > 主力排名 > python股票投资组合报告

python股票投资组合报告

发布时间:2022-06-24 14:34:50

1. 如何用Python和机器学习炒股赚钱

相信很多人都想过让人工智能来帮你赚钱,但到底该如何做呢?瑞士日内瓦的一位金融数据顾问 Gaëtan Rickter 近日发表文章介绍了他利用 Python 和机器学习来帮助炒股的经验,其最终成果的收益率跑赢了长期处于牛市的标准普尔 500 指数。虽然这篇文章并没有将他的方法完全彻底公开,但已公开的内容或许能给我们带来如何用人工智能炒股的启迪。

我终于跑赢了标准普尔 500 指数 10 个百分点!听起来可能不是很多,但是当我们处理的是大量流动性很高的资本时,对冲基金的利润就相当可观。更激进的做法还能得到更高的回报。

这一切都始于我阅读了 Gur Huberman 的一篇题为《Contagious Speculation and a Cure for Cancer: A Non-Event that Made Stock Prices Soar》的论文。该研究描述了一件发生在 1998 年的涉及到一家上市公司 EntreMed(当时股票代码是 ENMD)的事件:

“星期天《纽约时报》上发表的一篇关于癌症治疗新药开发潜力的文章导致 EntreMed 的股价从周五收盘时的 12.063 飙升至 85,在周一收盘时接近 52。在接下来的三周,它的收盘价都在 30 以上。这股投资热情也让其它生物科技股得到了溢价。但是,这个癌症研究方面的可能突破在至少五个月前就已经被 Nature 期刊和各种流行的报纸报道过了,其中甚至包括《泰晤士报》!因此,仅仅是热情的公众关注就能引发股价的持续上涨,即便实际上并没有出现真正的新信息。”

在研究者给出的许多有见地的观察中,其中有一个总结很突出:

“(股价)运动可能会集中于有一些共同之处的股票上,但这些共同之处不一定要是经济基础。”

我就想,能不能基于通常所用的指标之外的其它指标来划分股票。我开始在数据库里面挖掘,几周之后我发现了一个,其包含了一个分数,描述了股票和元素周期表中的元素之间的“已知和隐藏关系”的强度。

我有计算基因组学的背景,这让我想起了基因和它们的细胞信号网络之间的关系是如何地不为人所知。但是,当我们分析数据时,我们又会开始看到我们之前可能无法预测的新关系和相关性。

如果你使用机器学习,就可能在具有已知和隐藏关系的上市公司的寄生、共生和共情关系之上抢占先机,这是很有趣而且可以盈利的。最后,一个人的盈利能力似乎完全关乎他在生成这些类别的数据时想出特征标签(即概念(concept))的强大组合的能力。

我在这类模型上的下一次迭代应该会包含一个用于自动生成特征组合或独特列表的单独算法。也许会基于近乎实时的事件,这可能会影响那些具有只有配备了无监督学习算法的人类才能预测的隐藏关系的股票组。

2. 如何使用python抓取炒股软件中资金数据

这个说来有点复杂,用fiddle监控软件跟服务器间的通讯,找到数据源地址,然后用excel或python抓这个源地址数据,可能还要加上反扒代码,构造时间戳等等,你网上找python网抓视频教程看看就知道了。

3. 题目:股票投资组合分析报告

那就的分时间,总不能5年期的组合就靠这些技术指标吧??好繁琐的工作有时间我炒股去了,谁来赚这20分????自己做吧,反正一两年内你 的组合不会很好的,要是哪天没势了,再组合也没用。

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

多股票策略回测时常常遇到问题。
仓位如何分配?
你以为基金经理都是一拍脑袋就等分仓位了吗?
或者玩点玄乎的斐波拉契数列?
OMG,谁说的黄金比例,让我看到你的脑袋(不削才怪)!!

其实,这个问题,好多好多年前马科维茨(Markowitz)我喜爱的小马哥就给出答案——投资组合理论。

根据这个理论,我们可以对多资产的组合配置进行三方面的优化。
1.找到有效前沿。在既定的收益率下使组合的方差最小。
2.找到sharpe最优的组合(收益-风险均衡点)

3.找到风险最小的组合

跟着我,一步两步,轻松实现。
该理论基于用均值和方差来表述组合的优劣的前提。将选取几只股票,用蒙特卡洛模拟初步探究组合的有效前沿。
通过最大Sharpe和最小方差两种优化来找到最优的资产组合配置权重参数。
最后,刻画出可能的分布,两种最优以及组合的有效前沿。

注:
文中的数据API来自量化平台聚宽,在此表示感谢。
原文见【组合管理】——投资组合理论(有效前沿)(包含正态检验部分)

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')
Out[16]:

5. python对股票分析有什么作用

你好,Python对于股票分析来说,用处是很大的
Python,用数据软件分析可以做股票的量化程序,因为股票量化是未来的一种趋势,能够解决人为心理波动和冲动下单等不良行为,所以学好python量化的话,那么对股票来说有很大很大帮助

6. python的量化代码怎么用到股市中

2010 ~ 2017 沪深A股各行业量化分析

在开始各行业的量化分析之前,我们需要先弄清楚两个问题:

“2010-2017”投资于优质行业龙头的收益表现

选好行业之后,下面进入选公司环节。我们知道,即便是一个好的行业也仍然存在表现不好的公司,那么什么是好的公司呢,本文试图从营业收入规模和利润规模和来考察以上五个基业长青的行业,从它们中去筛选公司作为投资标的。

3.1按营业收入规模构建的行业龙头投资组合

首先,我们按照营业收入规模,筛选出以上5个行业【医药生物,建筑装饰,电气设备,银行和汽车】从2010年至今的行业龙头如下表所示:

结论

通过以上行业分析和投资组合的历史回测可以看到:

出自:JoinQuant 聚宽数据 JQData

7. 如何用python获取股票数据

在Python的QSTK中,是通过s_datapath变量,定义相应股票数据所在的文件夹。一般可以通过QSDATA这个环境变量来设置对应的数据文件夹。具体的股票数据来源,例如沪深、港股等市场,你可以使用免费的WDZ程序输出相应日线、5分钟数据到s_datapath变量所指定的文件夹中。然后可使用Python的QSTK中,qstkutil.DataAccess进行数据访问。

8. 如何用python计算某支股票持有90天的收益率

首先你要先获得这支股票90天的数据,可以存在一个arry中。
然后计算收益率 r = (arry[89]-arry[0])/arry[0],如果要计算任意连续90天的话只要循环就可以了。
许多人更喜欢去做短线,因为短线刺激,无法承受长线持股待涨的煎熬,可是假如不会做短线,则可能会导致亏得更快。做T的秘籍大家一定很想知道,今天就给大家讲讲。
我准备了好处给大家,机构精选的牛股大盘点!希望大家不要错过--速领!今日机构牛股名单新鲜出炉!
一、股票做T是什么意思
现在市场上,A股的交易市场模式是T+1,意思就是今天买的股票,只有明天才能卖出。
而股票做T,当天买入的股票在当天卖出,这就是股票进行T+0的交易操作,投资人在可交易的一天通过股票的涨幅和跌停有了股票差价,在股票大幅下跌时赶紧买入,涨得差不多之后再将买入的部分卖出,就是用这种方法赚钱的。
假如说,在昨天我手里还有1000股的xx股票,市价10元/股。今天一大早发现该股居然跌到了9.5元/股,然后趁机买入了1000股。结果到了下午时,这只股票的价格就突然间大幅上涨到一股10.5元,我就急忙地以10.5/股的价格售出1000股,然后获取(10.5-9.5)×1000=1000元的差价,这就是做T。
但是,不是每种股票做T都合适!正常来说,那些日内振幅空间较大的股票,它们是适合去做T的,比如说,每日能有5%的振幅空间。想知道某只股票适不适合的,点开这里去看一下吧,专业的人员会为你估计挑选出最适合你的T股票!【免费】测一测你的股票到底好不好?

二、股票做T怎么操作
怎么才能够把股票做到T?正常情况下分为两种方式,分别为正T和倒T。
正T即先买后卖,投资手里,手里面赚有这款股票,在当天股票开盘的时候下跌到了最低点时,投资者买入1000股,等到股票变高的时候在高点,将这1000股彻底卖出,持有的总股票数还是跟以前一样,T+0的效果这样就能够达到了,又能够享有中间赚取的差价。
而倒T即先卖后买。投资者通过严密计算得出,股票存在下降风险,因此在高位点先卖出手中的一部分股票,接着等股价回落后再去买进,总量仍旧有办法保持不变,然而,收益是会产生的。
比方投资者,他占有该股2000股,而10元/股是当天早上的市场价,觉得持有的股票在短时间内就会有所调整,,于是卖出手中的1500股,等股票跌到一股只需要9.5元时,这只股票差不多就已经能让他们感到满意了,再买入1500股,这就赚取了(10-9.5)×1500=750元的差价。
这时有人就问了,那要如何知道买入的时候正好是低点,卖出的时候正好是高点?
其实有一款买卖点捕捉神器,它能够判断股票的变化趋势,绝对能让你每次都抓住重点,点开链接就能立刻领取到了:【智能AI助攻】一键获取买卖机会

应答时间:2021-09-23,最新业务变化以文中链接内展示的数据为准,请点击查看

9. 股票投资组合报告需些什么内容

一支股票的投资需要基本面,技术面去考虑。
中长线操作那是需要从公司的一些发展前景以及公司的财务方面考虑,
短线的话以技术为主。

阅读全文

与python股票投资组合报告相关的资料

热点内容
怎么查阅股票当天资金状态 浏览:237
股票西安饮食明天走势 浏览:977
股票起伏叫什么影响 浏览:494
如何判断股票有资金进去 浏览:286
现金回购本公司股票并注销影响所有者权益吗 浏览:768
股票名称变成st开头 浏览:876
政策对股票价值产生影响因素 浏览:306
股票中如何绑定银行卡密码忘记了怎么办 浏览:536
国脉科技12月1号股票 浏览:411
顾地科技股票属于 浏览:163
股票怎么知道资金进场 浏览:806
手机股票账户登录 浏览:459
一只股票需要多少资金拉升 浏览:72
股票交易数据国外 浏览:230
股票大盘资金流出很多为啥还长那么多 浏览:738
股票盈利了卖出一半股数 浏览:749
证券账户只能买股票吗 浏览:431
一只股票一般停盘要停多久 浏览:692
有哪些股票是历史以来最低价 浏览:712
股票价格下降对企业投资影响 浏览:630