做一款app需要网站吗,淄博网络科技有限公司,论坛营销的推广方法,小程序开发公司哪家#x1f3af;要点
#x1f3af;市场流动性策略代码应用#xff1a;#x1f3af;动量策略#xff1a;滚动窗口均值策略、简单移动平均线策略、指数加权移动平均线策略、相对强弱指数、移动平均线收敛散度交叉策略、三重指数平均策略、威廉姆斯 %R 策略 | #x1f3af;均值…要点
市场流动性策略代码应用动量策略滚动窗口均值策略、简单移动平均线策略、指数加权移动平均线策略、相对强弱指数、移动平均线收敛散度交叉策略、三重指数平均策略、威廉姆斯 %R 策略 | 均值回归策略布林线交易策略、配对交易策略 | 基于数学模型的策略通过每月交易最小化投资组合波动策略、每月交易的最大夏普比率策略 | 基于时间序列预测的策略具有外生回归量的季节性自回归综合移动平均线、先知策略 | 市场流动性差价数学评估。
个人现金流建模预期市场投资模式。
风险获利数学模型Python流动性做市风险获利 | 信息不对称买卖数学模型 | 市场机制分析Python牛市熊市横盘机制 | 缺口分析 | 头寸调整算法 | 资产评估Python和MATLAB及C资产价格看涨看跌对冲模型和微积分 | 金融数学代码C和Python计算金融数学方程算法模型
Python季节性和外部因素计算模型
时间序列数据中的季节性是指在一段时间内以固定间隔出现的重复且可预测的模式。这些模式可以以各种形式表现出来例如每日、每周、每月或每年的周期并且通常受天气、假期或经济季节等外部因素的影响。季节性的存在意味着数据在特定时间范围内重复出现系统性变化。了解季节性对于准确预测至关重要因为它有助于捕捉数据的周期性。分析师使用各种统计技术来检测和建模季节性从而使他们能够做出更明智的决策和预测。季节性分解、傅里叶分析和自相关函数是用于分析和解决时间序列数据中季节性的常用工具。通过确认和整合这些重复模式预测模型可以更好地捕捉数据的固有结构并提供更可靠的预测。
处理时间序列数据中的季节性涉及建模和整合定期观察到的重复模式。假设您有冰淇淋销售的每日数据并且您注意到一种季节性模式即夏季销售额趋于增加冬季销售额趋于减少。要处理这种季节性您可以按照以下步骤使用此模型
差分积分
季节性模式会使数据变得不平稳。如果需要可以应用差分使序列平稳。这可能涉及取一阶差分或应用季节性差分具体取决于数据的特征。季节性差分通常用于使时间序列平稳。差分参数表示为 d表示季节性差分。差分涉及从其滞后版本中减去时间序列。第 d 次差分可以表示为 Y t ′ Y t − Y t − d Y_t^{\prime}Y_t-Y_t-d Yt′Yt−Yt−d 这里 Y t ′ Y_t^{\prime} Yt′是差分序列是季节周期。
识别季节性因素
通过纳入季节性自回归 (SAR) 和季节性移动平均 (SMA) 项来建模季节性差异。这些项捕捉特定时间间隔季节内数据中的重复模式。为了识别时间序列的季节性成分我们可以使用各种分解技术。一种常见的方法是使用 LOESS (STL) 进行季节性趋势分解。这有助于识别趋势、季节性和残差成分。这些成分可以帮助识别定期重复出现的模式从而更好地理解模型。
计算移动平均线以捕捉趋势。我们可以使用简单的移动平均线或指数平滑等其他技术。在这里我们使用移动平均线。
移动平均值是通过取指定周期数本例中为 m内的值的平均值来计算的。 S M A ( t ) ( Y t − k 1 … Y t ) / k S M A(t)\left(Y_{t-k1}\ldotsY_t\right) / k SMA(t)(Yt−k1…Yt)/k 其中 Y t Y_t Yt 是时间 t 的值 k k k 是移动平均线的周期数。
它对于消除短期波动和突出数据的整体方向特别有用。从原始时间序列中减去移动平均线以获得去趋势序列。 去趋势序列 y t − 移动平均线 \text { 去趋势序列 }y_t-\text { 移动平均线 } 去趋势序列 yt− 移动平均线
其中n 是季节数。
n 的选择取决于数据季节性的周期性。例如如果您观察每年的季节性则每月数据的 n 将设置为 12。残差表示考虑了趋势和季节性成分后时间序列中的剩余变化。 残差 去趋势序列季节分量 \text { 残差 }\text { 去趋势序列季节分量 } 残差 去趋势序列季节分量 它有助于定义时间序列数据中无法解释的变化或噪声残差对于模型诊断和验证非常重要。一个好的预测模型应该具有随机的残差并且没有明显的模式。如果残差中存在模式则表明该模型可能需要进一步细化。
综上所述模型可表示为 Θ ( L ) p θ ( L s ) P Δ d Δ s D y t Φ ( L ) q ϕ ( L s ) Q Δ d Δ s D ϵ t ∑ i 1 n β i x t i \Theta(L)^p \theta\left(L^s\right)^P \Delta^d \Delta_s^D y_t\Phi(L)^q \phi\left(L^s\right)^Q \Delta^d \Delta_s^D \epsilon_t\sum_{i1}^n \beta_i x_t^i Θ(L)pθ(Ls)PΔdΔsDytΦ(L)qϕ(Ls)QΔdΔsDϵti1∑nβixti Θ ( L ) ν θ ( L s ) P Δ d Δ s D y t \Theta(L)^\nu \theta\left(L^s\right)^P \Delta^d \Delta_s^D y_t Θ(L)νθ(Ls)PΔdΔsDyt表示因变量表示为 y t y_{t} yt它可能是一个时间序列变量。 Θ ( L ) p θ ( L s ) P \Theta(L)^p \theta\left(L^s\right)^P Θ(L)pθ(Ls)P分别涉及自回归 (AR) 和季节性自回归分量。 Δ d Δ s D \Delta^d \Delta_s^D ΔdΔsD 表示差分通常用于实现时间序列数据的平稳性。 ϵ t \epsilon_t ϵt 表示模型的误差项。 ∑ i 1 n β i x t i \sum_{i1}^n \beta_i x_t^i ∑i1nβixti 包括 (n) 个外生变量 x t i x_t^i xti 与相应的系数 β i \beta_i βi。
Python实现模型
from datetime import datetime
import numpy as np
import pandas as pd
import matplotlib.pylab as plt
%matplotlib inline
from matplotlib.pylab import rcParamsfrom statsmodels.tsa.stattools import adfuller
from statsmodels.tsa.seasonal import seasonal_decompose
df pd.read_csv(https://raw.githubusercontent.com/AirP.csv)
将“月”列转换为日期时间格式并将其设置为 DataFrame 的索引。
df[Month] pd.to_datetime(df[Month], infer_datetime_formatTrue)
df df.set_index([Month])
差分
df[#Passengers_diff] df[#Passengers].diff(periods12)
df.info()
输出
class pandas.core.frame.DataFrame
DatetimeIndex: 144 entries, 1949-01-01 to 1960-12-01
Data columns (total 2 columns):# Column Non-Null Count Dtype
--- ------ -------------- ----- 0 #Passengers 144 non-null int64 1 #Passengers_diff 132 non-null float64
dtypes: float64(1), int64(1)
memory usage: 3.4 KB差分涉及从时间序列本身减去滞后版本。在季节差异的情况下您可以从上一年的同一季节中减去该值。
当您采用第一个季节差异时您会丢失前 12 个数据点因为没有前一年前 12 个月的数据。这会导致生成的差分序列中出现缺失值。
df[#Passengers_diff].fillna(methodbackfill, inplaceTrue)
class pandas.core.frame.DataFrame
DatetimeIndex: 144 entries, 1949-01-01 to 1960-12-01
Data columns (total 2 columns):# Column Non-Null Count Dtype
--- ------ -------------- ----- 0 #Passengers 144 non-null int64 1 #Passengers_diff 144 non-null float64
dtypes: float64(1), int64(1)
memory usage: 3.4 KB识别季节性因素
result seasonal_decompose(df[#Passengers], modelmultiplicative, period12)
trend result.trend.dropna()
seasonal result.seasonal.dropna()
residual result.resid.dropna()plt.figure(figsize(6,6))plt.subplot(4, 1, 1)
plt.plot(df[#Passengers], labelOriginal Series)
plt.legend()plt.subplot(4, 1, 2)
plt.plot(trend, labelTrend)
plt.legend()plt.subplot(4, 1, 3)
plt.plot(seasonal, labelSeasonal)
plt.legend()plt.subplot(4, 1, 4)
plt.plot(residual, labelResiduals)
plt.legend()plt.tight_layout()
plt.show()
外生变量
df[month_index] df.index.month
模型拟合
SARIMAX_model pm.auto_arima(df[[#Passengers]], exogenousdf[[month_index]],start_p1, start_q1,testadf,max_p3, max_q3, m12,start_P0, seasonalTrue,dNone, D1,traceFalse,error_actionignore,suppress_warningsTrue,stepwiseTrue)
模型预测函数
def sarimax_forecast(SARIMAX_model, periods24):# Forecastn_periods periodsforecast_df pd.DataFrame({month_index: pd.date_range(df.index[-1], periodsn_periods, freqMS).month},indexpd.date_range(df.index[-1] pd.DateOffset(months1), periodsn_periods, freqMS))fitted, confint SARIMAX_model.predict(n_periodsn_periods,return_conf_intTrue,exogenousforecast_df[[month_index]])index_of_fc pd.date_range(df.index[-1] pd.DateOffset(months1), periodsn_periods, freqMS)# make series for plotting purposefitted_series pd.Series(fitted, indexindex_of_fc)lower_series pd.Series(confint[:, 0], indexindex_of_fc)upper_series pd.Series(confint[:, 1], indexindex_of_fc)# Plotplt.figure(figsize(15, 7))plt.plot(df[#Passengers], color#1f76b4)plt.plot(fitted_series, colordarkgreen)plt.fill_between(lower_series.index,lower_series,upper_series,colork, alpha.15)plt.title(SARIMAX - Forecast of Airline Passengers)plt.show()
sarimax_forecast(SARIMAX_model, periods24)其中绘图阴影区域表示预测值周围的置信区间。
参阅一计算思维
参阅二亚图跨际