价格的基础是价值,价格总是围绕着价值运动,因而价格的上下波动是有一定限度的,价格波动有一定的规律性。
以下,从统计和数学的角度来进行一定的分析,本分析基于数据,并未从基本面和宏观进行分析,交易过程中,还需要考虑宏观因素和突发因素。
1.简单数据处理算法
这个方法比较简单,其基本原理就是算数平均,包括简单移动平均、加权移动平均、项和项移动平均,对称的亨德森移动平均、PA(阶段平均)等方法。
本模型借用HLOC简单移动平均价和加权移动平均价的比值来判断预估波动速率以及回撤位置。以此较为敏捷的获取价格波动态势,作为基本的进场条件。
计算简单移动平均(SMA)和加权移动平均(WMA)
import pandas as pd
import numpy as np
# 假设我们有一个DataFrame 'df',其中包含了价格数据
# 数据列为:'Open', 'High', 'Low', 'Close'
# 计算简单移动平均(SMA)
df['SMA'] = df['Close'].rolling(window=20).mean()
# 计算加权移动平均(WMA)
weights = np.arange(1, 21) # 生成权重向量
df['WMA'] = df['Close'].rolling(window=20).apply(lambda prices: np.dot(prices, weights) / weights.sum(), raw=True)
2.时间过滤调整方法
每个商品都有自己的价格波动规律,特别是商品,季节性波动特别明显。例如冬季对煤炭的需求、生产季节对于原材料的采购需求等。这个,怎么来进行交易过滤呢?
把过去的时间按“年”分成N等份,然后按照“季度”划分好,注意这里的“年”和“季度”并非简单的时间点概念,而是周期概念。
# 假设'df'中包含一个日期列'Date',格式为YYYY-MM-DD
df['Date'] = pd.to_datetime(df['Date'])
df['Month'] = df['Date'].dt.month
# 筛选冬季月份的数据(例如12月到2月)
winter_data = df[df['Month'].isin([12, 1, 2])]
进而分析周期内商品价格波动的同比和环比规律。
3.回归分析法
采用计量经济模型,先做散点图,然后选择相应的价格序列,拟合曲线方程。
这里纠结的是要不要把阶段时间考虑到模型中,但是要考虑到阶段时间的话,就比较复杂了,这个后期再进行尝试,暂时没有这个精力去加入过多的变量。
import statsmodels.api as sm
# 假设我们关注收盘价对最高价的影响
X = df['High'] # 解释变量
y = df['Close'] # 因变量
X = sm.add_constant(X) # 添加常数项
model = sm.OLS(y, X).fit()
print(model.summary())
那么主要参考变量有价格、波幅、斜率等。
4.卡尔曼滤波算法
什么是滤波?简单的说法就是从混合在一起的诸多信号中提取出所需要的有用信号。
交易的过程中,影响因素很多,但是那些是关键因素,哪些是无关紧要的,这个需要进行区分。
from pykalman import KalmanFilter
# 假设我们仅用收盘价进行滤波
initial_state = df['Close'][0]
observation_covariance = 1.0 # 观测噪声
transition_covariance = 0.1 # 过程噪声
transition = 1.0 # 状态转移矩阵
kf = KalmanFilter(
initial_state_mean=initial_state,
initial_state_covariance=observation_covariance,
observation_covariance=observation_covariance,
transition_covariance=transition_covariance,
transition_matrices=transition
)
state_means, state_covariances = kf.filter(df['Close'].values)
df['Filtered'] = state_means
具体方法,这边文章介绍更为详细,可以研读:
http://www.bzarg.com/p/how-a-kalman-filter-works-in-pictures/
那么这样的策略效果怎么样呢?
以下是策略模型挂盘数据表现:(2021.8.27-2021.9.23)
不能说科学的分析方法就一定会获得收益,但是科学的分析方法一定让你的赢利和亏损有理有据。
实践是检验一个策略到底是否有效的唯一途径。