精华内容
下载资源
问答
  • 创建的股票投资组合网站 计划功能 注册新账号 创建投资组合 买卖股票 研究股 跟踪表现 查看数据可视化 可用脚本 在项目目录中,您可以运行: npm start 在开发模式下运行应用程序。 打开以在浏览器中查看。 如果您...
  • Portfolio_optimization 仅美国股票投资组合构建和优化
  • 用Flask构建股票投资组合经理 目录 建于 本项目中使用的框架,工具和库 入门 使用https://github.com/AcrobaticPanicc/stocks-manager.git克隆。 安装要求: $ pip install -r requirements.txt 并使用flask run...
  • 保守型投资组合是一种长期投资 - 通常为五到十年 - 主要包括一些知名的大公司,发展...但是,如果您希望看到资金不断增多,愿意承担有限的风险代价,小盘股或投机型股票等保守型投资组合股票与股份是个不错的选择。

    保守型投资组合是一种长期投资 - 通常为五到十年 - 主要包括一些知名的大公司,发展前景稳定,风险相对较低。

    如果您希望最小化风险,有意收回所有投入 - 例如,交纳养老金 - 同时希望赚取一定的股息收入,这是最完美的投资组合。

    当然,哪种方案都不能做到万无一失;但是,如果您希望看到资金不断增多,愿意承担有限的风险代价,小盘股或投机型股票等保守型投资组合股票与股份是个不错的选择。

    在合理预测的基础上,保守型投资组合的年度增长率大约为 6%,虽然在公司运营时间内每年都有所不同。

    流程:

    构建保守型投资组合需要耗费大量时间、精力和调研。但是,这也是一个比较简单的流程,可以划分为几个简单的步骤。

    第一步,设计投资组合的基本框架:确定时间期限以及不同板块和不同公司类型在总投资中所占百分比。

    这种结合将决定投资组合的总体风险和潜在增长比例。在本课程中,我们将详细讨论这方面的知识。

    第二步,详细思考以下各方面:确定打算投资哪些公司,以便进入相应板块。在下一节课程中,我们将详细讨论这方面的知识。

    制定费用清单

    作为一名保守型投资者,您应该从长远出发,力图在五到十年时间内保持投资额稳步增长。

    构建投资组合时,首先要针对未来五年的任何较大开销制定一份清单。预留适当存款,以备不时之需

    这将有助于减少对长期股票投资组合的干扰,防止对精心计划的资产平衡造成破坏,导致出清头寸的成本增加。

    大宗交易指单笔交易规模远大于市场平均单笔交易规模的交易。针对大宗交易建立的不同于正常规模交易的交易制度称为 大宗交易制度 大宗交易制度 一般是针对机构投资者占据主要位置的投资者结构做出的适应性安排,也是海外 交易所 针对机构投资者常用的交易制度。

    定期投资

    一旦建立投资组合并开始运作,必须定期作出投资。对投资组合进行分批买入,而非每年一次购买大量股票,这将有助于您在价格股票投资平均价格上实现平衡。

    虽然大宗购买股票有助于降低交易成本,但其风险性显而易见,假设您有一天向某公司购买了 1 万美元股票,但是股票当天价格却比当年平均价格高出 20%。

    寥寥几笔类似交易就足以对投资组合的最终价值造成严重不利影响。

    至少挑选 15 支股票

    对于最佳多元化投资组合应包含的股票数这一问题上,投资专家们一直僵持不下。

    二十年前,众人纷纷认为 10 支股票足以发挥作用,无论哪支股票表现欠佳,其他股票都能填补空缺。

    随着股市越来越变化无常 – 一家或多家公司股票经历大起大落的可能性也增大– 最低 15 支股票是一种更常见的建议。


    求质不求量

    虽然有些投资者持有超大规模的投资组合,最多购买了 200 支不同股票,分析师们也是各持己见,有些人认为对个人投资者而言持有 40 支以上的股票不具有任何意义。

    他们觉得在这种情况下,每支单独的股票对于降低风险所做出的贡献已达到最低程度。

    但是,大家一致赞同的是,在投资组合中挑选合适数量的股票至关重要

    多元化不同股票公司

    投资各种不同板块将有助于保护您的投资组合,防止某一经济领域的衰退导致全盘崩溃,持有各种不同公司的股票有利于防止投资受单一股票波动的影响。

    虽然您已经对投资组合再三权衡,兼顾特定业务领域和特定比率,在初步分析中精打细算,行业内的某公司突然落后于竞争对手也是常有之事。有时候,这种长期弱势持续到投资组合到期之际。
    例如,2007 年 3 月,英国石油公司当时的股票交易价格为 60 美元/股。2013 年 3 月,股价骤跌至 40 美元,降幅高达 33.3%。

    谁也不曾预想到,墨西哥湾马贡多油井泄漏事故导致英国石油公司股票遭受了大部分损失。但是,如果投资者在 2007 年购买了英国石油公司股票,时效是 5 年,则会遭受巨大冲击,因为英国石油公司股票在投资组合中所占比例超过 6% 到 7%。

    构建投资组合

    在保守增长型股票中,为了获得合适的风险回报率,您需要仔细权衡投资组合。还需要在不同板块和不同地域之间实现多元化选择。

    下文提供了相关指导,让您了解如何在投资组合中实现多元化选择,囊括不同公司类型和不同板块。请注意,某一公司可能同时涉及下列一个或多个类别。

    按公司规模划分

    大盘股公司:60-70%

    相对于小盘股公司和初创公司,大盘股或所谓蓝筹公司的增长潜力较低,但是他们的财政实力往往都很强大,股利愿意发放股利,经受了无数次经济周期的试验和测试。
    因此,在投资组合中,您应当考虑将 60-70% 的份额留给这类公司。

    中盘股公司:15-20%

    中盘股公司应占比例为 15-20%。相对于大盘股公司,这类公司具有更好的增长前景,股价稳定。
    小盘股公司:10%

    这类公司的风险更大,但是如果有朝一日您博得好彩,这些股票会大大超越广阔的股票市场,拉动投资组合增长。

    价值型公司与增长型公司的对比

    增长型公司15%

    您还应确保结合了不同的股票类型。如前文所述,您应当在投资组合中结合利用增长型和价值型股票。这是因为它们在不同时期可能会让您大获全胜或大失所望。


    价值型公司:85%

    对于保守型投资者,价值型(也被称为收益型)股票所占比例可能更大 - 通常占投资组合比列的 85%。

    相对于增长型股票,这类股票的股利更高,往往也是指前文所讨论的蓝筹公司

    防御型公司和周期型公司的对比

    防御型公司:60-70%

    在保守型投资组合中,60-70% 的公司往往被称为所谓的防御型板块。即便在经济低迷时期,这些行业的商品和劳务需求依然受到追捧,如公共事业部门。这意味着即便在最艰难的时期,这些公司的股价依然坚挺如初。


    周期型公司:30-40%

    但是,周期型公司的加权比例大约只有 30-40%。
    周期型股票指那些在经济扩张时期胜过同行(如银行类股),但在经济颓废时期却惨遭重创的公司。

    因此,在选择周期型股票时,投资者必须倍加仔细地执行初步分析。您必须在相关板块中找出那些前景更可观或资产负债表表现强劲的资产负债表公司,确保在漫长的衰退期依然屹立不倒。

    国内公司与海外公司的对比

    总体而言,对在国内上市的公司进行投资是一种更为安全的做法。这是因为海外上市公司存在货币风险,有些股市的波动性更大(如新兴市场)。
    因此,在大多数保守型资组合中,主要股票公司的上市地点应与您所在的国家保持一致

    如果保守型投资者有意购买海外上市的股票,往往会选择一些知名的国际大咖,这些公司占有巨大的市场份额,增长记录持续稳定,比如可口可乐公司

    概要

    在本课程中,已经学习了…

    • …保守型投资组合是一种长期投资 - 主要包括一些知名的大公司,发展前景稳定,风险相对较低。
    • …在合理预测的基础上,保守型投资组合的年度增长率大约为 6%,虽然在公司运营时间内每年都有所不同。
    • …保守型投资者通常选择五到十年作为投资期限。
    • …定期投资有助于您在股票投资平均价格上实现平衡。
    • …为了确保在投资组合中实现多元化,大多数职业操盘手建议必须至少持有 15 支股票。
    • …在保守型投资组合中,大盘股所占比例一般为 60-70%,中盘股所占比例为 15-20%,小盘股所占比例为 10%。
    • …在保守型投资组合中,价值型股票所占比例一般为 85%,增长型股票所占比例为 15%。
    • …在保守型投资组合中,防御型股票所占比例一般为 60-70%,周期型股票所占比例为 30-40%。
    • 在保守型投资组合中,通常主要包括在英国或国内上市的股票
    展开全文
  • 基金投资组合构建

    2021-07-14 07:09:48
    前言:本系列是【人工智能与财务】课程作业,将模拟用100万的资金进行基金的投资组合构建。 首先展示构建好的投资组合,如以下表格: 代码 名称 投资金额(万) 投资占比 050003.OF 博时现金收益货币A 5 5%...

    前言:本系列是【人工智能与财务】课程作业,将模拟用100万的资金进行基金的投资组合构建。

    首先展示构建好的投资组合,如以下表格:

    代码名称投资金额(万)投资占比
    050003.OF博时现金收益货币A55%
    100018.OF富国天利增长债券1515%
    519003.OF海富通收益增长混合1010%
    377530.OF上投摩根行业轮动混合A1414%
    260101.OF景顺长城优选混合1414%
    377240.OF上投摩根新兴动力混合A1414%
    373020.OF上投摩根双核平衡混合1414%
    100026.OF富国天合稳健优选混合1414%

    接下来,陈述操作思路:

    先对可选基金做一个基本的了解
    在这里插入图片描述

    可以看到,可选基金中有股票型、货币型、债券型、混合型基金,有主动型也有被动型。之后是决策过程。

    一、确定投资组合占比

    为了实现资产配置,在未开始选股之前,我打算先确定投资组合的占比:(我是一个风险偏好型的投资者)

    股票类型投资比例
    股票型/混合债券型80%
    债券型15%
    货币型基金5%

    二、选股

    接下来考虑选股。

    1、货币型基金

    在这里插入图片描述从表中可以看出只有这两种是货币型基金,从表格中按照1年前和本年初的基金区间复权单位净值来看,景顺大于博时。

    但是博时成立日期较晚,自成立日起收益却大于景顺,以及夏普比率博时也比景顺略高,所以货币型基金投资选择博时现金收益货币A

    2、债券型

    在这里插入图片描述
    所给基金只有一支是债券型基金,所以我现在需要做的决策就是要不要投资这只基金。

    从表格中可以看到这支富国债券型基金成立于2003年,一年的收益率大约为5%左右,今年前半年的表现为3.7%,大于去年年收益率的一半,得出结论:今年上半年富国天利基金表现不错。

    再看晨星的评级。晨星是一家业界权威的评级机构,给出的评级还是有一定含量的。晨星对富国天利的评级为4星,这29支基金的最高评级就是4星。

    另外,富国天利的夏普比率也比较大,右侧绿色部分是在这29支基金中的排名,sharpe为3,富国天利的夏普比率在全部基金中较大。排名靠前的原因虽然大部分归因于较低的标准差,但这个排名也有一定的说明力。

    所以,最终决定还是选择投资富国天利债券型基金

    3、混合型&股票型

    这是所有的混合型和股票型基金,共26支。
    在这里插入图片描述

    表格介绍

    其中绿色部分是分别是1年期单位复权净值增长率、本年初单位净值增长率、beta、sharpe、收益标准差的排名,复权增长率、sharpe是降序排名,beta、收益率标准差是升序排名,所以最终排名越小,基金在这个指标上表现就越好(收益越大或波动越小)。

    蓝色部分是根据排名情况计算的综合得分。其中

    • 收益score = (1年前+本年初)/2;
    • 风险score = (sharpe+sigma+回撤)/3;
    • 综合score = (1年前+本年初*2+sharpe+sigma+回撤)/6
    我的方案

    我的方案是首先按照综合score进行排名,选出排行靠前的前10名,然后再考虑每只基金的收益情况、风险大小,评级等多重因素,如果有一方面不符合就拒绝,否则保留,就这样选出6支基金为止。
    投资比例的确定:如果是偏股混合型或股票型基金,权重赋予3,如果是其他混合型基金,赋予权重2,以此计算出最后的投资占比。

    开始分析
    • 综合score排名
      在这里插入图片描述
    • 然后开始逐个分析。
    1. 海富通
    指标拒绝与否
    收益率score较小不拒绝
    晨星评级3星不拒绝
    夏普比率为第7位排名还是相对靠前的,不拒绝
    权重系数2

    注:夏普比率的排名是按降序排的,即夏普比率越大,排名越靠前。

    1. 上投摩根行业轮动
    指标拒绝与否
    收益率score得分最小不拒绝
    晨星评级3星不拒绝
    夏普比率为第6位排名相对靠前的,不拒绝
    权重系数3
    1. 景顺长城优选混合
    指标拒绝与否
    收益率score得分较小不拒绝
    晨星评级3星不拒绝
    夏普比率为第8位排名还是相对靠前的,不拒绝
    权重系数3
    1. 景顺长城量化精选
    指标拒绝与否
    收益率score得分为9犹豫
    晨星评级1星拒绝
    1. 上投摩根新兴动力
    指标拒绝与否
    收益率score得分2.5不拒绝
    晨星评级3星不拒绝
    夏普比率为第9位排名还是相对靠前的,不拒绝
    权重系数3
    1. 上投摩根双核
      这个平衡型基金虽然不如其他两只上投摩根系列产品收益率高,但是综合标现也是不错的,决定投资,权重系数为3。

    2. 景顺长城能源基建
      1年前的收益率为17.85%,比较低,拒绝。

    3. 富国天合
      表现不错,选择,权重系数为3。

    现在就选出了要投资的6支基金。他们的投资组合占比可以确定,如下图所示:
    在这里插入图片描述
    最后构建的投资组合为在这里插入图片描述

    最后总结:

    其实在此时考虑投资组合构建时,并未考虑基金本身的能力,而是仅仅只考虑了收益率和风险一些简单的指标,应用的是最简单的收益和风险数据。但实际上还可以按照基金的投资领域对基金进行更详细的分析,或者进行聚类分析,以分散仓位达到分散风险的目的。另外,此次分析中也没有详细考究基金的择时能力、选股能力、基金经历的能力等等,都是需要改进的地方。

    展开全文
  • 基于分析师预测eps数据生成仓位因子构建投资组合eps仓位因子的构建eps因子在个股上的测试:股票池测试 eps仓位因子的构建 首先滚动计算分析师预测eps,包括预测当年的eps0,第二年的eps1,第三年的eps2;基于此,...

    基于加权股票eps数据构建仓位因子的指数增强策略

    核心思想

    每股收益即每股盈利(EPS),又称每股税后利润、每股盈余,指税后利润与股本总数的比率。每家分析师对股票都会有预测的eps数据,根据分析师排名情况,不同的分析师预测的准确度有所差异,因此相对于wind数据库,我们构建了排名加权预测eps数据。根据预测当年、后一年以及后两年的eps数据,构造业绩透支指数的仓位因子进而在个股上进行有效性测试,在此基础上在上证50指数上构建指数增强策略。

    eps仓位因子的构建

    首先滚动计算分析师预测eps,包括预测当年的eps0,第二年的eps1,第三年的eps2;基于此,构建业绩透支指数 f f f,衡量了透支后两年业绩与透支后一年比率:
    f = ( ( e p s 2 − e p s 1 ) / e p s 1 ) ( ( e p s 1 − e p s 0 ) / e p s 0 ) f=\frac{((eps2-eps1)/eps1)}{((eps1-eps0)/eps0)} f=((eps1eps0)/eps0)((eps2eps1)/eps1)
    f f f进行以下两种去量纲方式处理, f 1 f_1 f1 f 2 f_2 f2
    f 1 = f → f 1 = f 1 / 2 → f 1 [ f 1 < 0 ] = 0 → f 1 [ f 1 > 1 ] = 1 f_1=f\rightarrow f_1=f_1/2\rightarrow f_1[f_1<0]=0\rightarrow f_1[f_1>1]=1 f1=ff1=f1/2f1[f1<0]=0f1[f1>1]=1
    这样对业绩透支指数线性压缩到[0,1]区间,以1- f 1 f_1 f1作为仓位进行调整,与买入持有0.5仓位权重的股票进行比对:
    以上下5%分位数对 f f f去极值,超过范围的数值设为临界值之后再线性压缩到[0,1]区间:
    f 2 = f → f 2 = f 2 − m i n ( f 2 ) m a x ( f 2 ) − m i n ( f 2 ) f_2=f\rightarrow f_2=\frac{f_2-min(f_2)}{max(f_2)-min(f_2)} f2=ff2=max(f2)min(f2)f2min(f2)

    以1- f 2 f_2 f2作为仓位权重进行调整,与买入持有0.5仓位的股票进行比对。

    eps因子在个股上的测试:

    上到下分别是 f 1 f_1 f1以及 f 2 f_2 f2的测试结果
    以600519为例
    在这里插入图片描述
    此外,对每只股票所在行业进行了因子日平均超额收益分析,即按照业绩透支指数调仓得到的收益减去按照0.5倍持仓得到的收益,汇总如下表,可以看到按照 e p s eps eps进行调仓在医药生物、机械设备行业表现较好,并且 f 1 f_1 f1的效果较好。
    在这里插入图片描述
    在这里插入图片描述

    eps在上证50股票池测试

    由于分析师预测准确率的因素,存在有的股票上,实际的 e p s eps eps值与分析师预测值一直偏离的情况,以600000为例展示如下,时间区间为16年到18年底,可以看到分析师预测的 e p s eps eps一直在实际的 e p s eps eps之上,因此剔除这只股票:
    在这里插入图片描述
    最终选取了 e p s 0 eps_0 eps0和实际 e p s eps eps值相差不大的股票,具体如下:
    在这里插入图片描述
    作为我们的股票池,在2015年底到现在的时间范围内以 f 1 f_1 f1为指标进行仓位的控制标准,测试结果如下,可以看到要比buy&hold的累计收益效果好,因此基于eps数据进行仓位构建是具有研究价值的:
    在这里插入图片描述

    展开全文
  • Python3对多股票投资组合进行分析

    万次阅读 多人点赞 2019-04-21 10:45:27
    目录 概述: 一、股票数据准备 1、股票选择 2、获取每支股票的收盘价 3、计算股票的日收益率 ...二、投资组合的收益计算 ...四、探索股票的最优投资组合 1、使用蒙特卡洛模拟Markowitz模型 2、投资...

    目录

    概述:

    一、股票数据准备

    1、股票选择

    2、获取每支股票的收盘价

    3、计算股票的日收益率

    二、投资组合的收益计算

    1、给定权重的投资组合

    2、等权重的投资组合

    3、市值加权的投资组合

    三、投资组合的相关性分析

    1、投资组合的相关矩阵

    2、投资组合的协方差矩阵

    3、投资组合的标准差

    四、探索股票的最优投资组合

    1、使用蒙特卡洛模拟Markowitz模型

    2、投资风险最小组合

    3、投资最优组合

    (1)夏普比率

    (2)夏普最优组合的选择


    概述:

    目前,金融市场总是变幻莫测,充满了不确定因素,是一个有许多投资风险的市场。这与其本身的市场规律和偶然性有关,金融危机、国家政策以及自然灾难等都会影响到金融市场,均会影响投资的收益情况。所以投资者总是希望能够找到应对的方法来减少投资的风险而增加收益。随着老百姓对合理的财富分配理论有着迫切的需求,学会优化投资理财,做到理性投资,是当前投资者最关心的问题。

    投资优化的核心问题就是,投资者如何将现有的财富在可投资的风险资产中合理分配,以实现诸如既定风险下收益最大化或者累计收益率最大化等投资目标现代金融学界的核心课题之一,也即投资组合优化问题,就是研究在不确定环境下如何理性购买并合理配置金融产品,从而实现收益率与风险间的均衡。投资组合理论通常也称为分散投资理论,其核心思想就是不把所有的鸡蛋放进同一篮子里面,即研究在资金有限和期望收益不确定的情况下,投资者该如何分配现有的资金,从而规避掉金融市场中的风险,实现收益最大化。投资的本质就是通过承担一定的风险来换取风险补偿(收益),且总的来说,想要收益越大所要承受的风险越大。所以,投资者在做出投资决策时,必须根据自身情况接受风险和收益之间的折中。

    要实现优化投资就要对投资进行量化。量化投资就是利用计算机科技并采用一定的模型去践行投资理念,实现投资策略的过程。本质上,量化投资就是通过观察市场的规律,试图寻找各个因素与未来股票收益之间的关系,并寻找较为成功,即较大概率成功的规律。

    一、股票数据准备

    1、股票选择

    通过前面对股票数据的分析,我们根据股票的年化收益率和股票的离散系数,从20支股票中选取5支股票进行投资组合。

    股票代码如下:'601318.SH', '601336.SH', '601398.SH', '601888.SH', '603993.SH'。

    本文打算用以上5支股票构建投资组合,并用2016年3月1日—2017年12月31日的历史数据进行回溯测试。

    首先,导入将要用到的Python包。

    import matplotlib.pyplot as plt
    from pandas import read_excel
    import numpy as np
    

    2、获取每支股票的收盘价

    将股票的每日的收盘价存入数据框 StockPrices 变量中。

    # 创建空的DataFrame变量,用于存储股票数据
    StockPrices = pd.DataFrame()
    market_value_list=[]  #存储每支股票的平均市值
    # 创建股票代码的列表
    ticker_list = ['601318.SH', '601336.SH', '601398.SH', '601888.SH', '603993.SH']
    # 使用循环,挨个获取每只股票的数据,并存储每日收盘价
    for ticker in ticker_list:
        stock_data = read_excel('stock_data/'+ticker+'.xlsx', parse_dates=['日期'], index_col='日期')
        stock_data=stock_data.loc['2016-03-01':'2017-12-29']
        StockPrices[ticker] = stock_data['收盘价']  #获取每支股票的收盘价
        #将每支股票的市值均值存入列表中
        market_value_list.append(stock_data['市值'].mean()) 
    StockPrices.index.name = 'date'  # 日期为索引列
    # 输出数据的前5行
    print(StockPrices.head())
    

    3、计算股票的日收益率

    计算股票每天的收益率,将数据存储在数据框 StockReturns 变量中。

    # 计算每日收益率,并丢弃缺失值
    StockReturns = StockPrices.pct_change().dropna()
    # 打印前5行数据
    print(StockReturns.head())
    

    至此,我们已经准备好了用于分析的数据 StockReturns, 它记录了5支股票2016年-2017年每天的收益率。

    二、投资组合的收益计算

    我们选了5支股票,可资金怎么分配呢?哪只买多些,哪只买少些?这就需要对它们设置相应的权重,下面我们采用三种权重分配的方案,来计算不同组合下的投资收益。

    1、给定权重的投资组合

    第一种方案是预先设置一组权重(所有股票权重的和为1)。这5支股票:'601318.SH', '601336.SH', '601398.SH', '601888.SH', '603993.SH'对应的权重如下:[0.32, 0.15, 0.10, 0.18, 0.25]。

    我们将每支股票的收益,乘上其对应的权重,得到加权后的股票收益;再对所有股票加权后的收益求和,得到该组合投资的收益。

    # 将收益率数据拷贝到新的变量 stock_return 中,这是为了后续调用的方便
    stock_return = StockReturns.copy()
    
    # 设置组合权重,存储为numpy数组类型
    portfolio_weights = np.array([0.32, 0.15, 0.10, 0.18, 0.25])
    # 计算加权的股票收益
    WeightedReturns = stock_return.mul(portfolio_weights, axis=1)
    # 计算投资组合的收益
    StockReturns['Portfolio'] = WeightedReturns.sum(axis=1)
    # 打印前5行数据
    print(StockReturns.head())
    
    # 绘制组合收益随时间变化的图
    StockReturns.Portfolio.plot()
    plt.show()

    绘制该组合投资收益随时间变化的图如下: 

    定义累积收益曲线绘制函数cumulative_returns_plot(),并绘制给定权重投资组合的累积收益曲线

    # 定义累积收益曲线绘制函数
    def cumulative_returns_plot(name_list):
        for name in name_list:
            CumulativeReturns = ((1+StockReturns[name]).cumprod()-1)
            CumulativeReturns.plot(label=name)
        plt.legend()
        plt.show()
    # 计算累积的组合收益,并绘图
    cumulative_returns_plot(['Portfolio'])
    

    2、等权重的投资组合

    第二种方案是平均分配每支股票的权重,使它们都相等。这是最简单的投资方法,可作为其他投资组合的参考基准。计算方法和上面一致,只需更改存储权重的数组。

    # 设置投资组合中股票的数目
    numstocks = 5
    # 平均分配每一项的权重
    portfolio_weights_ew = np.repeat(1/numstocks, numstocks)
    # 计算等权重组合的收益
    StockReturns['Portfolio_EW'] = stock_return.mul(portfolio_weights_ew, axis=1).sum(axis=1)
    # 打印前5行数据
    print(StockReturns.head())
    # 绘制累积收益曲线
    cumulative_returns_plot(['Portfolio', 'Portfolio_EW'])

    3、市值加权的投资组合

    第三种法案是考虑了股票的市值,按市值的占比来分配权重。因此市值高的股票对应的权重就更大,当这些市值高的股票表现良好时,该投资组合的表现也更好。

    #将上述获得的每支股票的平均市值转换为数组
    market_values=np.array(market_value_list)
    # 计算市值权重
    market_weights = market_values / np.sum(market_values)
    # 计算市值加权的组合收益
    StockReturns['Portfolio_MVal'] = stock_return.mul(market_weights, axis=1).sum(axis=1)
    # 打印前5行数据
    print(StockReturns.head())
    # 绘制累积收益曲线
    cumulative_returns_plot(['Portfolio', 'Portfolio_EW', 'Portfolio_MVal'])
    

    实际问题中,我们需要根据最终的投资累积收益来确定最优的投资组合。本实验中,可以看出给定权重的投资组合稍微优于其它两种,但是不太明显。所以针对不同的问题需要具体分析。

    三、投资组合的相关性分析

    1、投资组合的相关矩阵

    相关矩阵用于估算多支股票收益之间的线性关系,可使用pandas数据框内建的 .corr()方法来计算。

    # 计算相关矩阵
    correlation_matrix = stock_return.corr()
    # 输出相关矩阵
    print(correlation_matrix)

    矩阵中每一个元素都是其对应股票的相关系数取值从-1到1,正数代表正相关,负数代表负相关

    我们观察到矩阵的对角线永远是1,因为自己和自己当然是完全相关的。另外相关矩阵也是对称的,即上三角和下三角呈镜像对称。

    为了便于观察,可以将数值的相关矩阵热图的形式展现出来。以下采用了 seaborn 包来绘制热图。

    import seaborn as sns
    #创建热图
    sns.heatmap(correlation_matrix,annot=True,cmap='rainbow',linewidths=1.0,annot_kws={'size':8})
    plt.xticks(rotation=0)
    plt.yticks(rotation=75)
    plt.show()

    2、投资组合的协方差矩阵

    相关系数只反应了股票之间的线性关系,但并不能告诉我们股票的波动情况,而协方差矩阵则包含这一信息。可使用pandas数据框内建的 .cov() 方法来计算协方差矩阵。

    # 计算协方差矩阵
    cov_mat = stock_return.cov()
    # 年化协方差矩阵
    cov_mat_annual = cov_mat * 252
    # 输出协方差矩阵
    print(cov_mat_annual)

    3、投资组合的标准差

    投资组合的风险可以用标准差来衡量,只要知道组合权重和协方差矩阵,就可以通过以下公式进行计算。

    在NumPy中,使用.T属性对数组进行转置np.dot()函数用于计算两个数组的点积。

    # 计算投资组合的标准差
    portfolio_volatility = np.sqrt(np.dot(portfolio_weights.T, np.dot(cov_mat_annual, portfolio_weights)))
    print(portfolio_volatility)

    四、探索股票的最优投资组合

    应该选择怎样的组合权重才是最好的呢?是让收益最大吗?还是风险最小?我们需要综合权衡风险和收益这两个因素。

    诺贝尔经济学奖得主马科维茨(Markowitz)提出的投资组合理论被广泛用于组合选择和资产配置中。该理论中的均值-方差分析法和有效边界模型可用于寻找最优的投资组合。

    1、使用蒙特卡洛模拟Markowitz模型

    采用蒙特卡洛模拟来进行分析,也就是随机生成一组权重,计算该组合下的收益和标准差,重复这一过程许多次(比如1万次),将每一种组合的收益和标准差绘制成散点图

    # 设置模拟的次数
    number = 10000
    # 设置空的numpy数组,用于存储每次模拟得到的权重、收益率和标准差
    random_p = np.empty((number, 7))
    # 设置随机数种子,这里是为了结果可重复
    np.random.seed(7)
    
    #循环模拟10000次随机的投资组合
    for i in range(number):
        #生成5个随机数,并归一化,得到一组随机的权重数据
        random5=np.random.random(5)
        random_weight=random5/np.sum(random5)
    
        #计算年平均收益率
        mean_return=stock_return.mul(random_weight,axis=1).sum(axis=1).mean()
        annual_return=(1+mean_return)**252-1
    
        #计算年化标准差,也成为波动率
        random_volatility=np.sqrt(np.dot(random_weight.T,np.dot(cov_mat_annual,random_weight)))
    
        #将上面生成的权重,和计算得到的收益率、标准差存入数组random_p中
        random_p[i][:5]=random_weight
        random_p[i][5]=annual_return
        random_p[i][6]=random_volatility
    
    #将Numpy数组转化为DataF数据框
    RandomPortfolios=pd.DataFrame(random_p)
    #设置数据框RandomPortfolios每一列的名称
    RandomPortfolios.columns=[ticker +'_weight' for ticker in ticker_list]+['Returns','Volatility']
    
    #绘制散点图
    RandomPortfolios.plot('Volatility','Returns',kind='scatter',alpha=0.3)
    plt.show()

    投资的本质是在风险和收益之间做出选择,上图正是刻画了这两个要素。其中每一个点都代表着一种投资组合的情况,横坐标是代表风险的标准差纵坐标是收益率

    Markowitz投资组合理论认为,理性的投资者总是在给定风险水平下对期望收益进行最大化,或者是在给定收益水平下对期望风险做最小化。反映在图中也就是红色曲线所示的有效边界只有在有效边界上的点才是最有效的投资组合

    现在我们知道,理性的投资者都会选择有效边界上的投资组合。可具体选择哪个点呢?接着往下看。

    2、投资风险最小组合

    一种策略是选择最低的风险,且在该风险水平下收益最高的组合,称为最小风险组合(GMV portfolio)。

    让我们找到风险最小的组合,并绘制在代表收益-风险的散点图中。

    # 找到标准差最小数据的索引值
    min_index = RandomPortfolios.Volatility.idxmin()
    
    # 在收益-风险散点图中突出风险最小的点
    RandomPortfolios.plot('Volatility', 'Returns', kind='scatter', alpha=0.3)
    x = RandomPortfolios.loc[min_index,'Volatility']
    y = RandomPortfolios.loc[min_index,'Returns']
    plt.scatter(x, y, color='red')
    #将该点坐标显示在图中并保留四位小数
    plt.text(np.round(x,4),np.round(y,4),(np.round(x,4),np.round(y,4)),ha='left',va='bottom',fontsize=10)
    plt.show()

    获取风险最小组合的权重如下:

    # 提取最小波动组合对应的权重, 并转换成Numpy数组
    GMV_weights = np.array(RandomPortfolios.iloc[min_index, 0:numstocks])
    # 计算GMV投资组合收益
    StockReturns['Portfolio_GMV'] = stock_return.mul(GMV_weights, axis=1).sum(axis=1)
    #输出风险最小投资组合的权重
    print(GMV_weights)

    3、投资最优组合

    (1)夏普比率

    夏普比率(Sharpe Ratio)是由诺贝尔奖得主威廉·夏普提出的,用以帮助投资者比较投资的回报和风险。理性的投资者一般都是固定所能承受的风险,追求最大的回报;或者在固定预期回报,追去最小的风险。所以夏普比率计算的是,每承受一单位的总风险所产生的超额回报。计算公式如下:

    分子计算了差值,说的是将某项投资与代表整个投资类别的基准进行比较,得到超额回报。分母标准差代表收益的波动率,对应着风险,因为波动越大预示着风险越高。

    只要将超额回报的均值除以其标准差,即可得到衡量回报和风险的夏普比率。另外需再乘上sqrt(252) (一年有252个交易日),得到年化的夏普比率。

    (2)夏普最优组合的选择

    其实我们更想在收益和风险之间找到平衡点夏普比率这个变量能帮我做出更好的决策,它计算的是每承受一单位的风险所产生的超额回报。

    我们首先来计算上述蒙特卡洛模拟的组合所对应的夏普比率,并将之作为第三个变量绘制在收益-风险的散点图中,这里采用颜色这一视觉线索来表征夏普比率。

    # 设置无风险回报率为0
    risk_free = 0
    # 计算每项资产的夏普比率
    RandomPortfolios['Sharpe'] = (RandomPortfolios.Returns - risk_free) / RandomPortfolios.Volatility
    # 绘制收益-标准差的散点图,并用颜色描绘夏普比率
    plt.scatter(RandomPortfolios.Volatility, RandomPortfolios.Returns, c=RandomPortfolios.Sharpe)
    plt.colorbar(label='Sharpe Ratio')
    plt.show()

    我们发现散点图上沿的组合具有较高的夏普比率。接着再找到夏普比率最大的组合,将其绘制在收益-风险的散点图中。

    # 找到夏普比率最大数据对应的索引值
    max_index = RandomPortfolios.Sharpe.idxmax()
    # 在收益-风险散点图中突出夏普比率最大的点
    RandomPortfolios.plot('Volatility', 'Returns', kind='scatter', alpha=0.3)
    x = RandomPortfolios.loc[max_index,'Volatility']
    y = RandomPortfolios.loc[max_index,'Returns']
    plt.scatter(x, y, color='red')
    #将该点坐标显示在图中并保留四位小数
    plt.text(np.round(x,4),np.round(y,4),(np.round(x,4),np.round(y,4)),ha='left',va='bottom',fontsize=10)
    plt.show()

     获取夏普比率最大组合的权重如下:

    # 提取最大夏普比率组合对应的权重,并转化为numpy数组
    MSR_weights = np.array(RandomPortfolios.iloc[max_index, 0:numstocks])
    # 计算MSR组合的收益
    StockReturns['Portfolio_MSR'] = stock_return.mul(MSR_weights, axis=1).sum(axis=1)
    #输出夏普比率最大的投资组合的权重
    print(MSR_weights)

     

    交流学习资料共享欢迎入QQ群:955817470

     

    展开全文
  • 该项目显示了如何使用非线性方法改进投资组合优化技术,以基于股票收益和股票风险形成最优股票投资组合。 我正在使用深度学习方法来扩展和清理输入(收益和风险)。 使用方法 具有LSTM细胞的递归神经网络 用于子集...
  • 任何时候应对永远比预测更加重要,比如说目前时点,在抄底很难的情况下,一般会采取分批建仓、构建投资组合的方式操作。这一组合会分为进攻和防御两类股票,会按照一定的比例配置,在不同的市场环境下防御和进攻配置...
  • 股票投资组合应用 一个股票投资组合应用程序,您可以在其中管理您的股票投资组合。 您可以通过iexcloud.io提供的集成API平台轻松搜索股票行情。 您可以根据自己的喜好轻松添加,编辑或删除股票行情。 内置 很棒的...
  • 该项目旨在开发用于股票投资组合管理的高性能跨平台响应应用程序。 主要特征 登记 统计面板 用户资料 验证 行政 模糊搜索 交互式饼图,项目组合管理控制台的折线图 存货清单 股票明细视图的交互式烛台图 ...
  • 5. 投资组合构建模型 5.1 基于规则的投资组合构建模型 5.2 基于优化的投资组合构建模型 5.2.1 优化工具的输入变量 5.2.2 优化技术 6. 执行模型 6.1 订单执行算法 6.1.1 进取订单和被动订单 6.1.2 其他订单...
  • 如果您想在一定风险水平下最大化回报,则现代投资组合理论会根据历史回报将一定比例的每只股票分配给投资组合,例如40%苹果,40%特斯拉,10%沃尔玛和10%卡特彼勒与每个资产相关的差异。 用Python实施现代投资...
  • 现在,让我们在googlesheet上构建自己的投资组合仪表板! 目录 关于该项目 我们建立了一个Google工作表,可以自动跟踪所有拥有的资产; 股票(香港交易所,纳斯达克,SET等),加密货币,共同基金等,以提供对历史...
  • 论文研究-基于分形视角下的沪港股市投资组合策略.pdf, 针对已有研究的不足,为满足不同交易周期投资者的实际需求,将分形研究方法与传统投资组合模型相结合,考虑多时间...
  • 股票指数跟踪投资组合实证分析,邱彤,郑少智,采用LASSO、Adaptive LASSO和SCAD三种变量选择方法分别构建稀疏的投资组合以跟踪目标指数。主要对MSCI金龙A指数进行实证分析,再以沪深300�
  • 01 提升法(boosting)和套袋法(bagging) 在《基于随机森林算法构建投资组合》,我们提到单个决策树虽然具有解释性强、直观方便的优点,但其准确性无法与其它回归分类方法媲美。这时我们需要用到组合模型,即套袋法或...
  • 这个Python程序解决了三个股票投资组合选择的问题: • 使用蒙特卡洛模拟寻找最大化夏普比率投资组合和最小化风险的投资组合并将结果可视化。 • 使用Pyomo包的非线性求解器ipopt构建给定风险等级的最大回报投资组合...
  • Vue-Cli 使用Vue.js和Firebase构建股票交易和投资组合管理Web应用程序。 Bootstrap和CSS动画用于设置Vue.js项目的样式 在
  • PyFolio 概述: PyFolio 是一个免费的 Web 应用程序,旨在为用户提供交易模拟,它基于 Python Django 框架构建。 PyFolio 使用实时股市数据绘制为有...显示投资组合中每只股票的准确实时股市数据。 个别股票详情包括:
  • 投资者模拟可帮助您买卖股票,并管理股票投资组合*。 经验丰富的投资者可以使用FIT INVESTORS作为他们的沙盒账户,对他们的投资组合进行实验性押注。 对于刚接触股票投资的投资者来说,它可以让您第一手了解股票市场...
  • 基于Python的风险管理工具,可从Yahoo Finance中获取数据,并计算基于单个股票投资组合的不同类型的风险价值(VaR)指标以及许多其他风险/回报特征,包括独立的和相对于选择基准(使用wxPython构造) 此wxPython ...
  • 市场和个人境遇变化无常,必须定期对个人股票投资组合进行管理,确保能够维持平衡,实现个人目标,体现人生中的任何重大变故。 一旦均衡投资组合发生变化,股价可能飙升 市场波动导致投资组合的权重快速发生...
  • 金融相关矩阵的计算是构建金融投资组合的基础.为解决金融相关矩阵的“维数灾祸”问题,进而促进金融投资组合风险的优化,受基于随机矩阵理论(RMT)和特征向量的Krzanowski...
  • 一个简单的工具,可根据您偏好的风险水平和可用现金来构建包含债券和股票的基于ETF的投资组合。 此处使用的ETF选择基于的“文章。 用法 从头开始建立投资组合 运行portfolio-builder.py并输入所需的风险水平,可...
  • 构建你的基金投资组合

    千次阅读 2006-04-15 16:31:00
    我建议投资者不要光考虑如何投资单个基金的问题,最好还是从上而下综合考虑,从投资组合开始进行分析,然后再选择具体的基金。问一下自己:我为什么要买这个基金?我的投资目标和策略是什么?只有将这些问题搞清楚了...
  • 投资组合(Portfolio)是由投资人或金融机构所持有的股票、债券、衍生金融产品等组成的集合。投资组合的目的在于分散风险,投资组合按粗略的分类有三种不同的模式可供运用,即积极的、中庸的和保守的。 投资组合...
  • stock_share_calc:一个JavaScript表构建器,该构建器根据加权报价和用户输入的投资组合大小来计算要购买的股票数量
  • LSTM 构建投资组合优化公式类型的上述每种组合的结果都针对 SENSEX 和标准最优 Markowitz 投资组合进行了基准测试,没有股票选择。 我们还推导出具有股票价格预测因子比平均股票价格更准确的 Markowitz 公式优于...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 4,673
精华内容 1,869
关键字:

如何构建股票投资组合