#
# Herleitung Expected Shortfall GPD
# a= 1-p, s=shape; scale= 1
#q=(a^-s-1)/s
#VaR + E(X-V|X>V)
#q + int (X-V)_+ dP/P(X>V) = q + int (V<t) 1-P(t) dt /a=
#    [t=((-loq u)^(-s)-1)/s=(-loq u)^(-s-1)/u]
#q+ int (V<t) 1-exp(-(1+st)^(-1/s)) dt/a =
#q+ int_a^1 (-loq (1-u))^(-s) du/a/s  =           [u=e^-v]
#q+ int_(1-a) (-loq u)^(-s-1) du/a =
#q+ int_-log(1-a) v^(-s-1) e^-v du/a =           [-logu =v]
#(a^-s-1)/s+ (1+s(a^-s-1)/s)^(-1/s+1)/(1-s)/a=
#(a^(-s)-1)/s+ a^(1-s)/(1-s)/a=
#= q + s (a^(-s)-1)/s/(1-s) + 1/(1-s)=
#= q + s q/(1-s) + 1/(1-s)=
#= q/(1-s) + 1/(1-s)
#
#=gamma(1-s)/(a*s)*pgamma(-log(a),1-s,lower=F)
#
#mit m=loc, b=scale: ES=gamma(1-s)/(a*s)*pgamma(-log(a),1-s,lower=F)*b+m
#
# Herleitung L2 Abl GEVD
##     scale component
##          von Nataliya: (kontrolliert: PR)
##         -1/beta-xi*(-1/xi-1)*(x[ind]-mu)/beta^2/(1+xi*(x[ind]-mu)/beta) -
##            (x[ind]-mu)*(1+xi*(x[ind]-mu)/beta)^(-1/xi-1)/beta^2
#              [z=(x[ind]-mu)/beta]
#      =   -1/beta-xi*(-1/xi-1)*z/beta/(1+xi*z) - z*(1+xi*z)^(-1/xi-1)/beta
#      =   -1/beta+ (xi+1)*z/beta/(1+xi*z) - z*(1+xi*z)^(-1/xi-1)/beta
#      =   (-1+ (xi+1)*z/(1+xi*z) - z*(1+xi*z)^(-1/xi-1))/beta
#      =   (-(1+xi*z)+ (xi+1)*z - z*(1+xi*z)^(-1/xi))/beta/(1+xi*z)
#      =    (-1-xi*z+ xi*z+z - z*(1+xi*z)^(-1/xi))/beta/(1+xi*z)
#      =   (-1+z - z*(1+xi*z)^(-1/xi))/beta/(1+xi*z)
#      =   (-1+z*(1-(1+xi*z)^(-1/xi)))/beta/(1+xi*z)
#          [zxi = (1+xi*z) ]
#      =   (z*(1-zxi^(-1/xi))-1)/beta/zxi
#
#
##     shape component
##          von Nataliya: (kontrolliert: PR)
#         log(1+xi*(x[ind]-mu)/beta)/xi^2+(-1/xi-1)*(x[ind]-mu)/beta/
#              (1+xi*(x[ind]-mu)/beta) - (1+xi*(x[ind]-mu)/beta)^(-1/xi)*
#              log(1+xi*(x[ind]-mu)/beta)/xi^2 + (1+xi*(x[ind]-mu)/
#                   beta)^(-1/xi-1)*(x[ind]-mu)/beta/xi
#              [z=(x[ind]-mu)/beta]
#         log(1+xi*z)/xi^2+(-1/xi-1)*z/(1+xi*z) - (1+xi*z)^(-1/xi)*
#              log(1+xi*z)/xi^2 + (1+xi*z)^(-1/xi-1)*z/xi
#              [zxi = (1+xi*z) ]
#         log(zxi)/xi^2+(-1/xi-1)*z/(zxi) - (zxi)^(-1/xi)*log(zxi)/xi^2 +
#                  (zxi)^(-1/xi-1)*z/xi
#         log(zxi)/xi^2-(1+xi)*z/(zxi)/xi - (zxi)^(-1/xi)*log(zxi)/xi^2 +
#                 zxi^(-1/xi-1)*z/xi
#         log(zxi)/xi^2 - (zxi)^(-1/xi)*log(zxi)/xi^2 -(1+xi)*z/(zxi)/xi +
#                zxi^(-1/xi-1)*z/xi
#         log(zxi)/xi^2 * ( 1 - (zxi)^(-1/xi))  +
#            ((zxi)^(-1/xi)-(1+xi))*z/zxi/xi
#         ( 1 - (zxi)^(-1/xi)) * ( log(zxi)/xi^2 - z/zxi/xi)  - z/zxi
#         [z/zxi=zu]
#         ( 1 - (zxi)^(-1/xi)) * (log(zxi)/xi - zu)/xi  - zu

## umtransformation auf Quantilsskala
#   y = exp(-(1+xi z)^(-1/xi)) <=> -log y = zxi^(-1/xi)
#       <=> (-log y)^(-xi) = zxi <=> z = ((-log y)^(-xi)-1)/xi
# => zu= z/zxi=((-log y)^(-xi)-1)/xi (-log y)^(xi)
#             =(1-(-log y)^(xi))/xi
#   1+xi z = zxi = (1-p)^(-xi), z = [(1-p)^(-xi)-1]/xi
##     scale component
#   (z*(1-zxi^(-1/xi))-1)/beta/zxi
#   = (((-log y)^(-xi)-1)/xi*(1-((-log y)^(-xi))^(-1/xi))-1)/beta/
#       ((-log y)^(-xi))
#   = (((-log y)^(-xi)-1)/xi*(1+log y)-1)/beta ((-log y)^(xi))
#   = ((((-log y)^(xi))(-log y)^(-xi)-((-log y)^(xi)))/xi*(1+log y)
#       -((-log y)^(xi)))/beta
#   = ((1-(-log y)^(xi))/xi*(1+log y)-(-log y)^(xi))/beta
#
##     shape component
#    ( 1 - (zxi)^(-1/xi)) * (log(zxi)/xi - zu)/xi  - zu
#  = ( 1 - ((-log y)^(-xi))^(-1/xi)) * (log((-log y)^(-xi))/xi -
#          (1-(-log y)^(xi))/xi)/xi  - (1-(-log y)^(xi))/xi
#  = ( 1 + log y) * (-(log(-log y)) - (1-(-log y)^(xi))/xi)/xi  -
#      (1-(-log y)^(xi))/xi
## umtransformation auf Expskala y=exp(-t), t=-log y
##     scale component
#   ((1-(-log y)^(xi))/xi*(1+log y)-(-log y)^(xi))/beta
#   = ((1-t^xi)/xi*(1-t)-t^(xi))/beta
#   = (1-t^xi-t+t^(xi+1)- xi t^xi)/beta/xi
#   = (1-(xi+1) t^xi-t+t^(xi+1))/beta/xi
#
##     shape component
#    ( 1 + log y) * (-(log(-log y)) - (1-(-log y)^(xi))/xi)/xi  -
#      (1-(-log y)^(xi))/xi
#  = ( 1 -t) * (-log(t) - (1-t^xi)/xi)/xi  - (1-t^xi)/xi
#  = ( 1 -t) * (- xi log(t) - (1-t^xi))/xi^2  - xi(1-t^xi)/xi^2
#  =  [xi(t-1) log(t) + (t-1)(1-t^xi)  - xi(1-t^xi)]/xi^2
#  =  [xi(t-1) log(t) + t-1-t^(xi+1)+t^xi - xi + xi t^xi)]/xi^2
#  =  [xi(t-1) log(t) + t-t^(xi+1)+(1+xi) t^xi - (1+xi))]/xi^2


### Integrale bei GEV - FI
## nach exp(-t) auf 0 .. Inf zu integrieren
## Lambda = [1-(xi+1)t^xi-t+t^(xi+1)]/(beta xi),
##          [(1+xi) (t^xi-1) +t -t^(xi+1) + xi (t-1) log(t)]/xi^2
## Lambda Lambda' zu integrieren;
## dazu int t^a exp(-t) = gamma(a+1),
##      int t^a log(t) exp(-t) = digamma(a+1)
##      int t^a log(t)^2 exp(-t) = trigamma(a+1)

#################
#I11  * beta^2 xi^2
#################
#  [1-(xi+1)t^xi-t+t^(xi+1)]^2
#= [1 + (xi+1)^2 t^(2xi) + t^2 + t^(2xi+2) -
#   -2 (xi+1)t^xi - 2t + 2t^(xi+1)
#   + 2(xi+1)t^(xi+1)-2(xi+1)t^(2xi+1)-2t^(xi+2)]
#
### nach Integration mit Dichte exp(-t) (Gamma!)
#
#= [1+(xi+1)^2 Gam(2xi+1)+Gam(3)+Gam(2xi+3)-
#   -2(xi+1)Gam(xi+1)-2Gam(2)+2Gam(xi+2)
#   +2(xi+1)Gam(xi+2)-2(xi+1)Gam(2xi+2)-2Gam(xi+3)]
#
#### ausnutzen Gam(a+1)= a Gam(a)
#
#= 1+2xi(xi+1)^2 Gam(2xi)+2+(2xi+2)(2xi+1)2xi Gam(2xi)-
# -2(xi+1)xi Gam(xi)-2+ 2(xi+1)xi Gam(xi)
# +2(xi+1)^2 xi Gam(xi)-2(xi+1)(1+2xi)2xi Gam(2xi)- 2*(xi+2)(xi+1)xi Gam(xi)
#
#### Terme sortieren
#
#= 1+[2xi(xi+1)^2] Gam(2xi)
# +[-2(xi+1)xi +2(xi+1)xi +2(xi+1)^2 xi - 2 (xi+2)(xi+1)xi]Gam(xi)
#
#### Terme zusammenfassen
#
#= 1+[2xi^3-4xi^2-2xi] Gam(2xi)- [2xi^2+2xi]Gam(xi)
#
#################
#I12 * beta xi^3
#################
#
#[1-(xi+1)t^xi-t+t^(xi+1)] [(1+xi) (t^xi-1) +t -t^(xi+1) + xi (t-1) log(t)]
# = 1 * [...] (=0 weil E Lambda = 0]
#   -(xi+1)^2 (t^(2xi)-t^xi) - (xi+1) t^(xi+1) + (xi+1) t^(2xi+1)
#       - xi(xi+1) (t^(xi+1)-t^xi) log(t)
#   -(xi+1)(t^(xi+1)-t)-t^2+t^(xi+2)-xi(t^2-t)log(t)
#   +(xi+1)(t^(2xi+1)-t^(xi+1)) +t^(2+xi)-t^(2xi+2)+xi(t^(2+xi)-t^(1+xi))log(t)
#
### nach Integration mit Dichte exp(-t) (Gamma bzw Gamma' (bei log) !)
#
#   -(xi+1)^2 (Gam(2xi+1)-Gam(xi+1)) - (xi+1) Gam(xi+2) + (xi+1) Gam(2xi+2)
#       - xi(xi+1) (Gam'(xi+2)-Gam'(xi+1))
#   -(xi+1)(Gam(xi+2)-Gam(2))-Gam(3)+Gam(xi+3)-xi(Gam'(3)-Gam'(2))
#   +(xi+1)(Gam(2xi+2)-Gam(xi+2))+Gam(3+xi)-Gam(2xi+3)+xi(Gam'(3+xi)-Gam'(2+xi))
#
#### ausnutzen Gam(a+1)= a Gam(a)
#              Gam'(a+1) = a Gam'(a) + Gam(a)
#
#   -(xi+1)^2 (2xi Gam(2xi)- xi Gam(xi)) - (xi+1)^2 xi Gam(xi)
#       + (xi+1)(1+2xi)2xi Gam(2xi)
#       - xi(xi+1) ((1+xi)xi Gam'(xi)+(1+xi)Gam(xi)+xi Gam(xi))
#       + xi(xi+1) (xi Gam'(xi)+ Gam(xi))
#   -(xi+1)((xi+1)xi Gam(xi)- 1)-2+(xi+2)(xi+1)xi Gam(xi)
#    -xi(2Gam'(1)+3-Gam'(1)-1)
#   +(xi+1)((2xi+1)2xi Gam(2xi)-(xi+1)xiGam(xi))+(2+xi)(1+xi)xi Gam(xi)
#   -(2xi+2)(2xi+1)2xi Gam(2xi)
#   +xi((2+xi)(1+xi)xi Gam'(xi)+(2+xi)(1+xi)Gam(xi)+(2+xi)xi Gam(xi)+
#       (1+xi)xiGam(xi)-(1+xi)xiGam'(xi)-(1+xi)Gam(xi)-xi Gam(xi))
#
#### ausmultiplizieren
#
#   -(xi+1)^2 2xi Gam(2xi) +(xi+1)^2  xi Gam(xi) - (xi+1)^2 xi Gam(xi)
#       + (xi+1)(1+2xi)2xi Gam(2xi)
#       - xi(xi+1)(1+xi)xi Gam'(xi)- xi(xi+1)(1+xi)Gam(xi)- xi(xi+1)xi Gam(xi)
#       + xi(xi+1) xi Gam'(xi)+ xi(xi+1) Gam(xi)
#   -(xi+1)(xi+1)xi Gam(xi) +(xi+1)-2+(xi+2)(xi+1)xi Gam(xi)
#    -xi 2 Gam'(1) -3xi +xiGam'(1) +xi
#   +(xi+1)(2xi+1)2xi Gam(2xi)-(xi+1)(xi+1)xiGam(xi)+(2+xi)(1+xi)xi Gam(xi)
#   -(2xi+2)(2xi+1)2xi Gam(2xi)
#   +xi(2+xi)(1+xi)xi Gam'(xi)+xi(2+xi)(1+xi)Gam(xi)+xi(2+xi)xi Gam(xi)+
#       (1+xi)xi^2Gam(xi)-(1+xi)xi^2Gam'(xi)-(1+xi)xiGam(xi)-xi^2 Gam(xi)
#
#### Terme sortieren
#
# Gam(2xi)[  -(xi+1)^2 2xi + (xi+1)(1+2xi)2xi +(xi+1)(2xi+1)2xi
#            -(2xi+2)(2xi+1)2xi ]
# Gam(xi)[+(xi+1)^2  xi - (xi+1)^2 xi - xi(xi+1)(1+xi)- xi(xi+1)xi + xi(xi+1)
#         -(xi+1)(xi+1)xi +(xi+2)(xi+1)xi -(xi+1)(xi+1)xi
#         +(2+xi)(1+xi)xi +xi(2+xi)(1+xi)+xi(2+xi)xi +(1+xi)xi^2-(1+xi)xi -xi^2]
# Gam'(xi)[- xi(xi+1)(1+xi)xi  + xi(xi+1) xi   +xi(2+xi)(1+xi)xi -(1+xi)xi^2
# Gam'(1)[ -xi 2  +xi]
#  -3xi+xi+(xi+1)-2
#
#### Terme zusammenfassen
#
#   Gam(2xi)[-2xi^3-4xi^2-2xi + 4xi^3 +6xi^2 +2xi - 4xi^3-6xi^2-2xi]
#  + Gam(xi)[- 2xi^3 - 3xi^2 - xi -xi^2 -2 xi^3 -4xi^2 -2xi + 3x^3+9xi^2+6xi +2xi^2+xi^3+xi^2+xi^3]
#  + Gam'(xi)[xi^2(xi+1)]
#  + Gam'(1)(-xi)
#  - (xi+1)
#
#   Gam(2xi)[-2xi^3-4xi^2-2xi] + Gam(xi)[ xi^3 +4 xi^2 + 3xi ]
#  + Gam'(xi)[xi^3+xi^2] + Gam'(1)(-xi) - (xi+1)
#
#################
#I22 * xi^4
#################
#
#[(1+xi) (t^xi-1) +t -t^(xi+1) + xi (t-1) log(t)]^2
#= [(1+xi)^2 (t^xi-1)^2 +t^2 +t^(2xi+2) + xi^2(t-1)^2 log(t)^2 +
#    2t (1+xi) (t^xi-1)  -2 (1+xi)t^(xi+1)(t^xi-1) +2(1+xi)xi(t-1)(t^xi-1)log
#   -2t^(xi+2) +2xi t(t-1)log -2xi t^(xi+1)(t-1)log]^2
#= [umordnen
#[(1+xi)^2 (t^xi-1)^2 +t^2 +t^(2xi+2) + 2t (1+xi) (t^xi-1)  -2 (1+xi)t^(xi+1)(t^xi-1) -2t^(xi+2)
#   + 2xi(t-1)((1+xi)(t^xi-1)+t -t^(xi+1))log + xi^2(t-1)^2 log(t)^2 ]^2
#= [ausmultiplizieren]
#[(1+xi)^2 (t^2xi-2t^xi+1) +t^2 +t^(2xi+2) + 2 (1+xi) (t^(xi+1)-t)  -2 (1+xi)(t^(2xi+1)-t^(xi+1)) -2t^(xi+2)
#   + 2xi((1+xi)(t^(xi+1)-t^xi-t+1)+t^2-t -t^(xi+2)+t^(xi+1))log
#   + xi^2(t^2-2t+1) log(t)^2
#
#[(1+xi)^2 t^(2xi)-2(1+xi)^2 t^xi + (1+xi)^2  +t^2 + t^(2xi+2) + 2 (1+xi)t^(xi+1)
#   -2(1+xi) t -2 (1+xi) t^(2xi+1) + 2 (1+xi)t^(xi+1) -2 t^(xi+2)]
#   + {2xi(1+xi)t^(xi+1)- 2xi (1+xi) t^xi - 2xi (1+xi) t+ 2xi (1+xi) +2xi t^2 -2xi t
#   -2xi t^(xi+2)}log + xi^2(t^2-2t+1) log(t)^2
#
### nach Integration mit Dichte exp(-t)
#  (Gamma bzw Gamma' bzw Gamma'' (bei log, log^2) !)
#
#[(1+xi)^2 Gam(2xi+1)-2(1+xi)^2 Gam(xi+1) + (1+xi)^2  +Gam(3) + Gam(2xi+3) + 2 (1+xi)Gam(xi+2)
#   -2(1+xi) Gam(2) -2 (1+xi) Gam(2xi+2) + 2 (1+xi)Gam(xi+2) -2 Gam(xi+3)]
#   + {2xi(1+xi)Gam'(xi+2)- 2xi (1+xi) Gam'(xi+1) - 2xi (1+xi) Gam'(2)+ 2xi (1+xi) Gam'(1)+2xi Gam'(3) -2xi Gam'(2)
#   -2xi Gam'(xi+3)+2xiGam'(xi)} + xi^2(Gam''(3)-2Gam''(2)+Gam''(1))
#
#### ausnutzen Gam(a+1)= a Gam(a)
#              Gam'(a+1) = a Gam'(a) + Gam(a)
#              Gam''(a+1) = a Gam'(a) + 2Gam'(a)
#
#[(1+xi)^2 2xi Gam(2xi)-2(1+xi)^2 xi Gam(xi) + (1+xi)^2 + 2 +
#  (2xi+2)(2xi+1)2xiGam(2xi) + 2 (1+xi)^2xiGam(xi)
#   -2(1+xi) -2 (1+xi)(1+2xi)2xi Gam(2xi) + 2 (1+xi)^2xi Gam(xi) -2(2+xi)(1+xi)xi Gam(xi)]
#   + {2xi^2(1+xi)^2 Gam'(xi)+2xi(1+xi)^2 Gam(xi)+2xi^2(1+xi)Gam(xi)-
#   -  2xi^2 (1+xi) Gam'(xi) -2xi (1+xi)Gam(xi) - 2xi (1+xi) [Gam'(1)+1]+
#   + 2xi (1+xi) Gam'(1)+2xi [2Gam'(1)+3] -2xi [Gam'(1)+1]
#   -2xi^2 (2+xi)(1+xi)Gam'(xi)-(2+xi)2xi(1+xi) Gam(xi)-2xi^2(xi+2)Gam(xi)-2(1+xi)xi^2 Gam(xi)
#   +2*xi^2(xi+1)Gam'(xi)+2xi(xi+1)Gam(xi)+2xi^2Gam(xi)}
#  + xi^2(2 Gam''(1)+4 Gam'(1)+2 Gam'(1)+2 - 2 Gam''(1)-4Gam'(1)+Gam''(1))
#
#### Terme sortieren
#
# Gam(2xi)[(1+xi)^2 2xi + (2xi+2)(2xi+1)2xi-2 (1+xi)(1+2xi)2xi]
#+Gam(xi)[-2(1+xi)^2 xi+ 2(1+xi)^2xi + 2(1+xi)^2xi +2xi(1+xi)^2-2(2+xi)(1+xi)xi
#           +2xi^2(1+xi)-2xi (1+xi) -(2+xi)2xi(1+xi) -2xi^2(xi+2)-
#           -2xi^2(1+xi)+2xi(xi+1)+2xi^2]
#+Gam'(xi)[2xi^2(1+xi)^2 -  2xi^2 (1+xi) -2xi^2 (2+xi)(1+xi) +2*xi^2(xi+1)]
#+Gam'(1) [- 2xi (1+xi) + 2xi (1+xi) + 4xi -2xi +4xi^2+2xi^2-4xi^2]
#+Gam''(1)[2 xi^2 - 2xi^2+xi^2]
#+ 1 + 2xi + xi^2 + 2 -2(1+xi) - 2xi (1+xi) +6xi  -2xi + 2 xi^2
#
#### Terme zusammenfassen
#
# Gam(2xi)(1+xi)^2 2xi- Gam(xi)2xi((1+xi)^2+1+xi)
# -Gam'(xi)2xi^2(1+xi)+Gam'(1)2xi(xi+1)+Gam''(1) xi^2 + (1+xi)^2
#
### insgesamt
#
#################
#I11  * beta^2 xi^2
#################
#
#2xi(xi+1)^2 Gam(2xi) -[2xi(xi+1)]Gam(xi) + 1
#
#################
#I12 * beta xi^3
#################
#
#  - Gam(2xi)2xi(xi+1)^2 + Gam(xi)(xi+1)xi (xi+3)
#  + Gam'(xi)xi^2(xi+1) + Gam'(1)(-xi) - (xi+1)
#
#################
#I22 * xi^4
#################
#
# Gam(2xi)(1+xi)^2 2xi- Gam(xi)2xi(1+xi)(2+xi)
# -Gam'(xi)2xi^2(1+xi)+Gam'(1)2xi(xi+1)+Gam''(1) xi^2 + (1+xi)^2
#
# function(xi,beta){
# G20 <- gamma(2*xi)
# G10 <- gamma(xi)
# G11 <- digamma(xi)*gamma(xi)
# G01 <- digamma(1)
# G02 <- trigamma(1)+digamma(1)^2
# x0 <- 2*xi*(xi+1)^2
#        I11 <- G20*x0-2*G10*xi*(xi+1)+1
#        I11 <- I11/beta^2/xi^2
#        I12 <- G20*(-x0)+ G10*(xi^3+4*xi^2+3*xi) - xi -1
#        I12 <- I12 + G11*(xi^3+xi^2) -G01*xi
#        I12 <- I12/beta/xi^3
#        I22 <- G20*x0 +(xi+1)^2 -G10*(x0+2*xi*(xi+1))
#        I22 <- I22 - G11*2*xi^2*(xi+1) + G01*2*xi*(1+xi)+xi^2 *G02
#        I22 <- I22 /xi^4
# mat <- PosSemDefSymmMatrix(matrix(c(I11,I12,I12,I22),2,2))
#
#}

