recovery (truth alpha=1.5, n=20000):
  k=  100  hill=1.5280  pwm=1.9038  pwm_invalid=0
  k=  400  hill=1.5033  pwm=1.6134  pwm_invalid=0
  k= 1600  hill=1.4974  pwm=1.5554  pwm_invalid=0
  GPD direct check: [(0.25, 0.249), (0.5, 0.494)]

T1 upper truncation (truth 1.5, k=200):
  f=0.00 hill=1.5107 (+0.7%) cov=0.963 | hill(k resc)=1.5107 (+0.7%) | pwm=1.7173 valid=1.000 xi_med=+0.596
  f=0.05 hill=4.9176 (+227.8%) cov=0.000 | hill(k resc)=5.0903 (+239.4%) | pwm=nan valid=0.000 xi_med=-0.520
  f=0.10 hill=7.9470 (+429.8%) cov=0.000 | hill(k resc)=8.6409 (+476.1%) | pwm=nan valid=0.000 xi_med=-0.697
  f=0.20 hill=13.9877 (+832.5%) cov=0.000 | hill(k resc)=17.0704 (+1038.0%) | pwm=nan valid=0.000 xi_med=-0.828
  f=0.30 hill=20.1039 (+1240.3%) cov=0.000 | hill(k resc)=27.8573 (+1757.2%) | pwm=nan valid=0.000 xi_med=-0.866
  f=0.40 hill=26.1557 (+1643.7%) cov=0.000 | hill(k resc)=42.4532 (+2730.2%) | pwm=nan valid=0.000 xi_med=-0.902
  f=0.50 hill=32.0803 (+2038.7%) cov=0.000 | hill(k resc)=62.0174 (+4034.5%) | pwm=nan valid=0.000 xi_med=-0.911
T1 lower truncation:
  f=0.00 hill=1.5090 (+0.6%) cov=0.953
  f=0.20 hill=1.5084 (+0.6%) cov=0.960
  f=0.50 hill=1.5057 (+0.4%) cov=0.938
  f=0.80 hill=1.5009 (+0.1%) cov=0.950

T2 dispersion:
  n=   100 k=  20 hill=1.587 sd=0.363 | pwm=4.580 sd=23.866 | sd_ratio=65.76
  n=   250 k=  25 hill=1.551 sd=0.289 | pwm=3.565 sd=6.193 | sd_ratio=21.46
  n=   500 k=  50 hill=1.536 sd=0.234 | pwm=2.272 sd=1.526 | sd_ratio=6.52
  n=  1000 k= 100 hill=1.514 sd=0.143 | pwm=1.896 sd=0.571 | sd_ratio=4.00
  n=  2500 k= 250 hill=1.511 sd=0.103 | pwm=1.702 sd=0.285 | sd_ratio=2.77
  n=  5000 k= 500 hill=1.505 sd=0.070 | pwm=1.640 sd=0.218 | sd_ratio=3.11
  n= 20000 k=2000 hill=1.501 sd=0.031 | pwm=1.556 sd=0.130 | sd_ratio=4.13

T6 four estimators (truth 1.5, n=4000):
  k= 100 hill: 1.519 (sd 0.158)  pickands: 1.690 (sd 0.743)  moment: 1.654 (sd 0.422)  pwm: 1.901 (sd 0.659)
  k= 200 hill: 1.507 (sd 0.109)  pickands: 1.551 (sd 0.383)  moment: 1.560 (sd 0.221)  pwm: 1.714 (sd 0.346)
  k= 400 hill: 1.505 (sd 0.075)  pickands: 1.557 (sd 0.281)  moment: 1.528 (sd 0.141)  pwm: 1.636 (sd 0.241)

T3 derived column (truth 2.0, k=150):
  beta=0.60 pred=3.333 hill=3.356 (+67.8%) implied_beta=0.596
  beta=0.75 pred=2.667 hill=2.673 (+33.7%) implied_beta=0.748
  beta=0.90 pred=2.222 hill=2.240 (+12.0%) implied_beta=0.893
  beta=1.00 pred=2.000 hill=2.020 (+1.0%) implied_beta=0.990
  beta=1.25 pred=1.600 hill=1.612 (-19.4%) implied_beta=1.241

T4 threshold rule:
  fixed   mean=1.517 sd=0.148 rmse=0.149
  rule    mean=1.519 sd=0.178 rmse=0.179
  oracle  mean=1.501 sd=0.034 rmse=0.034
  chosen k: p10=30 median=40 p90=65

T5 return levels:
  T=    1 true=100 median=98.93 bias=-1.1% rmse=32.5% p95/p05=2.68
  T=   10 true=464.2 median=429.4 bias=-7.5% rmse=56.1% p95/p05=4.31
  T=  100 true=2154 median=2121 bias=-1.5% rmse=127.3% p95/p05=8.71
  T= 1000 true=1e+04 median=9676 bias=-3.2% rmse=115.9% p95/p05=12.43
