Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

3.4 应用:计算股票价格收益率

本应用将利用NumPy构架和获取股票价格序列,并计算价格的平均值、标准差,以及计算简单和对数收益率。通过本应用,将熟悉股票价格分析的一般过程。

1. 获取股票价格序列

股票价格是投资者观察市场最直接的指标,它反映了市场对股票价值的评估。股票价格的变动可以帮助投资者识别价格趋势和可能的市场走向。

1.1 使用一维数组的方法

以下是一个简单的示例,说明如何使用NumPy数组来表示股票价格序列:

import numpy as np

prices = np.array([100.0, 102.5, 98.3, 105.2, 99.7])   # 创建一个包含股票价格的NumPy数组

print("股票价格序列:", prices)                           # 打印股票价格序列
股票价格序列: [100.  102.5  98.3 105.2  99.7]

1.2 使用NumPy的load()函数

当然,我们可以使用NumPy的load()函数从.npy格式的文件中读取股票价格。首先,确保已经保存了股票价格数据为.npy格式的文件。然后,可以使用以下代码加载数据:

import numpy as np

prices = np.load('datasets/NVDA.npy')   # 从.npy文件中加载英伟达的股票价格数据,获得价格序列
dates = np.load('datasets/dates.npy')   # 从.npy文件中加载对应的日期数据,获得日期序列

print('展示前十个价格序列:', prices[:10])  # 打印加载的股票价格数据
print('展示前十个日期序列:', dates[:10])
展示前十个价格序列: [199 212 213 215 222 221 223 224 222 220]
展示前十个日期序列: ['2018-01-02' '2018-01-03' '2018-01-04' '2018-01-05' '2018-01-08'
 '2018-01-09' '2018-01-10' '2018-01-11' '2018-01-12' '2018-01-16']

在这个例子中,假设你的股票价格数据保存在名为stock_prices.npy的文件中。np.load()函数将这个.npy文件加载到一个NumPy数组中。然后你可以对这个数组进行进一步的分析和处理。

2. 股票价格的分析

下面指标在股票价格分析和预测中都扮演着重要的角色,它们提供了关于股票价格变动和市场行为的重要信息,有助于投资者做出明智的决策。

2.1 特定日期的股票价格

如果你有一个日期序列和相应的股票价格序列,并且想要访问特定日期的股票价格,你可以使用NumPy的索引功能

query_date = '2018-01-02'     # 要查询的日期

index = np.where(dates == query_date)[0]             # 找到查询日期在日期序列中的索引
print("%s 的股票价格: %s" %(query_date, prices[2]))
2018-01-02 的股票价格: 213

2.2 价格序列的平均值

股票价格的平均值提供了价格的中心趋势。它可以用来评估当前价格相对于历史价格的表现,以及价格是否处于过高或过低水平。

要计算股票价格序列的平均值,你可以使用NumPy的mean()函数

mean_price = np.mean(prices)
print("股票价格序列的平均价格:", mean_price)
股票价格序列的平均价格: 201.828125

2.3 价格序列的标准差

票价格的标准差度量了价格的波动性或风险。较高的标准差意味着价格波动较大,可能存在较大的风险,而较低的标准差则表示价格波动较小,风险较低。

要计算股票价格序列的标准差,你可以使用NumPy的std()函数

std_dev = np.std(prices)
print("股票价格序列的标准差:", std_dev)
股票价格序列的标准差: 44.66116895644139

2.4 价格的变化

价格变化指示了股票价格在一段时间内的涨跌情况。对价格变化的分析可以帮助投资者理解市场的波动性和趋势,从而制定相应的投资策略。

要计算股票价格序列的变化,你可以使用NumPy的diff()函数

price_diff = np.diff(prices)

2.5 简单收益率

收益率表示股票在一段时间内的收益情况。它可以帮助投资者评估投资的回报率和风险,并比较不同股票或投资组合的表现。

rt=PtPt1Pt1r_t = \frac{P_t - P_{t-1}}{P_{t-1}}

要计算每日收益率,你可以使用NumPy的diff()函数来计算价格的变化,然后将其除以前一天的价格。

returns = np.diff(prices) / prices[:-1]

2.6 对数收益率

对数收益率是收益率的对数,它具有对称性和正态分布特性。对数收益率的分析可以更准确地评估风险和回报,并用于建立数学模型进行风险管理和资产定价。

对数收益率(logarithmic return)可以使用以下公式计算:

rt=ln(PtPt1)r_t = \ln\left(\frac{P_t}{P_{t-1}}\right)

其中:

  • rt r_t 是在时间 t t 的对数收益率;

  • Pt P_t 是在时间 t t 的资产价格;

  • Pt1 P_{t-1} 是在时间 t1 t-1 的资产价格;

  • ln \ln 表示自然对数。

要计算对数收益率,你可以先使用NumPy的log()函数计算股票价格的自然对数,然后使用diff()函数计算对数价格序列的差值。

log_returns = np.diff(np.log(prices))