Python | C++ | MATLAB | Julia | R 市场流动性数学预期评估量

2024-06-09 20:28

本文主要是介绍Python | C++ | MATLAB | Julia | R 市场流动性数学预期评估量,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

🎯要点

🎯市场流动性策略代码应用:🎯动量策略:滚动窗口均值策略、简单移动平均线策略、指数加权移动平均线策略、相对强弱指数、移动平均线收敛散度交叉策略、三重指数平均策略、威廉姆斯 %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=YtYtd
这里, 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-k+1}+\ldots+Y_t\right) / k SMA(t)=(Ytk+1++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_{i=1}^n \beta_i x_t^i Θ(L)pθ(Ls)PΔdΔsDyt=Φ(L)qϕ(Ls)QΔdΔsDϵt+i=1nβ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_{i=1}^n \beta_i x_t^i i=1nβ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_format=True)
df = df.set_index(['Month'])

差分

df['#Passengers_diff'] = df['#Passengers'].diff(periods=12)
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(method='backfill', inplace=True)
<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'], model='multiplicative', period=12)
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'], label='Original Series')
plt.legend()plt.subplot(4, 1, 2)
plt.plot(trend, label='Trend')
plt.legend()plt.subplot(4, 1, 3)
plt.plot(seasonal, label='Seasonal')
plt.legend()plt.subplot(4, 1, 4)
plt.plot(residual, label='Residuals')
plt.legend()plt.tight_layout()
plt.show()

外生变量

df['month_index'] = df.index.month

模型拟合

SARIMAX_model = pm.auto_arima(df[['#Passengers']], exogenous=df[['month_index']],start_p=1, start_q=1,test='adf',max_p=3, max_q=3, m=12,start_P=0, seasonal=True,d=None, D=1,trace=False,error_action='ignore',suppress_warnings=True,stepwise=True)

模型预测函数

def sarimax_forecast(SARIMAX_model, periods=24):# Forecastn_periods = periodsforecast_df = pd.DataFrame({"month_index": pd.date_range(df.index[-1], periods=n_periods, freq='MS').month},index=pd.date_range(df.index[-1] + pd.DateOffset(months=1), periods=n_periods, freq='MS'))fitted, confint = SARIMAX_model.predict(n_periods=n_periods,return_conf_int=True,exogenous=forecast_df[['month_index']])index_of_fc = pd.date_range(df.index[-1] + pd.DateOffset(months=1), periods=n_periods, freq='MS')# make series for plotting purposefitted_series = pd.Series(fitted, index=index_of_fc)lower_series = pd.Series(confint[:, 0], index=index_of_fc)upper_series = pd.Series(confint[:, 1], index=index_of_fc)# Plotplt.figure(figsize=(15, 7))plt.plot(df["#Passengers"], color='#1f76b4')plt.plot(fitted_series, color='darkgreen')plt.fill_between(lower_series.index,lower_series,upper_series,color='k', alpha=.15)plt.title("SARIMAX - Forecast of Airline Passengers")plt.show()
sarimax_forecast(SARIMAX_model, periods=24)

其中,绘图阴影区域表示预测值周围的置信区间。

👉参阅一:计算思维

👉参阅二:亚图跨际

这篇关于Python | C++ | MATLAB | Julia | R 市场流动性数学预期评估量的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1046214

相关文章

使用Python绘制蛇年春节祝福艺术图

《使用Python绘制蛇年春节祝福艺术图》:本文主要介绍如何使用Python的Matplotlib库绘制一幅富有创意的“蛇年有福”艺术图,这幅图结合了数字,蛇形,花朵等装饰,需要的可以参考下... 目录1. 绘图的基本概念2. 准备工作3. 实现代码解析3.1 设置绘图画布3.2 绘制数字“2025”3.3

python使用watchdog实现文件资源监控

《python使用watchdog实现文件资源监控》watchdog支持跨平台文件资源监控,可以检测指定文件夹下文件及文件夹变动,下面我们来看看Python如何使用watchdog实现文件资源监控吧... python文件监控库watchdogs简介随着Python在各种应用领域中的广泛使用,其生态环境也

Python中构建终端应用界面利器Blessed模块的使用

《Python中构建终端应用界面利器Blessed模块的使用》Blessed库作为一个轻量级且功能强大的解决方案,开始在开发者中赢得口碑,今天,我们就一起来探索一下它是如何让终端UI开发变得轻松而高... 目录一、安装与配置:简单、快速、无障碍二、基本功能:从彩色文本到动态交互1. 显示基本内容2. 创建链

深入理解C++ 空类大小

《深入理解C++空类大小》本文主要介绍了C++空类大小,规定空类大小为1字节,主要是为了保证对象的唯一性和可区分性,满足数组元素地址连续的要求,下面就来了解一下... 目录1. 保证对象的唯一性和可区分性2. 满足数组元素地址连续的要求3. 与C++的对象模型和内存管理机制相适配查看类对象内存在C++中,规

Java调用Python代码的几种方法小结

《Java调用Python代码的几种方法小结》Python语言有丰富的系统管理、数据处理、统计类软件包,因此从java应用中调用Python代码的需求很常见、实用,本文介绍几种方法从java调用Pyt... 目录引言Java core使用ProcessBuilder使用Java脚本引擎总结引言python

python 字典d[k]中key不存在的解决方案

《python字典d[k]中key不存在的解决方案》本文主要介绍了在Python中处理字典键不存在时获取默认值的两种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,... 目录defaultdict:处理找不到的键的一个选择特殊方法__missing__有时候为了方便起见,

使用Python绘制可爱的招财猫

《使用Python绘制可爱的招财猫》招财猫,也被称为“幸运猫”,是一种象征财富和好运的吉祥物,经常出现在亚洲文化的商店、餐厅和家庭中,今天,我将带你用Python和matplotlib库从零开始绘制一... 目录1. 为什么选择用 python 绘制?2. 绘图的基本概念3. 实现代码解析3.1 设置绘图画

Python pyinstaller实现图形化打包工具

《Pythonpyinstaller实现图形化打包工具》:本文主要介绍一个使用PythonPYQT5制作的关于pyinstaller打包工具,代替传统的cmd黑窗口模式打包页面,实现更快捷方便的... 目录1.简介2.运行效果3.相关源码1.简介一个使用python PYQT5制作的关于pyinstall

使用Python实现大文件切片上传及断点续传的方法

《使用Python实现大文件切片上传及断点续传的方法》本文介绍了使用Python实现大文件切片上传及断点续传的方法,包括功能模块划分(获取上传文件接口状态、临时文件夹状态信息、切片上传、切片合并)、整... 目录概要整体架构流程技术细节获取上传文件状态接口获取临时文件夹状态信息接口切片上传功能文件合并功能小

python实现自动登录12306自动抢票功能

《python实现自动登录12306自动抢票功能》随着互联网技术的发展,越来越多的人选择通过网络平台购票,特别是在中国,12306作为官方火车票预订平台,承担了巨大的访问量,对于热门线路或者节假日出行... 目录一、遇到的问题?二、改进三、进阶–展望总结一、遇到的问题?1.url-正确的表头:就是首先ur