Обсуждение статьи "Статистические распределения в MQL5 - берем лучшее из R и делаем быстрее"

 

Опубликована статья Статистические распределения в MQL5 - берем лучшее из R и делаем быстрее:

Язык R — один из лучших инструментов статистической обработки и анализа данных. Благодаря доступности и поддержке множества статистических распределений он получил широкое распространение при анализе и обработке различных данных. Использование аппарата теории вероятностей и математической статистики позволяет по-новому взглянуть на данные финансовых рынков и открывает новые возможности для создания торговых стратегий. С появлением статистической библиотеки эти возможности теперь доступны в языке MQL5.

Рассмотрим функции для работы с основными статистическими распределениями, реализованными в языке R.

Это распределения Коши, Вейбулла, нормальное, логнормальное, логистическое, экспоненциальное, равномерное, гамма-распределение, центральное и нецентральные распределения Бета, хи-квадрат, F-распределения Фишера, t-распределения Стьюдента, а также дискретные биномиальное и отрицательное биномиальные распределения, геометрическое, гипергеометрическое и распределение Пуассона. Кроме того, есть функции расчета теоретических моментов распределений, которые позволяют оценить степень соответствия реального распределения модельному.

Мы включили в стандартную библиотеку MQL5 большое количество математических функций из R. Причем добились их более быстрой работы от 3 до 7 раз по сравнению с исходными вариантами в языке R. Заодно обнаружили ошибки реализации некоторых функций в R.

Гистограмма распределения случайных чисел, сгенерированных по нормальному распределению с параметрами mu=5 и sigma=1

Рис. 2. Гистограмма распределения случайных чисел, сгенерированных по нормальному распределению с параметрами mu=5 и sigma=1

Автор: MetaQuotes Software Corp.

 

Великолепный справочник, Спасибо!

 

Прошу мат. функциям, несмотря на то, что они подключаются через инклудник (писаны на MQL5), сделать в метаэдиторе подстветку своим цветом.

Сейчас в статье в исходниках этой подстветки нет, читать/воспринимать тяжеловато.

Ждем "Визуализация в MQL5 - берем лучшее из R".

 

труд заслуживающий уважения за объём, но

- Проверка стат гипотез не самый критичный по скорости компонент в продуктах на MQL

- Вопросы потери точности остаются открытыми (мат.библиотеки не зря крепнут долго-долго и ценятся как коньяк, по возрасту)

 
Респект и уважуха компании MQ!
 
Представляю, какие возможности для исследований откроются при объединении всей этой статистики и качественной графической визуализации.
 

когда полгода назад поднимался вопрос об интеграции R и MT https://www.mql5.com/ru/forum/73266/page10#comment_2283757, почему-то представлялось, что будет реализован именно полноценный обмен данными. а не отдельная библиотека для узкого круга задач.

и в чем собственного преимущество данной библиотеки перед существующей уже 4 года версией alglib https://www.mql5.com/ru/code/1146? и конкретно библиотекой

specialfunctions.mqh Классы функций распределения, интегралов, полиномов:
  1. CGammaFunc - Гамма-функция.
  2. CIncGammaF - неполная Гамма-функция.
  3. CBetaF - Бета-функция.
  4. CIncBetaF - неполная Бета-функция.
  5. CPsiF - пси-функция.
  6. CAiryF - функции Эйри.
  7. CBessel - функции Бесселя целого порядка.
  8. CJacobianElliptic - эллиптические функции Якоби.
  9. CDawson - интеграл Доусона.
  10. CTrigIntegrals - тригонометрические интегралы.
  11. CElliptic - эллиптические интегралы первого и второго рода.
  12. CExpIntegrals - экспоненциальные интегралы.
  13. CFresnel - интегралы Френеля.
  14. CHermite - полиномы Эрмита.
  15. CChebyshev - полиномы Чебышева.
  16. CLaguerre - полиномы Лагерра.
  17. CLegendre - полиномы Лежандра.
  18. CChiSquareDistr - хи-квадрат распределение.
  19. CBinomialDistr - биномиальное распределение.
  20. CNormalDistr - нормальное распределение.
  21. CPoissonDistr - распределение Пуассона.
  22. CStudenttDistr - t-распределение Стъюдента.
  23. CFDistr - F-распределение.
Исследования в мат. пакетах
Исследования в мат. пакетах
  • www.mql5.com
Форум трейдеров MQL5.community
 
Maxim Kuznetsov:

труд заслуживающий уважения за объём, но

- Проверка стат гипотез не самый критичный по скорости компонент в продуктах на MQL

- Вопросы потери точности остаются открытыми (мат.библиотеки не зря крепнут долго-долго и ценятся как коньяк, по возрасту)

Для проверки сложных расчетов есть юниттесты (скрипты в папке /Scripts/Unittests).

Для оценки точности расчета функций статистической библиотеки можно сравнить их со значениями, полученными в Wolfram Alpha.

В скрипте TestStatPrecision.mql5 производится расчет функций плотности вероятности (probability density function, PDF) и функций распределения (cumulative distribution function, CDF) для каждого из распределений библиотеки.

Полученные результаты сравниваются со значениями из Wolfram Alpha (представлены с точностью до 30 знака) и выводится количество совпадающих цифр после запятой.

Результаты работы скрипта выводятся во вкладке "Эксперты":
Testing precision for distribution:Beta
Distribution: Beta,  Wolfram PDF=1.250000000000000000000000000000,  PDF_calculated=1.249999999999998223643160599750,  deltaPDF=0.000000000000001776356839400250
Distribution: Beta,  Wolfram CDF=0.812500000000000000000000000000,  CDF_calculated=0.812500000000000222044604925031,  deltaCDF=-0.000000000000000222044604925031
Distribution: Beta PDF correct digits=14
Distribution: Beta CDF correct digits=15
   
Testing precision for distribution:Binomial
Distribution: Binomial,  Wolfram PDF=0.178863050569879750151258690494,  PDF_calculated=0.178863050569879888929136768638,  deltaPDF=-0.000000000000000138777878078145
Distribution: Binomial,  Wolfram CDF=0.416370829447481383134288535075,  CDF_calculated=0.416370829447481938245800847653,  deltaCDF=-0.000000000000000555111512312578
Distribution: Binomial PDF correct digits=15
Distribution: Binomial CDF correct digits=15
   
Testing precision for distribution:Cauchy
Distribution: Cauchy,  Wolfram PDF=0.078353202752933087671394218887,  PDF_calculated=0.078353202752933101549182026702,  deltaPDF=-0.000000000000000013877787807814
Distribution: Cauchy,  Wolfram CDF=0.165249340538567907055167438557,  CDF_calculated=0.165249340538567907055167438557,  deltaCDF=0.000000000000000000000000000000
Distribution: Cauchy PDF correct digits=16
Distribution: Cauchy CDF correct digits=30
   
Testing precision for distribution:ChiSquare
Distribution: ChiSquare,  Wolfram PDF=0.389400391535702439238519900755,  PDF_calculated=0.389400391535702439238519900755,  deltaPDF=0.000000000000000000000000000000
Distribution: ChiSquare,  Wolfram CDF=0.221199216928595121522960198490,  CDF_calculated=0.221199216928595121522960198490,  deltaCDF=0.000000000000000000000000000000
Distribution: ChiSquare PDF correct digits=30
Distribution: ChiSquare CDF correct digits=30
   
Testing precision for distribution:Exponential
Distribution: Exponential,  Wolfram PDF=0.441248451292297727555080655293,  PDF_calculated=0.441248451292297727555080655293,  deltaPDF=0.000000000000000000000000000000
Distribution: Exponential,  Wolfram CDF=0.117503097415404600400989920672,  CDF_calculated=0.117503097415404544889838689414,  deltaCDF=0.000000000000000055511151231258
Distribution: Exponential PDF correct digits=30
Distribution: Exponential CDF correct digits=16
   
Testing precision for distribution:F
Distribution: F,  Wolfram PDF=0.702331961591220799157042620209,  PDF_calculated=0.702331961591220910179345082724,  deltaPDF=-0.000000000000000111022302462516
Distribution: F,  Wolfram CDF=0.209876543209876531559388013193,  CDF_calculated=0.209876543209876587070539244451,  deltaCDF=-0.000000000000000055511151231258
Distribution: F PDF correct digits=15
Distribution: F CDF correct digits=16
   
Testing precision for distribution:Gamma
Distribution: Gamma,  Wolfram PDF=0.606530659712633424263117376540,  PDF_calculated=0.606530659712633424263117376540,  deltaPDF=0.000000000000000000000000000000
Distribution: Gamma,  Wolfram CDF=0.393469340287366575736882623460,  CDF_calculated=0.393469340287366575736882623460,  deltaCDF=0.000000000000000000000000000000
Distribution: Gamma PDF correct digits=30
Distribution: Gamma CDF correct digits=30
   
Testing precision for distribution:Geometric
Distribution: Geometric,  Wolfram PDF=0.050421000000000000540456568388,  PDF_calculated=0.050420999999999979723774856666,  deltaPDF=0.000000000000000020816681711722
Distribution: Geometric,  Wolfram CDF=0.882350999999999996425970039127,  CDF_calculated=0.882350999999999996425970039127,  deltaCDF=0.000000000000000000000000000000
Distribution: Geometric PDF correct digits=16
Distribution: Geometric CDF correct digits=30
   
Testing precision for distribution:Hypergeometric
Distribution: Hypergeometric,  Wolfram PDF=0.036675398904501069208272667765,  PDF_calculated=0.036675398904501069208272667765,  deltaPDF=0.000000000000000000000000000000
Distribution: Hypergeometric,  Wolfram CDF=0.996784948797332703840368139936,  CDF_calculated=0.996784948797332703840368139936,  deltaCDF=0.000000000000000000000000000000
Distribution: Hypergeometric PDF correct digits=30
Distribution: Hypergeometric CDF correct digits=30
   
Testing precision for distribution:Logistic
Distribution: Logistic,  Wolfram PDF=0.235003712201594494590750628049,  PDF_calculated=0.235003712201594494590750628049,  deltaPDF=0.000000000000000000000000000000
Distribution: Logistic,  Wolfram CDF=0.377540668798145462314863607389,  CDF_calculated=0.377540668798145406803712376131,  deltaCDF=0.000000000000000055511151231258
Distribution: Logistic PDF correct digits=30
Distribution: Logistic CDF correct digits=16
   
Testing precision for distribution:Lognormal
Distribution: Lognormal,  Wolfram PDF=0.000000247498055546993546655130,  PDF_calculated=0.000000247498055546993546655130,  deltaPDF=0.000000000000000000000000000000
Distribution: Lognormal,  Wolfram CDF=0.000000044817423501713188227213,  CDF_calculated=0.000000044817423501713168374878,  deltaCDF=0.000000000000000000000019852335
Distribution: Lognormal PDF correct digits=30
Distribution: Lognormal CDF correct digits=22
   
Testing precision for distribution:NegativeBinomial
Distribution: NegativeBinomial,  Wolfram PDF=0.046875000000000000000000000000,  PDF_calculated=0.046875000000000000000000000000,  deltaPDF=0.000000000000000000000000000000
Distribution: NegativeBinomial,  Wolfram CDF=0.937500000000000000000000000000,  CDF_calculated=0.937500000000000000000000000000,  deltaCDF=0.000000000000000000000000000000
Distribution: NegativeBinomial PDF correct digits=30
Distribution: NegativeBinomial CDF correct digits=30

Testing precision for distribution:NoncentralBeta
Distribution: NoncentralBeta,  Wolfram PDF=1.835315758284358889085297050769,  PDF_calculated=1.835315758284356890683852725488,  deltaPDF=0.000000000000001998401444325282
Distribution: NoncentralBeta,  Wolfram CDF=0.279804451879309967754494437031,  CDF_calculated=0.279804451879309523665284586968,  deltaCDF=0.000000000000000444089209850063
Distribution: NoncentralBeta PDF correct digits=14
Distribution: NoncentralBeta CDF correct digits=15
   
Testing precision for distribution:NoncentralChiSquare
Distribution: NoncentralChiSquare,  Wolfram PDF=0.266641691212769094132539748898,  PDF_calculated=0.266641691212769094132539748898,  deltaPDF=0.000000000000000000000000000000
Distribution: NoncentralChiSquare,  Wolfram CDF=0.142365913869366367272562001745,  CDF_calculated=0.142365913869366339516986386116,  deltaCDF=0.000000000000000027755575615629
Distribution: NoncentralChiSquare PDF correct digits=30
Distribution: NoncentralChiSquare CDF correct digits=16
   
Testing precision for distribution:NoncentralF
Distribution: NoncentralF,  Wolfram PDF=0.354683475208693754776589912581,  PDF_calculated=0.354683475208693865798892375096,  deltaPDF=-0.000000000000000111022302462516
Distribution: NoncentralF,  Wolfram CDF=0.090794346737526995805289686814,  CDF_calculated=0.090794346737526995805289686814,  deltaCDF=0.000000000000000000000000000000
Distribution: NoncentralF PDF correct digits=15
Distribution: NoncentralF CDF correct digits=30
   
Testing precision for distribution:Normal
Distribution: Normal,  Wolfram PDF=0.000013365598267338118769627896,  PDF_calculated=0.000013365598267338122157759685,  deltaPDF=-0.000000000000000000003388131789
Distribution: Normal,  Wolfram CDF=0.000015229981947977879768092203,  CDF_calculated=0.000015229981947977883156223992,  deltaCDF=-0.000000000000000000003388131789
Distribution: Normal PDF correct digits=20
Distribution: Normal CDF correct digits=20
   
Testing precision for distribution:Poisson
Distribution: Poisson,  Wolfram PDF=0.000000000000281323432020839554,  PDF_calculated=0.000000000000281323432020839908,  deltaPDF=-0.000000000000000000000000000353
Distribution: Poisson,  Wolfram CDF=0.999999999999981348253186297370,  CDF_calculated=0.999999999999981237230883834854,  deltaCDF=0.000000000000000111022302462516
Distribution: Poisson PDF correct digits=27
Distribution: Poisson CDF correct digits=15
   
Testing precision for distribution:Uniform
Distribution: Uniform,  Wolfram PDF=0.004000000000000000083266726847,  PDF_calculated=0.004000000000000000083266726847,  deltaPDF=0.000000000000000000000000000000
Distribution: Uniform,  Wolfram CDF=0.000500000000000000010408340856,  CDF_calculated=0.000500000000000000010408340856,  deltaCDF=0.000000000000000000000000000000
Distribution: Uniform PDF correct digits=30
Distribution: Uniform CDF correct digits=30
   
Testing precision for distribution:Weibull
Distribution: Weibull,  Wolfram PDF=0.019512185823866712297558478895,  PDF_calculated=0.019512185823866712297558478895,  deltaPDF=0.000000000000000000000000000000
Distribution: Weibull,  Wolfram CDF=0.000976085818024337737580653496,  CDF_calculated=0.000976085818024330365005880594,  deltaCDF=0.000000000000000007372574772901
Distribution: Weibull PDF correct digits=30
Distribution: Weibull CDF correct digits=17
   
Testing precision for distribution:T
Distribution: T,  Wolfram PDF=0.319904796224811438509760819215,  PDF_calculated=0.319904796224811494020912050473,  deltaPDF=-0.000000000000000055511151231258
Distribution: T,  Wolfram CDF=0.682299044355095474223560358951,  CDF_calculated=0.682299044355095474223560358951,  deltaCDF=0.000000000000000000000000000000
Distribution: T PDF correct digits=16
Distribution: T CDF correct digits=30
   
Testing precision for distribution:NoncentralT
Distribution: NoncentralT,  Wolfram PDF=0.000000000000040650786864501445,  PDF_calculated=0.000000000000040650786864501173,  deltaPDF=0.000000000000000000000000000271
Distribution: NoncentralT,  Wolfram CDF=0.000000000000004816980000000000,  CDF_calculated=0.000000000000004818163532209154,  deltaCDF=-0.000000000000000001183532209154
Distribution: NoncentralT PDF correct digits=27
Distribution: NoncentralT CDF correct digits=17   

Функции вычислены с хорошей точностью, что позволяет их использовать в статистических расчетах.

Wolfram|Alpha: Computational Knowledge Engine
  • www.wolframalpha.com
Wolfram|Alpha is more than a search engine. It gives you access to the world's facts and data and calculates answers across a range of topics, including science, nutrition, history, geography, engineering, mathematics, linguistics, sports, finance, music...
Файлы:
 
ivanivan_11:

и в чем собственного преимущество данной библиотеки перед существующей уже 4 года версией alglib https://www.mql5.com/ru/code/1146? и конкретно библиотекой

Она ближе к R по функциональности. Больше распределений (21) + генераторы случайных чисел. Есть функции расчета теоретических моментов распределений.
 
Quantum:

Для проверки сложных расчетов есть юниттесты (скрипты в папке /Scripts/Unittests).


Функции вычислены с хорошей точностью, что позволяет их использовать в статистических расчетах.

я имел "счастье" поддерживать своеобразный софт плотно связанный с математикой, поэтому ко всякой "новой" реализации известных методов отношусь со скепсисом..Юниттесты не панацея,  и ошибки будут (я гарантирую это) всплывать в самое неподходящее время.

PS/ если развивать диалог, то вследствие недостаточно восторженного отношения я очевидно выйду в бан :-)

 

Комментом выше показаны сравнения точности с эталоном, в качестве которого был выбран Wolfram Alpha с детализацией в 30 знаков после запятой.

Мы отлично понимаем, что столь сложные материи нужно максимально обкладывать тестами. Поэтому у нас есть специальный раздел /Scripts/Unittests, где собрано несколько обширных м долгих тестов функциональности математических библиотек.

Обновитесь на последнюю бету МТ5, которую мы выпустили вчера и погоняйте эти юниттесты самостоятельно, пожалуйста.

 
По моему, потенциал того, что уже давно имеется в языке MQL далеко не реализован трейдерами в стратегиях и советниках, однако, многие требуют все больше и больше. Почему, получая желаемые нововведения их постоянно критикуют? Кому и зачем такая точность (до 30 - го знака после запятой)? Странные прихоти... Статистика - вещь необходимая, хотя, мне кажется, что и без этого функционала можно было решить все свои задачи в  трейдинге с помощью MQL, просто имея желание трудиться. Однако, спасибо за дополнение разработчикам.
Причина обращения: