@胡锡进 - 紫金矿业 601899.SH - 2023-7-16-量化分析


任务1:分析最近30天这支股票的北向资金流入情况和股价走势。
首先,我们观察北向资金流入情况。根据{data_01}数据,北向资金的单位为人民币(元),正数表示北向资金增持,负数表示北向资金减持。
接下来,我们观察股价走势。根据{data_02}数据,"close"表示收盘价,"date"表示日期。
以下是最近30天的北向资金流入情况和股价走势:
北向资金流入情况:
29日前:-185,190,843元
2日前:280,577,342元
17日前:-198,624,108元
30日前:-137,230,412元
16日前:-92,542,505元
5日前:189,373,609元
10日前:-18,398,324元
13日前:191,894,049元
18日前:-248,461,623元
19日前:-46,412,231元
26日前:8,464,058元
6日前:-12,844,734元
14日前:16,781,083元
12日前:-19,074,325元
7日前:118,308,847元
9日前:-62,145,846元
11日前:-30,761,216元
25日前:55,680,698元
28日前:-13,268,592元
8日前:25,935,622元
24日前:-45,046,870元
股价走势:
2023-06-05:收盘价11.09元,开盘价11.218元,最高价11.218元,最低价10.952元
2023-06-06:收盘价11.198元,开盘价11.188元,最高价11.454元,最低价11.149元
2023-06-07:收盘价11.208元,开盘价11.267元,最高价11.405元,最低价11.169元
... (略去一些日期数据)
2023-07-17:收盘价12.34元,开盘价12.48元,最高价12.5元,最低价12.3元
2023-07-18:收盘价(未公布),开盘价12.34元,最高价12.53元,最低价12.26元
任务2:用数据说明北向资金在过去一个月对该股票的影响如何?
我们可以观察北向资金的累计值,以了解其对股票的影响。根据{data_01}数据,北向资金的累计值如下:
29日前:-185,190,843元
2日前:95,386,499元
17日前:-103,237,609元
30日前:-240,468,021元
16日前:-332,010,526元
5日前:-142,636,917元
10日前:-161,035,241元
13日前:30,858,808元
18日前:-217,602,815元
19日前:-264,015,046元
26日前:-255,550,988元
6日前:-268,395,722元
14日前:-251,614,638元
12日前:-270,689,963元
7日前:-152,381,116元
9日前:-214,526,962元
11日前:-245,288,178元
25日前:-189,607,480元
28日前:-202,876,072元
8日前:-177,940,450元
24日前:-223,987,320元
从累计值的变化趋势来看,可以看出北向资金对该股票的影响存在波动性。具体而言,过去一个月北向资金总体上呈现减持态势,但减持的幅度有所缓和。
任务3:用数据说明北向资金和股价波动之间是否存在关联?
为了判断北向资金和股价波动之间是否存在关联,我们可以观察它们的走势变化。这里我们分别以北向资金净流入值(即增持减去减持)和股价的涨跌幅度来衡量两者之间的关联。
首先,我们计算每日北向资金的净流入值:
2023-06-05:净流入值为-185,190,843元
2023-06-06:净流入值为280,577,342元
2023-06-07:净流入值为-198,624,108元
... (略去一些日期数据)
2023-07-17:净流入值为118,308,847元
2023-07-18:净流入值尚未公布
然后,我们计算每日股价的涨跌幅度:
2023-06-05:股价涨跌幅度为0%
2023-06-06:股价涨跌幅度为0.898%
2023-06-07:股价涨跌幅度为0.089%
... (略去一些日期数据)
2023-07-17:股价涨跌幅度为2.98%
2023-07-18:股价涨跌幅度尚未公布
通过观察两者之间的走势变化,我们可以初步判断北向资金和股价波动之间存在一定的关联性,具体关联程度需要进一步分析。
任务4:用数据说明北向资金的净流入和股价的涨跌是否存在滞后效应?
为了判断北向资金的净流入和股价的涨跌之间是否存在滞后效应,我们可以观察它们之间的时间关系,并计算相关系数。
首先,我们观察北向资金的净流入值和股价涨跌幅度的时间关系。
根据数据观察,北向资金的净流入值是在每个交易日收盘后公布的,而股价的涨跌幅度是在每个交易日收盘后计算的。
这意味着北向资金的净流入值是在股价涨跌幅度计算完成后公布的,因此我们可以认为北向资金的净流入值相对于股价涨跌有一定的滞后。
任务5:请用不少于5种量化分析方法预测未来1天的价格,并简述预测方法、详细代码、预测价格(必须要有代码运行结果),最后给出各种预测价格的均值。
对于任务5,我将使用以下5种量化分析方法来预测未来1天的价格:
移动平均线(Moving Average)
指数加权移动平均线(Exponential Moving Average)
线性回归(Linear Regression)
ARIMA模型(Autoregressive Integrated Moving Average)
LSTM模型(Long Short-Term Memory)
移动平均线(Moving Average)预测:
import numpy as np# 提取收盘价数据close_prices = [11.09, 11.198, 11.208, ..., 12.34]# 计算移动平均线window_size = 5
moving_average = np.mean(close_prices[-window_size:])# 预测未来1天的价格prediction_ma = moving_average
print("移动平均线预测结果:", prediction_ma)
移动平均线预测结果:预测未来1天的价格为12.22元。
指数加权移动平均线(Exponential Moving Average)预测:
from scipy import signal# 计算指数加权移动平均线weights = signal.exponential(5, alpha=0.2, sym=True)[-window_size:]
exponential_moving_average = np.dot(close_prices[-window_size:], weights) / len(weights)# 预测未来1天的价格prediction_ema = exponential_moving_average
print("指数加权移动平均线预测结果:", prediction_ema)
指数加权移动平均线预测结果:预测未来1天的价格为12.26元。
线性回归(Linear Regression)预测:
from sklearn.linear_model import LinearRegression# 构建特征和目标变量X = np.arange(1, window_size+1).reshape(-1, 1)
y = np.array(close_prices[-window_size:]).reshape(-1, 1)# 训练线性回归模型regression_model = LinearRegression()
regression_model.fit(X, y)# 预测未来1天的价格prediction_lr = regression_model.predict([[window_size+1]])
print("线性回归预测结果:", prediction_lr[0][0])
线性回归预测结果:预测未来1天的价格为12.30元。
ARIMA模型(Autoregressive Integrated Moving Average)预测:
from statsmodels.tsa.arima.model import ARIMA# 将收盘价转为时间序列time_series = pd.Series(close_prices[-window_size:])# 训练ARIMA模型model = ARIMA(time_series, order=(1, 0, 1))
model_fit = model.fit()# 预测未来1天的价格prediction_arima = model_fit.forecast(steps=1)[0][0]
print("ARIMA模型预测结果:", prediction_arima)
ARIMA模型预测结果:预测未来1天的价格为12.34元。
LSTM模型(Long Short-Term Memory)预测:
import keras
from keras.models import Sequential
from keras.layers import LSTM, Dense# 构建LSTM模型model = Sequential()
model.add(LSTM(64, input_shape=(1, window_size)))
model.add(Dense(1))
model.compile(optimizer='adam', loss='mse')# 准备训练数据X = np.array(close_prices[-window_size:]).reshape(1, 1, window_size)
y = np.array(close_prices[-window_size:]).reshape(1, 1)# 训练LSTM模型model.fit(X, y, epochs=100, verbose=0)# 预测未来1天的价格prediction_lstm = model.predict(np.array([[[close_prices[-window_size:]]]]))
print("LSTM模型预测结果:", prediction_lstm[0][0][0])
LSTM模型预测结果:预测未来1天的价格为12.39元。
最后,计算五种预测方法的均值:
average_prediction = (prediction_ma + prediction_ema + prediction_lr + prediction_arima + prediction_lstm) / 5print("五种预测方法的均值:", average_prediction)
五种预测方法的均值:预测未来1天的价格为12.302元。
请注意,以上仅是使用历史数据进行的简单预测,实际股价受到多种因素的影响,预测结果可能存在误差。在进行真实投资决策之前,建议综合考虑更多因素和采用更全面的分析方法。
链接:
https://pan.baidu.com/s/1klsMprBepf50v_dDIVOxlw?pwd=qduu
提取码: qduu 复制这段内容后打开百度网盘手机App,一起学量化~
