请帮我用Python写一个股票分析及大盘行情分析的程序
时间: 2023-12-02 12:03:34 浏览: 33
好的,为了实现股票分析和大盘行情分析,我们需要用到一些Python库,比如pandas、numpy、matplotlib等。以下是一个简单的股票分析及大盘行情分析的程序:
```python
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import datetime as dt
import pandas_datareader.data as web
# 设置开始和结束日期
start = dt.datetime(2019, 1, 1)
end = dt.datetime.now()
# 用pandas_datareader获取股票数据
df = web.DataReader('AAPL', 'yahoo', start, end)
# 计算移动平均线
ma_day = [10, 20, 50]
for ma in ma_day:
column_name = "MA %s days" % (str(ma))
df[column_name] = df['Adj Close'].rolling(window=ma).mean()
# 计算股票收益率
df['Daily Return'] = df['Adj Close'].pct_change()
# 计算大盘指数收益率
spy_etf = web.DataReader('SPY', 'yahoo', start, end)['Adj Close']
spy_etf_rets = spy_etf.pct_change()
# 绘制股票走势图和移动平均线
fig = plt.figure(figsize=(12, 8))
ax1 = fig.add_subplot(211)
ax1.plot(df.index, df['Adj Close'])
ax1.plot(df.index, df['MA 10 days'])
ax1.plot(df.index, df['MA 20 days'])
ax1.plot(df.index, df['MA 50 days'])
ax1.set_title('AAPL Adj. Close Price and Moving Averages')
ax1.set_ylabel('Price')
# 绘制收益率直方图
ax2 = fig.add_subplot(212)
ax2.hist(df['Daily Return'].dropna(), bins=100)
ax2.set_title('AAPL Daily Return Histogram')
ax2.set_xlabel('Daily Return')
ax2.set_ylabel('Frequency')
plt.tight_layout()
plt.show()
# 绘制大盘指数与股票收益率散点图
fig = plt.figure(figsize=(12, 8))
plt.scatter(spy_etf_rets, df['Daily Return'].dropna())
plt.xlabel('SPY ETF Returns')
plt.ylabel('AAPL Returns')
plt.show()
```
这个程序可以分析苹果公司的股票,计算移动平均线、股票收益率和大盘指数收益率,并绘制股票走势图、移动平均线图、收益率直方图和大盘指数与股票收益率散点图。你可以根据自己的需求更改代码来分析不同的股票和时间段。