任选两只股票用Python使用日度交易行情信息构造10日简单移动平均线、动量和滚动波动率三个特征,要求说明:构造3个特征的理由,构造方法,画出时间序列图,附上完整代码
时间: 2024-04-01 18:32:55 浏览: 32
构造3个特征的理由:
1. 10日简单移动平均线可以反映出股票价格的趋势,有助于判断股票价格的上升或下降趋势。
2. 动量可以反映出股票价格的变化速度,有助于判断股票价格是否处于波动的状态。
3. 滚动波动率可以反映出股票价格的波动幅度,有助于判断股票价格的波动性。
构造方法:
1. 10日简单移动平均线:首先计算出10日的股票收盘价均值,然后将这个均值作为第一天的简单移动平均值,接着每一天计算出对应的10日的均值,最终形成10日的简单移动平均线。
2. 动量:计算出每一天的收盘价与前一天的收盘价的差值,作为该天的动量值。
3. 滚动波动率:首先计算出10日的收盘价均值,然后计算出每一天的收盘价与10日均值的差值的平方,最后取10日内所有差值平方的平均值的平方根,作为该天的滚动波动率值。
时间序列图和完整代码见下:
相关问题
任选两只股票用Python使用日度交易行情信息构造10日简单移动平均线、动量和滚动波动率三个特征,分别画出时间序列图,附上完整代码
好的,我理解您的问题了。以下是我提供的Python代码,其中我选择了AAPL和IBM两个股票,使用了pandas和yfinance库来获取日交易数据,然后计算了10日简单移动平均线、动量和滚动波动率三个特征,并画出了时间序列图。
```python
import pandas as pd
import yfinance as yf
import matplotlib.pyplot as plt
# 获取AAPL和IBM的交易数据
aapl = yf.download("AAPL", start="2020-01-01")
ibm = yf.download("IBM", start="2020-01-01")
# 计算10日简单移动平均线
aapl['SMA'] = aapl['Close'].rolling(window=10).mean()
ibm['SMA'] = ibm['Close'].rolling(window=10).mean()
# 计算动量
aapl['Momentum'] = aapl['Close'] - aapl['Close'].shift(1)
ibm['Momentum'] = ibm['Close'] - ibm['Close'].shift(1)
# 计算滚动波动率
aapl['Rolling Volatility'] = aapl['Close'].rolling(window=10).std()
ibm['Rolling Volatility'] = ibm['Close'].rolling(window=10).std()
# 画出时间序列图
plt.figure(figsize=(15,5))
plt.plot(aapl['Close'], label='AAPL Close')
plt.plot(aapl['SMA'], label='AAPL 10-day SMA')
plt.plot(aapl['Momentum'], label='AAPL Momentum')
plt.plot(aapl['Rolling Volatility'], label='AAPL Rolling Volatility')
plt.legend(loc='upper left')
plt.title('AAPL')
plt.show()
plt.figure(figsize=(15,5))
plt.plot(ibm['Close'], label='IBM Close')
plt.plot(ibm['SMA'], label='IBM 10-day SMA')
plt.plot(ibm['Momentum'], label='IBM Momentum')
plt.plot(ibm['Rolling Volatility'], label='IBM Rolling Volatility')
plt.legend(loc='upper left')
plt.title('IBM')
plt.show()
```
希望这个代码对您有所帮助。如果您有任何其他问题,请随时问我。
任选两只股票用Python画出两支股票日收盘价和成交金额的时间序列图
好的,我可以帮你用Python画出两支股票的时间序列图。首先,我们需要用Python获取股票数据,这里我选择使用tushare库来获取数据。请确保你已经安装了tushare库。
以下是代码实现:
```python
import tushare as ts
import matplotlib.pyplot as plt
# 设置tushare pro的token
ts.set_token('你的token')
# 初始化pro接口
pro = ts.pro_api()
# 获取股票代码为'000001.SZ'的日线行情数据
df1 = pro.daily(ts_code='000001.SZ', start_date='20210101', end_date='20211231')
# 获取股票代码为'600036.SH'的日线行情数据
df2 = pro.daily(ts_code='600036.SH', start_date='20210101', end_date='20211231')
# 将交易日期转化为时间戳
df1['trade_date'] = pd.to_datetime(df1['trade_date'])
df2['trade_date'] = pd.to_datetime(df2['trade_date'])
# 绘制股票1的收盘价时间序列图
plt.plot(df1['trade_date'], df1['close'], label='000001.SZ')
# 绘制股票2的收盘价时间序列图
plt.plot(df2['trade_date'], df2['close'], label='600036.SH')
# 设置图例
plt.legend()
# 设置横坐标名称
plt.xlabel('Date')
# 设置纵坐标名称
plt.ylabel('Close price')
# 显示图像
plt.show()
# 绘制股票1的成交金额时间序列图
plt.plot(df1['trade_date'], df1['amount'], label='000001.SZ')
# 绘制股票2的成交金额时间序列图
plt.plot(df2['trade_date'], df2['amount'], label='600036.SH')
# 设置图例
plt.legend()
# 设置横坐标名称
plt.xlabel('Date')
# 设置纵坐标名称
plt.ylabel('Amount')
# 显示图像
plt.show()
```
这段代码会获取股票代码为'000001.SZ'和'600036.SH'的日线行情数据,并绘制出这两只股票的收盘价和成交金额的时间序列图。你可以根据自己的需要修改代码中的股票代码和时间范围。