完整代码:后期上传至github
数据集:资源库
问题一:投资者购买目标指数中的资产,如果购买全部,从理论上讲能够完美跟踪指数,但是当指数成分股较多时,购买所有资产的成本过于高昂,同时也需要很高的管理成本,在实际中一般不可行。
(1)在附件数据的分析和处理的过程中,请对缺损数据进行补全。
(2)投资者购买成分股时,过多过少都不太合理。对于附件的成分股数据,请您通过建立模型,给出合理选股方案和投资组合方案。

一、题目分析

1.第一小问,经分析各指标与成交量之间不存在线性回归关系,若使用回归分析可能会导致结果相差较大。而数据中又包含时间因素,因此采取时间序列模型进行预测。
2.第二小问,由于衡量如何进行合理选股和投资组合的标准是其收益性和风险性。本文引用Markowitz模型以及夏普比率模型从这两个角度进行合理建模分析。
(以下可视化分析均以股票abc001为例)

二、第一小问求解

工具:Excel

(一)建立模型

在本次分析中,由开盘、最高价、最低价、收盘与成交量之间散点图可知,各因子之间不存在线性关系;因此建立指数平滑曲线,取α=0.8时,指数平滑曲线重合度较高。

(二)预测结果

根据指数平滑公式推导, 2020/3/26号成交量预测值为:

三、第二小问求解

工具:Python

(一)股票收益及风险分析

> 股票收益率

股票收益率(stock yield),是指投资于股票所获得的收益总额与原始投资额的比率。股票得到了投资者的青睐,因为购买股票所带来的收益。

  1. 股票日收益率
    股票日收益率计算公式如下:

    其中p_t表示股票在t时刻的收盘价,p_(t-1)表示股票在t-1时刻的收盘价。

  2. 日收益率时间序列图


3. 日收益率箱型图

4. 累积日收益率

5. 模型分析
在股票风险性一定的情况下:
图2,图3可以看出,各股票的日均收益率大致为0,但abc003、abc006、abc007这三支股票波动较大。
图4中,我们需要在投资时尽量避免左侧尾巴上的异常值,因为他们代表了较大的亏损,而分布在右侧尾巴上的异常值通常是件好事,它代表较大的盈利。

股票风险性
6. 极差、四分位差、平均差、方差、标准差和离散系数
平均差:能全面准确的反应一组数据的离散状况,平均差越大,说明数据离散程度越大,反之,离散程度越小。

plot_distribution(Stock_acc, cols=2, width=20, height=50, hspace=0.45, wspace=0.5)earn_rate_range=np.max(StockReturns)-np.min(StockReturns)
earn_rate_interquartile_range=StockReturns.quantile(0.75)-StockReturns.quantile(0.25)
earn_rate_var=np.var(StockReturns)
earn_rate_std=np.std(StockReturns)
earn_rate_coefficient=np.std(StockReturns)/np.mean(StockReturns)
print("日收益率极差:",earn_rate_range)
print("日收益率四分位差: ",earn_rate_interquartile_range)
print("日收益率方差: ",earn_rate_var)
print("日收益率标准差: ",earn_rate_std)
print("日收益率离散系数: ",earn_rate_coefficient)

方差:方差是各变量与平均值的差的平方和除以总数n-1,对数据离散程度的度量。


7. 偏度

偏度衡量随机变量概率分布的不对称性,是相对于平均值下对称程度的度量。偏度为零表示数值相对均匀的分布在平均值的两侧,但不一定意味着一定是对称分布。

from scipy import stats
# 计算收益分布的偏度
earn_rate_skew=stats.skew(StockReturns)
print("日收益率偏度:",earn_rate_skew)
print("日收益率偏度:",StockReturns.skew())


在本次股票模型中,更倾向于正的偏度,因为这意味着高盈利的概率更大。

波动率

股票的波动率衡量了股票在特定时间内收益率的变化。一般来说,波动率越高,该股票的投资风险更大,导致人们选择投资其他股票。

plt.figure(figsize = (20,20))
# 定义最小周期
min_periods = 75
# 计算波动率
vol = StockReturns.rolling(min_periods).std() * np.sqrt(min_periods)
# 绘制波动率曲线
vol.plot(grid=True)
# 显示绘图结果
plt.show()

模型分析

在股票收益一定的情况下,我们更倾向于选择正偏度大且波动性小的股票,此时我们所需承担的风险较小。

(二)结合收益及风险建立模型

收益与风险的关系

# 在收益-风险散点图中突出风险最小的点
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)


从中分析,股票abc003属于高风险低收益性,股票abc010属于低风险低收益性,投资时均应避免;而股票abc007属于低风险高收益性,可加大其投资比例;
为更进一步研究股票组合之间的关系,我们采取了Markowitz模型及夏普比率模型分别寻求其最低风险组合和最优收益组合

Markowitz模型

根据Markowitz模型建立收益与风险散点图。根据模型定义可知,理性的投资者总是在给定风险水平下对期望收益进行最大化,或者是在给定收益水平下对期望风险做最小化。反映在图中也就是左边边界上的点为最有效的投资组合。


根据模型定义,图中红点是在该模型下找到的最优点;

夏普比率模型

夏普比率[6]是一种经风险调整后的收益指标,用以比较投资的回报和风险,其表示每承受一单位的总风险所产生的超额回报,计算公式为:

式中:E®——投资组合预期收益率;r_f——无风险利率;σ——超额收益的标准差。
在本次模型中,我们假设无风险回报率为0;根据定义,夏普比率越大,股票越好。反映在图中也就是正上方的点为最优点;

# 找到夏普比率最大数据对应的索引值
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)

模型分析

在Markowitz求最低风险模型下,投资abc004、abc010、abc008、abc7占比较高,结合图3、图4、图8也可以看出,这几支股票波动都不大,风险都比较低。
在夏普比率求最优组合模型下,投资abc007、abc006、abc004、abc001占比较高,结合图5及股票日均收益率也可证明其合理性。

第三届中青杯数模本科组问题一———股票选择和投资组合方案(excel、python-Markowitz模型、夏普比率模型)相关推荐

  1. 第三届蓝桥杯预赛c++b组

    1.微生物增值 假设有两种微生物 X 和 Y     X出生后每隔3分钟分裂一次(数目加倍),Y出生后每隔2分钟分裂一次(数目加倍).     一个新出生的X,半分钟之后吃掉1个Y,并且,从此开始,每 ...

  2. 第三届蓝桥杯决赛c++b组

    1.星期几 [结果填空] (满分5分)     1949年的国庆节(10月1日)是星期六.      今年(2012)的国庆节是星期一.     那么,从建国到现在,有几次国庆节正好是星期日呢? 只要 ...

  3. 第三届蓝桥杯C++本科B组决赛解题报告(更新中)

    <1>星期几 9 package JiaNan; import java.util.Calendar; import java.util.GregorianCalendar; public ...

  4. 蓝桥杯java初赛本科组,2012年第三届蓝桥杯全国软件专业人才设计与开发大赛Java本科组初赛试题...

    这是2012年第三届蓝桥杯全国软件专业人才设计与开发大赛Java本科组初赛试题的完整版 2012第三届蓝桥杯软件大赛Java语言本科组初赛试题 (说明:1-4题为结果填空,5-7为程序填空,8-10为 ...

  5. 2012年第三届蓝桥杯省赛C语言B组

    2012年第三届蓝桥杯省赛C语言B组 题目来源:蓝桥杯 作者:GGG166 第一题 题目:微生物增殖 假设有两种微生物 X 和 Y X出生后每隔3分钟分裂一次(数目加倍),Y出生后每隔2分钟分裂一次( ...

  6. 第十一届蓝桥杯省赛 C++组试题 第2题 求完数

    /* 第十一届蓝桥杯省赛C++组试题精讲第2题 求完数因子:因子也叫因数,例如3×5=15,那么3和5是15的因子. 同时15×1=15,那么1和15也是15的因子. 1,3,5,15 这四个因子是1 ...

  7. 【北航数模】21中青杯 B题 港珠澳大桥桥梁设计与安全策略 A题汽车组装车间流水线问题

    21中青杯 B题 港珠澳大桥桥梁设计与安全策略 AB思路都有 加群即可 北航研二数模狗(匿了),代做.完整代码.详细思路加群(看评论区).. 更新摘要: 要注意一点 b题主要是车辆受力的物理模型+约束 ...

  8. 2012年第三届蓝桥杯C/C++程序设计本科B组决赛 拼音字母(编程大题)

    2012年第三届蓝桥杯C/C++程序设计本科B组决赛题目汇总: http://blog.csdn.net/u014552756/article/details/51399827 拼音字母 在很多软件中 ...

  9. 数组三元数c语言程序,递增三元数组——第九届蓝桥杯C语言B组(省赛)第六题...

    原创 标题:递增三元组 给定三个整数数组 A = [A1, A2, ... AN], B = [B1, B2, ... BN], C = [C1, C2, ... CN], 请你统计有多少个三元组(i ...

最新文章

  1. 使用Nginx为Leanote配置Https
  2. linux无人值守安装
  3. vs2005打开vs2008
  4. linux 使cpu使用率升高_Linux程序性能优化:CPU的上下文切换
  5. Go的channel与map是否并发安全以及原因
  6. 计算机视觉结课论文,计算机视觉与图像识别结课论文
  7. matlab 28m35,F28M35H52C
  8. shell-最近7天目录
  9. 鸿蒙系统nova3i,华为nova3i无惧大型手游:打造丝般顺滑娱乐体验
  10. 跨平台的移动Web应用开发平台 PhoneGap 1.6 发布
  11. LaTeX 2022 安装教程
  12. Mac无法打开“XX”,因为Apple无法检查其是否包含恶意软件。”的解决办法
  13. Dev-Cpp下载和安装步骤
  14. 微信小程序如何引用阿里icon字体
  15. Linux内核学习(八):linux内核配置与模块
  16. mysql运行sql错误1055_sql数据库执行错误代码1055怎么解决?
  17. chimera添加氨基序列
  18. 18. --plic--=--ply--=--pli--=--ple--=--plex--=--plo-- to fold 倍,重,折叠 (词19、20)
  19. OpenCV + ORC 实现身份证识别
  20. 《Python股票量化交易从入门到实践》随书赠送“回测框架”的使用帮助

热门文章

  1. JVM之记忆集和卡表
  2. matlab 中克罗内克积,克罗内克积
  3. Couldn‘t terminate the existing process for xxx
  4. 电脑脑运行快捷键是什么,电脑运行窗口快捷键
  5. 学汇率规避风险知识做懂汇率的外贸人
  6. 【历史上的今天】7 月 25 日:IBM 获得了第一项专利;Verizon 收购雅虎;亚马逊发布 Fire Phone
  7. c语言编译器a安卓,c语言编译器手机版下载-c语言编译器appv7.1 安卓版 - 极光下载站...
  8. 期货交易有什么套利技巧?
  9. 正则表达式在线生成工具
  10. oracle磁带的使用期限,存储的损耗 关于磁带寿命的一些探讨