AbstractTechnical market indicators are mathematical formulas that are extensively used by technical analysts to identify various properties of the financial markets (trend, volatility, momentum). Unfortunately, all existing means of describing technical market indicators have problems in one or more of the following areas: they are not rooted in the original streams of trades, they are not formally correct and unambiguous, they are not independent of the underlying platform, they are different from each other (not uniform). This research aims to solve these problems by providing a functional domain specific language (DSL) that allows to describe indicators from the high level concepts down to individual trades in a precise and unambiguous way. This is done by deconstructing indicators into constituting elements and then using that DSL to describe individual elements. Then, the elements are connected together with the help of an already existing DSL, Click configuration language, to create an indicator. Each indicator then, is a collection of elements, connected by the streams of data.
Eleven technical market indicators of varying topology and complexity are described using this approach. Then, an optimisation method is suggested that allows to transform the clear description of indicator elements into an efficient implementation. This optimisation method is based on works on incrementalization by Yanhong A. Liu. This method is applied to all eleven indicators and some conclusions are drawn.
Finally, three indicators out of eleven are prototyped using Click router framework and benchmarked in their clear (naive) form, optimised form, multithreaded form, in kernel and in user space, and with one element shared among them. The results of these benchmarks are presented and discussed.
|Date of Award
|Northern Ireland Department for the Economy & Northern Ireland Capital Markets Collaborative Network
|Ivor Spence (Supervisor) & Hans Vandierendonck (Supervisor)
- domain-specific languages
- technical market indicators
- in-kernel processing
- click router
- data-flow languages
- data streams
- high-frequency trading