Population Stability Index (PSI) 稳定度指标

$$P S I = \sum \left( f _ { \text { development } } ^ { i } - f _ { \text {validation} } ^ { i } \right) * \ln \left( f _ { \text {development} } ^ { i } / f _ { \text {validation} } ^ { i } \right)$$

概念简单,表明某时刻某群体真实值和预测模型间的偏离度。

study: Bank case PSI, PSI

实际策略:PSI5 mean reversion

这个策略没有源码和思路,只是说是用的统计学教科书中关于股价的公式来做的,而且是用的PSI回归模型,我猜是用的PSI计算的一个指标,偏离多少必回归,然后开仓。

QQ 图

判定是否为正态分布 (scipy.stats.probplot)

理论参考

正态分布QQ图

普通QQ图

期望值的近似

在强化学习中需要知道某个action后导致的tao,这个tao就是后面一系列的动作(episode),需要知道出现某个action后产生tao的概率。然后把每种tao产生的reward乘以tao出现的概率,求期望值,其实就是加权平均嘛

这个很难计算的,这样就可以用如下方法来近似,直接用这个action玩N次游戏,把所有的reward加起来,除以N,即可近似出这个期望值

近似公式

正态分布 -> 均匀分布

一个正态分布的向量 通过对应正态分布的CDF进行转换就可以得到均匀分布 概率积分变换

library(MASS)
set.seed(100)

m <- 3
n <- 2000
# 产生mu=0 std=1的互有相关性的正态分布的3维向量
sigma <- matrix(c(1, 0.4, 0.2,
                  0.4, 1, -0.8,
                  0.2, -0.8, 1), 
                nrow=3)
z <- mvrnorm(n,mu=rep(0, m),Sigma=sigma,empirical=T)

library(psych)
cor(z,method='spearman')
pairs.panels(z)
# 上面显示的是正态分布

# pnorm 就是通过mean=0 std=1的正态分布的cdf来求z中每个变量的概率
u <- pnorm(z)
pairs.panels(u)
# 这里显示的就是均匀分布

价格变化分布

(取自于Advanced ML in Finance page 27)

固定时间内的价格变化

这个一直是高斯分布,其实最贴切的应该是 Generalized Pareto Distribution,最能匹配尖峰肥尾。

GPD对应的R包SpatialExtremes下载(如果2.0-7.1编译出错,安装7.0版本)

这里有一篇用R分析收益率的文章Exploring Heavy Tails Pareto and Generalized Pareto Distributions

packageurl <- "https://cloud.r-project.org/src/contrib/SpatialExtremes_2.0-7.tar.gz"
install.packages(packageurl, repos=NULL, type="source")

# 安装 Rsafd 包
install.packages("Rsafd", repos="http://R-Forge.R-project.org")

'''
通过这种方式安装的 Rsafd 是1.2版和 随书的1.0版不一样

1.0 的 fit.gpd 等于 1.2的gpd.tail
1.0 的 pgpd 等等 1.2的gpd.1p
'''

但是这个分布貌似只有一边,非对称,难道要把正收益和abs(负收益)分开匹配?

这个GPD只能分析尾巴,中间部分如果符合正态是不需要分析的。而且是只能分析右尾,分析左尾得把数据做abs

固定成交量(额)内的价格变化

高斯分布

copula

必须要细致的看一下 wikipedia

概念不必再描述,注意点:

  1. 前提是时间序列要是平稳连续的,如果有自相关,可能计算出来的copula是错误的
  2. 分类: gaussian, archimedean(阿基米德), student-t 。 其中 archimedean 含 有很多子类(Clayton, Gumbel, Grank)