1.编写程序求日收益,并存入变量 2.编写程序分别求每支股票的日收益变量从2015年1月6日到2021年7月7日的最大子数组。将结果保存到变量 3.利用matplotlib绘制每只股票原始价格的图线(注意:不是日收益曲线,只需画原始数据曲线)
时间: 2024-09-19 22:11:24 浏览: 41
1. 编程求日收益并存储变量的一般步骤如下(假设我们有每日股票收盘价的数据):
```python
import pandas as pd
# 假设df是一个包含日期和股票价格的DataFrame
data = ... # 你的实际数据源
df['date'] = pd.to_datetime(df['date']) # 将日期列转换为datetime格式
df.set_index('date', inplace=True) # 设置日期为索引
# 计算日收益率 (今天的收盘价 / 昨天的收盘价 - 1)
df['daily_return'] = df['price'].pct_change()
# 存储日收益变量,例如将最大值存入'daily_return_max'
df['daily_return_max'] = df['daily_return'].rolling(window=...).max() # 滑动窗口计算每天的最大收益
```
2. 求每支股票的最大子数组(通常这需要使用动态规划算法,如Kersten-Ibarra-Olkin-Kenel算法):
```python
from scipy.signal import argrelextrema
# 生成最大收益序列
stock_daily_returns = df.groupby('stock')['daily_return_max'].apply(list)
# 对每个股票的日收益列表找出最大子数组
sub_arrays = {}
for stock, returns in stock_daily_returns.items():
sub_arrays[stock] = max(returns, key=lambda x: len(x))
# 将结果保存在字典或其他适合的数据结构中
```
3. 使用matplotlib绘制原始价格曲线:
```python
import matplotlib.pyplot as plt
plt.figure(figsize=(12, 6))
for stock, daily_prices in df.groupby('stock'):
plt.plot(daily_prices.index, daily_prices['price'], label=stock)
plt.title('Stock Prices Over Time')
plt.xlabel('Date')
plt.ylabel('Price')
plt.legend()
plt.show()
```
阅读全文