Блог им. AlexeyPetrushin


import json
import numpy as np
from scipy.stats import norm
import matplotlib.pyplot as plt
# Loading 'diffs.json'
with open('diffs.json', 'r') as file:
diffs = json.load(file)
# Log-transform the data
log_diffs = np.log(diffs)
# Calculate the center as median, it fits better than the mean
center = np.median(log_diffs)
# Center the log diffs
log_diffs_centered = log_diffs - center
# Function to fit a real CDF
def fit_cdf_(data):
sorted_data = np.sort(data)
n = len(data)
cdf = [(x, (i + 1) / n) for i, x in enumerate(sorted_data)]
return cdf
# Fitting real CDF
real_cdf = fit_cdf_(log_diffs_centered)
# Fitting normal CDF, forcing mean to be 0
variance = np.mean(log_diffs_centered**2) # Variance
sigma = np.sqrt(variance) # Standard deviation
# Extract CDF x-values
cdf_xs = np.array([x for x, _ in real_cdf])
# Compute the normal CDF for these x-values
normal_cdf = [(x, norm.cdf(x, loc=0, scale=sigma)) for x in cdf_xs]
# Plot real CDF and normal CDF
real_cdf_ys = [p for _, p in real_cdf]
normal_cdf_ys = [p for _, p in normal_cdf]
plt.figure(figsize=(8, 6))
plt.plot(cdf_xs, real_cdf_ys, label='Real CDF', linestyle='-')
plt.plot(cdf_xs, normal_cdf_ys, label='Normal CDF', linestyle='--')
plt.xscale('log') # Logarithmic x-axis scale
plt.yscale('log') # Logarithmic x-axis scale
plt.ylim(0.5, 1) # y-axis domain
plt.xlim(0.001, 2) # x-axis domain
plt.xlabel('x (log scale)')
plt.ylabel('Cumulative Probability')
plt.title('Real vs Normal CDF')
plt.legend()
x_ticks = [0.001, 0.005, 0.01, 0.05, 0.1, 0.5, 1, 2]
plt.xticks(x_ticks, [str(label) for label in x_ticks])
y_ticks = [0.5, 0.6, 0.7, 0.8, 0.9, 1]
plt.yticks(y_ticks, [str(label) for label in y_ticks])
plt.grid(True)
plt.show()
UPD. кстати, в фильме предел риска — как раз описана ситуация, когда хвосты вдруг стали толстеть
Как вариант можно гистограмму (разбитие по корзинам) сделать, она сгладит.
По акции — это «средняя» акция, не самая спокойная, не самая волатильная, история несколько десятилетий, по идее, хвосты должны проявиться…
PS смотрю ваши ролики на ютубе, добротные
Вот эти как раз взяли это ведро черешни...
yandex.ru/video/preview/8007519925696137596
Самое интересное, что класс обобщенных гиперболических распределений — это класс распределений нормальных случайных величин со случайными средним и дисперсией и разными классами этих распределений. И в этом классе «лежит» почти все из распределений в справочниках по теорверу: и Хи-квадрат, и Лаплас и многое другое, кроме Парето.
rama.cont.perso.math.cnrs.fr/pdf/empirical.pdf
И еще нужно понимать как работает ЦПТ, желательно с нюансами, коих там много.
smart-lab.ru/blog/699507.php
Но это догадка конечно, сказать наверняка нельзя :)