2.1.1 预期年化收益率

2024-01-08 00:12
文章标签 收益率 2.1 预期 年化

本文主要是介绍2.1.1 预期年化收益率,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

跳转到根目录:知行合一:投资篇

已完成:
1、投资&技术
  1.1.1 投资-编程基础-numpy
  1.1.2 投资-编程基础-pandas
  1.2 金融数据处理
  1.3 金融数据可视化
2、投资方法论
  2.1.1 预期年化收益率
3、投资实证
  [3.1 2023这一年] 被鸽

文章目录

  • 1. 知识准备
    • 1.1. 使用qstock取数
    • 1.2. 如何计算4%的年华收益率?
    • 1.3. pyecharts上画收盘折线图
    • 1.4. 如何在走势图上画直线?
  • 2. 完整案例
  • 3. 各标的走势对比
    • 3.1. 沪深300
      • 3.1.1. 沪深300 2016-02-25
      • 3.1.2. 沪深300 2014-05-23
    • 3.2. 中证500
      • 3.2.1. 中证500 2016-02-25
      • 3.2.2. 中证500 2014-05-23
    • 3.3. 创业板ETF 159915 2012-12-11
  • 4. 总结

本文需要探讨的是:

  1. 在我大A,预期的年华收益多少是合适的呢?
  2. 横评沪深300、中证500、创业板ETF,其内在的年华收益率多少?
  3. 有没有办法能简单的评价出此标的的内在收益率?

1. 知识准备

1.1. 使用qstock取数

这个比较简单 ,在之前的文章中已经有更加详细的描述(1.2 金融数据处理),这里就是简单的叙说一下:

import qstock as qs
# 如果没有安装qstock,执行:
# pip install qstock
# pip install pywencaidf=qs.get_data('510300')   # 获取的是510300的所有日线历史行情数据,自己保存,不用每次都去拉,做一些简单算法、回测是够用了。
df.to_csv('510300.csv')
print(df)name    code   open   high    low  close    volume  \
date                                                                 
2012-05-28  沪深300ETF  510300  1.951  2.007  1.944  2.004  12775188   
2012-05-29  沪深300ETF  510300  2.002  2.061  2.002  2.044   7149490   
2012-05-30  沪深300ETF  510300  2.042  2.047  2.033  2.036   2658872   
2012-05-31  沪深300ETF  510300  2.021  2.045  2.013  2.030   1781560   
2012-06-01  沪深300ETF  510300  2.029  2.060  2.020  2.030   1793500   
...              ...     ...    ...    ...    ...    ...       ...   
2023-12-29  沪深300ETF  510300  3.488  3.505  3.482  3.499  25188735   
2024-01-02  沪深300ETF  510300  3.502  3.502  3.451  3.453   9429306   
2024-01-03  沪深300ETF  510300  3.446  3.460  3.428  3.443  10617503   
2024-01-04  沪深300ETF  510300  3.442  3.442  3.387  3.413  16661525   
2024-01-05  沪深300ETF  510300  3.404  3.439  3.377  3.396  16996697   turnover  turnover_rate  
date                                     
2012-05-28  3.285755e+09           3.49  
2012-05-29  1.875593e+09           1.96  
2012-05-30  7.017258e+08           0.73  
2012-05-31  4.681931e+08           0.49  
2012-06-01  4.734772e+08           0.49  
...                  ...            ...  
2023-12-29  8.806299e+09           6.89  
2024-01-02  3.269677e+09           2.58  
2024-01-03  3.654758e+09           2.90  
2024-01-04  5.674870e+09           4.56  
2024-01-05  5.796964e+09           4.65  [2826 rows x 9 columns]

1.2. 如何计算4%的年华收益率?

什么叫年化4%?这么理解,今年1月1日是1块钱,到年底的时候,是多少钱?1*(1+0.04) = 1.04元。

假设今年一共是250个交易日(所以250日线很重要),所以照理来说,每个交易日上涨大约就是 1.04/250 = 0.00416元。

1.3. pyecharts上画收盘折线图

我们要画的折线图,其实是沪深300的收盘价走势图。这个也比较容易,在之前 1.3 金融数据可视化中第1.2.2小节已经画过了,很简单。这里也为了不跳出,把代码贴出来。

#导入数据分析和量化常用库
import pandas as pd
import numpy as np
#导入pyecharts
from pyecharts.charts import *df=qs.get_data('510300')g=(Line().add_xaxis(df.index.strftime('%Y-%m-%d').tolist()).add_yaxis('',df.close))
g.render_notebook()

就这么点代码,感谢cctv,错了,感谢python、pandas、pyecharts。

后面的完整案例,就是在此基础上,进一步优化了图形上的一些配置,可以在鼠标移动到上面hover的时候,能显示出来对应的点位信息,而已。

1.4. 如何在走势图上画直线?

pyecharts画直线,其实也是很简单的。

from pyecharts import options as opts
from pyecharts.charts import Line
import random# 创建数据集合
x_data = [i for i in range(10)]
# y_data = [random.randint(-50, 50) for _ in x_data]
y_data = 2 * x_data# 初始化 Line 对象
line = (Line().add_xaxis(x_data).add_yaxis("", y_data))# 设置全局配置项
line.set_global_opts(title_opts=opts.TitleOpts(title="直线图"),toolbox_opts=opts.ToolboxOpts())line.render_notebook()

2. 完整案例

代码主要的流程:

  1. 定义要获取的标的,比如沪深300,代码510300。使用qstock获取日线历史行情数据。

  2. 直线画线的其实时间,比如可以定在 2016-02-25。(定在哪里,这个就见仁见智了,老股民画线有自己的心得。)

    当然,我们可以自己定起始时间。

  3. 根据我们想要的年华,比如4%,6%,8%,分别计算在此复合年化下的直线数值,以便在pyecharts画线的时候用到。

  4. 画图,收盘价折线图 + 4%直线 + 6%直线 + 8%直线。

from pyecharts.charts import Line
import pandas as pd
import pyecharts.options as opts
import qstock as qs# 在线选色 http://tools.jb51.net/static/colorpicker/
security = '510300' # 510300   510500
start_date_str = '2016-02-25'  # 2016-02-25   2014-05-23
lines = [{'start_date_str': start_date_str, 'number_of_percent': 0.04, 'name_of_line': '预测值4%', 'color': '#cc0099'},{'start_date_str': start_date_str, 'number_of_percent': 0.06, 'name_of_line': '预测值6%', 'color': '#16c79a'},{'start_date_str': start_date_str, 'number_of_percent': 0.08, 'name_of_line':  '预测值8%', 'color': '#00d7ff'}
]def calculate_new_col(df, number_of_percent, name_of_line, start_date_str):end = begin = df.loc[start_date_str, 'close']  # 2.6142 获取起始日的收盘价rate = number_of_percent  # 0.06  获取收益率预期值year = len(df.loc[start_date_str:].index) / 250  # 计算有多少年,以便计算收益率下的终值end *= ((1 + rate) ** year)  # 终值,**是次方运算slot = len(df.loc[start_date_str:].index) - 1  # 有多少个时间区间,将总收益平分(直线,是等差数列,平分总收益)per_step = (end - begin) / slot  # 将总收益平分(直线,是等差数列,平分总收益),每个slot递增 per_step# 计算新列(比如年化4%)的值row_keys = df.loc[start_date_str:].indexthis_day_value = beginfor row_key in row_keys:df.loc[row_key, name_of_line] = this_day_valuethis_day_value = this_day_value + per_stepdf[name_of_line] = df[name_of_line].round(3)# 加载数据
df = qs.get_data(security)
# 计算线条所需的数据
for item in lines:calculate_new_col(df=df, number_of_percent=item['number_of_percent'], name_of_line=item['name_of_line'], start_date_str=item['start_date_str'])
x_data = df.index.date.tolist()  # x轴所需的数据
close_data = df['close'].values.tolist()  # 收盘价数据line = (Line(init_opts=opts.InitOpts(width="1400px", height="700px"))   # 设置图表大小.add_xaxis(x_data)  # 设置x轴, 需要加tolist.add_yaxis("收盘价",close_data,is_connect_nones=True,# 缺失值的处理symbol_size=10, # 标识的大小is_smooth=True,# 线条样式  , 是否设置成圆滑曲线linestyle_opts=opts.LineStyleOpts(width=1,color ='#000000',type_="solid"), # 线条颜色和宽度label_opts=opts.LabelOpts(is_show=True,position='top',color ='#000000'),# 文字标签的位置和颜色itemstyle_opts=opts.ItemStyleOpts(border_width=3, border_color="#000000", color="#000000"),# 标识的颜色和宽度).set_global_opts(title_opts=opts.TitleOpts(title="%s趋势分析" % security,subtitle="", # 主标题title_textstyle_opts=opts.TextStyleOpts(font_size=30), #主标题字体大小pos_left='6%'), # 主标题位置legend_opts=opts.LegendOpts(is_show=True,# 是否显示图例pos_top="3%",# 图例位置item_width=15,# 宽度item_height=15,#高度item_gap=10,# 图例间隔textstyle_opts=opts.TextStyleOpts(font_size=15)), # 图例文字大小tooltip_opts=opts.TooltipOpts(trigger="axis"),# 提示框触发, 按坐标轴yaxis_opts=opts.AxisOpts(type_="value",axistick_opts=opts.AxisTickOpts(is_show=False),   # 刻度线不显示axisline_opts=opts.AxisLineOpts(is_show=False),   # y轴线不显示splitline_opts=opts.SplitLineOpts(is_show=True),   # y轴网格线显示axislabel_opts=opts.LabelOpts(formatter="{value} 元")),# y轴刻度文字xaxis_opts=opts.AxisOpts(axistick_opts=opts.AxisTickOpts(is_align_with_label=True),is_scale=False,boundary_gap=False)))for item in lines:line_data = df[item['name_of_line']].values.tolist()line.add_yaxis(item['name_of_line'],line_data,is_connect_nones=True,#symbol="triangle" 标识的样式  三角形symbol_size=10, # 标识的大小is_smooth=True, # 线条样式  , 是否设置成圆滑曲线linestyle_opts=opts.LineStyleOpts(width=3,color=item['color']),  # 线条颜色和宽度label_opts=opts.LabelOpts(is_show=True,position='top',color=item['color']),# 文字标签的位置和颜色itemstyle_opts=opts.ItemStyleOpts(border_width=3, border_color=item['color'], color=item['color']),  # 标识的颜色和宽度)# 在pycharm中,保存html
# line.render("%s趋势分析.html" % security)
# 在notebook中,直接显示出来
line.render_notebook()

上述代码,可得绘图如下:

这个图,真是好看啊,4%是妥妥的~即使是在如此行情的2024年,也是没有跌破啊。

3. 各标的走势对比

下面就是分别调整2个参数:

security = ‘510300’
start_date_str = ‘2016-02-25’

其实还有下面的参数可以配:number_of_percent,这里只是3条线,4%,6%,8%,也可以再加10%的等等。

lines = [{'start_date_str': start_date_str, 'number_of_percent': 0.04, 'name_of_line': '预测值4%', 'color': '#cc0099'},{'start_date_str': start_date_str, 'number_of_percent': 0.06, 'name_of_line': '预测值6%', 'color': '#16c79a'},{'start_date_str': start_date_str, 'number_of_percent': 0.08, 'name_of_line':  '预测值8%', 'color': '#00d7ff'}
]

下面主要就是按照不同的标的,调整起始时间看看画出来的图的效果。也好对这个标的心中有数。

3.1. 沪深300

3.1.1. 沪深300 2016-02-25

标注:沪深300 510300

直线起始时间:2016-02-25

上图,是需要把完整代码前面2行改一下就行:

security = '510300'
start_date_str = '2016-02-25'

3.1.2. 沪深300 2014-05-23

标注:沪深300 510300

直线起始时间:2014-05-23

上图,是需要把完整代码前面2行改一下就行:

security = '510300'
start_date_str = '2014-05-23'

3.2. 中证500

3.2.1. 中证500 2016-02-25

标注:中证500 510500

直线起始时间:2016-02-25

上图,是需要把完整代码前面2行改一下就行:

security = '510500'
start_date_str = '2016-02-25'

3.2.2. 中证500 2014-05-23

标注:中证500 510500

直线起始时间:2014-05-23

上图,是需要把完整代码前面2行改一下就行:

security = '510500'
start_date_str = '2014-05-23'

3.3. 创业板ETF 159915 2012-12-11

由于创业板波动太大,那我们从远一点2012年开始画图,而且,8%貌似都不能很好的拟合19年和23年的低点,我们加了一条10%的红线!

security = '159915'
start_date_str = '2012-12-11'
lines = [{'start_date_str': start_date_str, 'number_of_percent': 0.04, 'name_of_line': '预测值4%', 'color': '#cc0099'},{'start_date_str': start_date_str, 'number_of_percent': 0.06, 'name_of_line': '预测值6%', 'color': '#16c79a'},{'start_date_str': start_date_str, 'number_of_percent': 0.08, 'name_of_line':  '预测值8%', 'color': '#00d7ff'},{'start_date_str': start_date_str, 'number_of_percent': 0.1, 'name_of_line':  '预测值10%', 'color': '#ff0000'}
]

这意味着:如果是从12年12月开始,即使是拿着不动,到现在也能拿到10%的复合年化收益率,还是非常非常可观的。

4. 总结

横评各个标的,如果拉长时间来看,4% ~ 10% 都是有可能的,关键还是在画线的开始时点在哪里。

留一个坑:有没有办法能简单的评价出此标的的内在收益率?其实是有的,只需要将日线行情数据,利用最佳拟合直线来绘制,再分别计算得出其斜率值,这就能大概知道此标的的内在收益率了。这个就留待后面再揭晓实现方案~

但是不管怎么说,这条线,都是向上的,要保持耐心和信心,一定能有所获得!

这篇关于2.1.1 预期年化收益率的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/581715

相关文章

2.1/5.1和7.1声道系统有什么区别? 音频声道的专业知识科普

《2.1/5.1和7.1声道系统有什么区别?音频声道的专业知识科普》当设置环绕声系统时,会遇到2.1、5.1、7.1、7.1.2、9.1等数字,当一遍又一遍地看到它们时,可能想知道它们是什... 想要把智能电视自带的音响升级成专业级的家庭影院系统吗?那么你将面临一个重要的选择——使用 2.1、5.1 还是

【2.1 深度学习中的感知机是什么】

2.1 深度学习中的感知机是什么 深度学习是机器学习的一个分支,它模拟人脑的工作方式来处理数据,尤其是通过神经网络的结构来自动提取数据的特征并进行分类、回归或其他复杂的任务。在深度学习的早期发展中,许多基础概念和模型为后续的复杂网络奠定了基础。其中,**感知机(Perceptron)**是一个非常重要的基础模型,它实际上是神经网络和深度学习的前身之一。 感知机的基本概念 感知机是一种二分

【AI大模型应用开发】2.1 Function Calling连接外部世界 - 入门与实战(1)

Function Calling是大模型连接外部世界的通道,目前出现的插件(Plugins )、OpenAI的Actions、各个大模型平台中出现的tools工具集,其实都是Function Calling的范畴。时下大火的OpenAI的GPTs,原理就是使用了Function Calling,例如联网检索、code interpreter。 本文带大家了解下Function calling,看

2.1ceph集群部署准备-硬件及拓扑

硬件配置及建议 时至今日,ceph可以运行在各种各样的硬件平台上,不管是传统的x86架构平台(intel 至强系列、基于amd的海光系列等),还是基于arm的架构平台(比如华为鲲鹏),都可以完美运行ceph集群,展现了其强大的适应能力。 ceph的不同组件对硬件的需求有些许不同,下面是官方推荐的硬件要求: 组件资源最低配置要求OSD处理器最少1 core每200-500 MB/s最少1 co

TokuDB7.5.7-2.1使用TokuDB的系统和硬件需求v1

1 操作系统需求 TokuDB到目前位置只支持64位的Linux系统(所以现在不支持在window上编译运行) 2 硬件需求 内存:至少1G;如果想较好性能,建议2G以上。 外存:建议为数据目录(tokudb_data_dir)和日志目录(tokudb_log_dir)配置足够大的存储空间。

市盈率、市净率、净资产收益率股息率介绍

市盈率PE 市盈率 = 市值/净利润 概念解析:买入一家公司,几年回本, 年化收益率:净利润/市值(市盈率的倒数) 举例:砖头10万买个砖头,每年拍人带来1万利润,需要10年回本 市盈率:10/1 = 10年化收益率:1/10 = 10% 市净率PB 市净率 = 市值/净资产净资产 = 总资产 - 负债 举例:张三便利店,净资产:120万市值:100万市净率 = 100/120 = 0.83 此

年化从19.1%提升到22.5%,全球大类资产轮动,加上RSRS择时,RSRS性能优化70倍。(附策略源码)

原创内容第638篇,专注量化投资、个人成长与财富自由。 今天优化一下RSRS指标,并刷新一下策略。 大家知道,numpy的rolling apply性能不好,我们来优化一下: import numpy as npfrom numpy.lib.stride_tricks import as_strided as strideddef rolling_window(a: np.array, wi

个人旅游网(2.1)——使用阿里云在springboot项目中发送短信

文章目录 一、背景介绍二、详细步骤2.1、申请资质2.2、申请签名2.3、申请模板2.4、申请accessKey秘钥对2.5、SDK的使用[!]2.5.1、项目中导入依赖2.5.2、发短信的工具类 一、背景介绍 验证码发送背后的功能原理图: 想要在项目中实现上述发送验证码的功能,就需要了解以下步骤。 二、详细步骤 阿里云短信服务 一个短信一般分成成两部分:签名、模板

量化投资策略与技术学习PART7:量化选股之一致预期

上一节在说到行为金融学中提到过羊群效应,其实它还有一个更官方的名字叫做一致预期。一致预期是指市场上对某股票有一致看法——看多或者看空。在众多分析师的一致预期下,投资者会产生羊群效应,大量买入或者卖出,从而使得某股票持续上涨或者下跌,这就是一致预期选股的基本原理。 1、基本概念 股票的长期收益并不仅仅依赖于实际利润增长情况,还取决于实际的利润增长与投资者预期的利润增长之间的差异。持续的成长性可以

2.1 程序设计语言与概述

以下程序设计语言中,( )更适合用来进行动态网页处理。 A. HTML B. LISP C. PHP D. JAVA/C++ 正确答案是 C。 解析 HTML:静态网页 LISP:一种基于入演算的函数式编程语言 PHP:混合了C、Java、Perl以及PHP自创的语法。 它可以比CGl或者Perl更快速地执行动态网页。 引用调用方式下进行函数调用,是将( )。 A. 实参的值传递给形参