Область финансов, с момента ее возникновения, является важным объектом исследования в математике. Вместе с расширением влияния финансовой сферы активно развивались способы ее изучения. Появление все более эффективных и надежных способов коммуникации различным образом влияло на разработку методов изучения финансов. Растущие объемы передаваемой информации, с одной стороны, предоставляли больше данных для проверки экономических теорий, с другой стороны, препятствовали извлечению действительно полезных сведений.
Приход компьютерных технологий в данную область также не стал исключением. Биржи получили возможность проведения несравнимо большего количества операций по сравнению со временем, когда весь процесс полностью опирался на людей. Данное обстоятельство привело к необходимости применения компьютерных наук в финансовой аналитике, поскольку сами люди уже не были способны вручную проводить необходимые вычисления.
Одной из существующих методологий анализа финансовых данных является технический анализ [12]. Технический анализ используется для предсказания поведения некоторой численной величины на основе ее предыдущих значений. Примером таких величин могут служить цены акций на бирже. Значения величины в различные моменты времени образуют временной ряд. Временные ряды долго и активно изучаются как в математике, так и в ее приложениях [4], [15]. Для анализа временных рядов в данной методологии применяются технические индикаторы. Технический индикатор - это математическое вычисление, позволяющее извлечь из временного ряда скрытую информацию, которая в последствии используется техническими аналитиками для принятия решений.
Способы расчета технических индикаторов также менялись со временем. До появления компьютеров вычисления проводились вручную на миллиметровой бумаге. Когда машины научились рассчитывать математические формулы, серьезной проблемой был ввод и вывод данных, поскольку он осуществлялся с помощью бумажных носителей. В эпоху компьютеризации финансовые данные стали не только храниться, но также появляться изначально в цифровом виде. Начиная с того времени, популярность набирали табличные процессоры, такие как Microsoft Excel 1, где элементами математических формул являлись части столбцов таблицы.
Однако в последние годы более широкое распространение получил новый подход, состоящий в применении языков программирования для описания технических индикаторов. Языки программирования позволяют отделить алгоритм вычисления индикаторов от самих данных. Также они дают возможность техническим аналитикам описывать математические преобразования на понятном им языке без необходимости иметь углубленные знания в устройстве вычислительных машин и принципах их работы.
В связи с этим встает задача реализации инструментов, с помощью которых программы на данных языках могут исполнены, чтобы предоставить специалисту из области желаемые результаты. У технического аналитика имеется ряд требований к языку как к инструменту, которым он пользуется. Помимо субъективных требований, таких как краткость и читаемость кода на данном языке, важным аспектом являются потребляемые при исполнении ресурсы. Самыми значимыми ресурсами являются время исполнения и необходимая память, поэтому при реализации подобного инструмента необходимо уделять особенное внимание данным показателям.
В рамках данной работы были достигнуты следующие результаты.
1. Разработан интерфейс исполняемого технического индикатора.
2. Реализован оптимизирующий компилятор языка dxScript на платформе Java.
3. Реализована библиотека трансляции индикаторов на языке dxScript в исполняемую форму.
4. Проведена апробация решения в виде реализации консольного приложения для расчета технических индикаторов и интеграции с продуктом InfoRider компании Devexperts.
5. Произведены замеры эффективности исполняемых индикаторов, показавшие средний прирост производительности в 30-90% при использовании оптимизирующего компилятора, а также превосходство над существующими решениями.
6. Промежуточные результаты работы были представлены в докладе на конференции ’’Программная Инженерия и Организация Информации”.
[1] Aho Alfred V, Sethi Ravi, Ullman Jeffrey D. Compilers, Principles, Techniques. — Addison wesley, 1986.
[2] Compiling java just in time / Timothy Cramer, Richard Friedman, Terrence Miller et al. // Micro, IEEE.— 1997.— Vol. 17, no. 3.— P. 36-43.
[3] Devexperts. dxScript Specification.— Devexperts, 2016.— URL: docs.dxfeed.com/dxscript/dxScriptSpecification.pdf (online; accessed: 25.05.2016).
[4] Hamilton James D. Time Series Analysis. — Princeton University Press, 1994.
[5] Jones Neil D, Muchnick Steven S. Flow analysis and optimization of LISP-like structures // Proceedings of the 6th ACM SIGACT- SIGPLAN symposium on Principles of programming languages / ACM. — 1979. — P. 244-256.
[6] Practical experiences with Java compilation / Todd Smith, Suresh Srinivas, Philipp Tomsich, Jinpyo Park // High Performance Computing—HiPC 2000. — Springer, 2000. — P. 149-157.
[7] Robins D. Complex event processing // Second International Workshop on Education Technology and Computer Science. Wuhan. — 2010.
[8] Ruf Erik. Context-insensitive alias analysis reconsidered // ACM SIGPLAN Notices. — 1995. — Vol. 30, no. 6. — P. 13-22.
[9] Sharir Micha, Pnueli Amir. Two approaches to interprocedural data flow analysis. — New York University. Courant Institute of Mathematical Sciences. ComputerScience Department, 1978.
[10] Su Lixin, Lipasti Mikko H. Speculative optimization using hardware- monitored guarded regions for java virtual machines // Proceedings of the 3rd international conference on Virtual execution environments / ACM. — 2007. — P. 22-32.
[11] T. Lindholm F. Yellin G. Bracha A. Buckley. The Java Virtual Machine Specification.— Oracle America, Inc., 2015.— URL: docs. oracle.com/javase/specs/jvms/se8/jvms8.pdf (online; accessed: 25.05.2016).
[12] Taylor Mark P, Allen Helen. The use of technical analysis in the foreign exchange market // Journal of international Money and Finance.— 1992. —Vol. 11, no. 3. —P. 304-314.
[13] ThinkOrSwim. ThinkScript Learning Center.— 2016.— URL: goo. gl/RfJuPT (online; accessed: 25.05.2016).
[14] TradeStation Securities Inc. EasyLanguage Essentials. — TradeStation Securities, Inc., 2007.— URL: goo.gl/FSzFk2 (online; accessed: 25.05.2016).
[15] Wei William W.S. Time Series Analysis : Univariate and Multivariate Methods. — Pearson, 2005.
[16] A general compiler framework for speculative optimizations using data speculative code motion / Xiaoru Dai, Antonia Zhai, Wei- Chung Hsu, Pen-Chung Yew // Proceedings of the international symposium on Code generation and optimization / IEEE Computer Society. - 2005. - P. 280-290.