Отличные вопросы! Давайте разберем каждую метрику подробно.
1. 📊 Волатильность (Volatility)
Что показывает:
Годичная стандартное отклонение логарифмических доходностей - меру риска и неопределенности.
Что рассказывает:
Низкая волатильность (1-3%): Спокойный рынок, предсказуемые движения
Высокая волатильность (10%+): Турбулентный рынок, высокий риск
Изменения волатильности: Свидетельствует о смене рыночных режимов
Диапазоны значений:
0-3%: Очень низкая (государственные облигации)
3-10%: Умеренная (голубые фишки)
10-30%: Высокая (акции роста, сырьевые товары)
30%+: Экстремальная (криптовалюты, кризис)
Экстремальные значения:
→ 0: Полное отсутствие движения (подозрительно для реальных данных)
→ 50%+: Хаотичные скачки (нереалистично для большинства активов)
2. 🔄 Автокорреляция (Autocorrelation)
Что показывает:
Корреляция между текущим и предыдущим значением (лаг 1). Меру "памяти" процесса.
Что рассказывает:
Положительная (> 0.1): Трендовое поведение, инерция
Отрицательная (< -0.1): Возвратное поведение, коррекции
Близкая к 0: Случайные блуждания, эффективный рынок
Диапазоны значений:
-1.0 до +1.0
Реальные рынки: обычно -0.2 до +0.2 для дневных данных
Экстремальные значения:
→ +1.0: Полная предсказуемость (нереалистично)
→ -1.0: Идеальное возвращение к среднему (редко)
0.8994 (канальная модель): Слишком предсказуемо!
3. 📈 Экспонента Хёрста (Hurst Exponent)
Что показывает:
Меру персистентности/антиперсистентности временного ряда.
Что рассказывает:
H > 0.5: Персистентность (тренды имеют память)
H = 0.5: Случайное блуждание (эффективный рынок)
H < 0.5: Антиперсистентность (возврат к среднему)
Диапазоны значений:
0.0 - 1.0
Реальные рынки: 0.5-0.8 (обычно 0.6-0.7)
Экстремальные значения:
→ 1.0: Детерминированный тренд (не случайность)
→ 0.0: Сильное возвращение к среднему
0.9598 (канальная модель): Почти детерминированный процесс!
4. 📏 Диапазон (Range)
Что показывает:
Минимальное и максимальное значение за весь период.
Что рассказывает:
Узкий диапазон: Консолидация, низкая волатильность
Широкий диапазон: Сильные тренды, высокая волатильность
Асимметрия: Преобладание бычьего/медвежьего тренда
Диапазоны значений:
Зависит от актива и периода. Для акций ±50% за год - нормально.
Экстремальные значения:
0.00 (минимум): Обнуление цены (банкротство)
→ бесконечность: Экспоненциальный рост (пузырь)
5. ❓ Почему не вошли Mean и StDev?
Mean (среднее):
// Не информативен для ценовых рядов!
double mean = prices.Average(); // Бессмысленно для нестационарного рядаПроблемы:
Цены нестационарны - среднее смещается со временем
Не показывает доходность
Может вводить в заблуждение
StDev (стандартное отклонение):
// Не подходит для цен!
double stdev = Math.Sqrt(prices.Variance()); // Не имеет экономического смыслаПочему волатильность лучше:
// Волатильность = stdev логарифмических доходностей
double returnsVolatility = CalculateReturnsVolatility(prices); // Имеет смысл!🔍 Анализ ваших результатов:
Базовая модель:
Волатильность: 7,547 % - Реалистично для акций
Автокорреляция: 0,0144 - Случайное блуждание ✓
Экспонента Хёрста: 0,6058 - Слабая персистентность ✓
Диапазон: 16,99 - 260,61 - Сильный рост (возможно чрезмерный)Модель с каналами:
Волатильность: 1,943 % - Слишком низкая
Автокорреляция: 0,8994 - СЛИШКОМ предсказуемо! ❌
Экспонента Хёрста: 0,9598 - Почти детерминировано ❌
Диапазон: 0,00 - 99,56 - Обнуление цены! ❌Продвинутая модель:
Волатильность: 0,593 % - Слишком низкая
Автокорреляция: 0,1594 - Слабая память ✓
Экспонента Хёрста: 0,6637 - Умеренная персистентность ✓
Диапазон: 83,12 - 100,82 - Стабильность ✓Модель с режимами:
Волатильность: 1,775 % - Низкая, но приемлема
Автокорреляция: -0,1775 - Возвратное поведение ✓
Экспонента Хёрста: 0,5290 - Близко к случайному блужданию ✓
Диапазон: 68,08 - 103,73 - Реалистичные колебания ✓🎯 Идеальные значения для реалистичных данных:
| Метрика | Идеальный диапазон | Комментарий |
|---|---|---|
| Волатильность | 1-5% (дневная) | Зависит от актива |
| Автокорреляция | -0.1 до +0.1 | Слабая память |
| Хёрст | 0.55-0.70 | Умеренная персистентность |
| Диапазон | ±30% за период | Реалистичные движения |
📊 Дополнительные полезные метрики:
public static void CalculateAdvancedMetrics(double[] prices)
{
// 1. Коэффициент Шарпа (доходность/риск)
double sharpeRatio = CalculateSharpeRatio(prices);
// 2. Асимметрия распределения доходностей
double skewness = CalculateSkewness(prices);
// 3. Эксцесс (толстые хвосты)
double kurtosis = CalculateKurtosis(prices);
// 4. Максимальная просадка
double maxDrawdown = CalculateMaxDrawdown(prices);
// 5. Кластеризация волатильности
double volClustering = CalculateVolatilityClustering(prices);
}Вывод: Ваша продвинутая модель показывает наиболее реалистичные характеристики, кроме слишком низкой волатильности! 🎯
Отличный вопрос! Давайте разберем математические основания для использования логарифмических доходностей.
1. Математические определения
Простые доходности (Simple Returns):
double simpleReturn = (price_t - price_{t-1}) / price_{t-1};Логарифмические доходности (Log Returns):
double logReturn = Math.Log(price_t / price_{t-1});2. Математические преимущества логарифмических доходностей
✅ Аддитивность во времени
// Логарифмические - аддитивны
double logReturn_weekly = logReturn_day1 + logReturn_day2 + logReturn_day3;
// Простые - НЕ аддитивны
double simpleReturn_weekly ≠ simpleReturn_day1 + simpleReturn_day2 + simpleReturn_day3;Пример:
День 1: +10%, День 2: -10%
Простые: (1.10 × 0.90) - 1 = -1% (не 0%!)
Логарифмические: ln(1.10) + ln(0.90) ≈ 0.0953 - 0.1054 = -0.0101 ≈ -1%
✅ Симметричность распределения
// Логарифмические доходности примерно нормально распределены
// Простые доходности имеют асимметричное распределениеМатематически:
Логдоходность:
ln(P_t/P_{t-1})∈ (-∞, +∞)Простая доходность:
(P_t - P_{t-1})/P_{t-1}∈ [-1, +∞)
✅ Мультипликативность становится аддитивностью
// Цена: P_t = P_0 × (1+r1) × (1+r2) × ... × (1+rn)
// Логарифмируем: ln(P_t) = ln(P_0) + ln(1+r1) + ln(1+r2) + ... + ln(1+rn)3. Сравнение на практике
public class ReturnsComparison
{
public static void CompareReturns(double[] prices)
{
var simpleReturns = new List<double>();
var logReturns = new List<double>();
for (int i = 1; i < prices.Length; i++)
{
double simple = (prices[i] - prices[i-1]) / prices[i-1];
double logRet = Math.Log(prices[i] / prices[i-1]);
simpleReturns.Add(simple);
logReturns.Add(logRet);
}
Console.WriteLine("Сравнение доходностей (%):");
Console.WriteLine($"Простые: среднее = {simpleReturns.Average()*100:F4}%, stdev = {CalculateStdDev(simpleReturns)*100:F4}%");
Console.WriteLine($"Логарифмические: среднее = {logReturns.Average()*100:F4}%, stdev = {CalculateStdDev(logReturns)*100:F4}%");
}
}4. Когда разница значительна?
public static void DemonstrateDifference()
{
// Маленькие изменения - разница незначительна
double smallPriceChange = 100 * 1.01; // +1%
double simpleSmall = (101 - 100) / 100; // 0.01
double logSmall = Math.Log(101 / 100); // 0.00995 ≈ 0.01
// Большие изменения - разница заметна
double bigPriceChange = 100 * 2.00; // +100%
double simpleBig = (200 - 100) / 100; // 1.00
double logBig = Math.Log(200 / 100); // 0.6931 ≠ 1.00!
Console.WriteLine($"Маленькое изменение: простые = {simpleSmall:F4}, логарифмические = {logSmall:F4}");
Console.WriteLine($"Большое изменение: простые = {simpleBig:F4}, логарифмические = {logBig:F4}");
}5. Теоретическое обоснование
Броуновское движение (геометрическое):
dS/S = μdt + σdWРешение:
S_t = S_0 × exp((μ - σ²/2)t + σW_t)Логарифмируем:
ln(S_t) = ln(S_0) + (μ - σ²/2)t + σW_tВолатильность как параметр модели:
// В модели Блэка-Шоулза волатильность определяется через логдоходности
double volatility = Math.Sqrt(varianceOfLogReturns);6. Эмпирическая проверка
public class EmpiricalProof
{
public static void TestNormality(double[] prices)
{
var simpleReturns = CalculateSimpleReturns(prices);
var logReturns = CalculateLogReturns(prices);
// Тест на нормальность
double simpleSkewness = CalculateSkewness(simpleReturns);
double logSkewness = CalculateSkewness(logReturns);
double simpleKurtosis = CalculateKurtosis(simpleReturns);
double logKurtosis = CalculateKurtosis(logReturns);
Console.WriteLine("Асимметрия (Skewness):");
Console.WriteLine($" Простые: {simpleSkewness:F4} (должно быть 0)");
Console.WriteLine($" Логарифмические: {logSkewness:F4} (ближе к 0)");
Console.WriteLine("Эксцесс (Kurtosis):");
Console.WriteLine($" Простые: {simpleKurtosis:F4}");
Console.WriteLine($" Логарифмические: {logKurtosis:F4} (ближе к 3)");
}
private static double CalculateSkewness(double[] values)
{
double mean = values.Average();
double stdDev = Math.Sqrt(values.Average(v => Math.Pow(v - mean, 2)));
return values.Average(v => Math.Pow((v - mean) / stdDev, 3));
}
}7. Практические последствия для волатильности
public class VolatilityComparison
{
public static (double simpleVol, double logVol) CalculateBothVolatilities(double[] prices)
{
// Волатильность из простых доходностей
var simpleReturns = new List<double>();
for (int i = 1; i < prices.Length; i++)
{
simpleReturns.Add((prices[i] - prices[i-1]) / prices[i-1]);
}
double simpleVol = Math.Sqrt(simpleReturns.Variance()) * Math.Sqrt(252);
// Волатильность из логарифмических доходностей
var logReturns = new List<double>();
for (int i = 1; i < prices.Length; i++)
{
logReturns.Add(Math.Log(prices[i] / prices[i-1]));
}
double logVol = Math.Sqrt(logReturns.Variance()) * Math.Sqrt(252);
return (simpleVol, logVol);
}
}📊 Результаты для разных сценариев:
| Сценарий | Простые доходности | Логарифмические доходности |
|---|---|---|
| Малые изменения (<5%) | ≈ Логарифмическим | ≈ Простым |
| Большие изменения (>20%) | Завышают волатильность | Более точны |
| Отрицательные цены | Проблемы с расчетом | Невозможны (логарифм) |
| Статистические свойства | Асимметричны | Более нормальны |
| Агрегация во времени | Сложная | Простая (суммирование) |
🎯 Вывод:
Логарифмические доходности используют потому что:
✅ Математически корректны для моделей типа геометрического броуновского движения
✅ Статистически предпочтительны - ближе к нормальному распределению
✅ Временная согласованность - легко агрегировать за разные периоды
✅ Теоретическое обоснование - основа современных финансовых моделей
Для маленьких изменений (1-2%) разница действительно незначительна, но для больших движений или статистического анализа логарифмические доходности принципиально важны! 📈
Комментариев нет:
Отправить комментарий