As we informed you in our previous posts, our team is not dealing only with state-of-art technologies and research of business strategies using hedge funds. Our portfolio is also complemented by common and relatively easy reporting and analytical tools. One of these tools is an intuitive stock screener that can be used for easy sorting of “the best” titles according to your selected preferences.
Another Stock Screener?
Most of the stock screeners are based on the fact that you have a certain universe (group) of assets that is refined through available filters until assets which match the selected criteria are found. User disadvantage of such workflow is the fact that you exactly need to know what you are looking for. However, in the beginning, the vast majority of “searching” users does not know precisely which methodology to use to search for their outcomes.
Our stock screener respects this and solves it by using the two-stage output classification.
How Does It Work?
In our screener, first of all, you intuitively choose priorities (technically speaking – filters), thanks to which the preferences are expressed (investment currency, risk aversion, investment horizon etc.). With these preferences, you define the method of the evaluation of the scanned asset set and, as a result of your choice, the evaluation model is set up, scaling individual assets to a chart.
Black Box I Have No Idea What Is Doing Inside?
On the output, you will be given a list of shares which a) meet your priorities and b) are sorted “from the best” according to the evaluation model which reflects your preferences. Individual criteria included in the evaluation model can be seen in the output table together with rated assets. Therefore, there is no chance of not knowing why and how the model reached the outcome. The evaluation model is not only transparent but also freely adjustable via indicator settings which form this complex evaluation model. This function can be appreciated especially by professionally competent analysts who want to use their own judgement to prefer or, on the contrary, to discriminate certain technical indicators.
If you are interested in more information about this application, stay tuned to our website or reach us directly straight away.
Intro
Once upon a time there was a term Artificial intelligence defined. It’s subcategories emerged soon after, some of them were inspired by nature. Be it reimplementation of evolution by natural selection proposed by Charles Darwin and Alfred Russel Wallace or deep learning inspired by the structures found in our own brains. Nowadays most of its implementations are tight to computational resources of universal processors, graphical cards, FPGA and ASIC circuits.
Genetic programming algorithm
We might have started from the easier target it seems. Genetic programming is a technique generating computer programs using evolution based algorithm.
As the start of a run the evolution algorithm is generating a population with set number of randomly generated individuals. Each individual is represented as a list of specific number of trees.
Each tree in the individual represents specific trading strategy behavior – be it asset selection, entry condition, entry filter, stop loss, exit condition, exit filter. Six trees in every individual in this specific case.
Each individual is run as a trading strategy. It might generate some trades then statistics are calculated. Various statistics can be used for the individual fitness. Right now we are using sharpe ratio multiplied by number of trades to push the evolution algorithm to prefer individuals with higher number of trades.
Based on fitness the evolution algorithm selects individuals for mating and mutating phase. Mated/mutated individuals are made part of the population and the individual’s fitness is calculated again. The best individual is kept in the hall of fame.
This iterative process goes on and after several generations we are expecting working trading strategy in the hall of fame.
Practicalities
“Slowness” of Python is negligent as most of the time is spend calculating an individual fitness. Our individuals are creating signals – genetic programming trees are made with numpy and talib optimized functions (C code), the trading algorithm is represented as fully optimized state machine in Cython. In another words from programming point of view it’s mixed vectorized and event based approach to trading system programming.
Possibilities
By changing of fitness function we can push the evolution algorithm to generate specific trading strategies. Be it specific risk profile, maximum profit or optimized portfolio. There is a possibility to optimize just part of already existing strategy – for an example we will be taking an existing strategy with defined entries and the genetic programing will be evolving strategy exits. Additional inputs are possible to use as well – sources of sentiment information, market and intermarket indices, deep learning networks with pre-trained alphas and well known market alpha signals, etc.
Interesting thing with genetic programming and big amount of alpha factors might be ability to select ones which really matter in the market without being tight to usual evaluation within specific number of days to the future.
Miloň Krejča
Research & Development team is currently focused on development of trading strategies applied to Crude Oil WTI, Natural Gas and Gold (futures contracts). These commodities are traded on centralized exchanges NYMEX and COMEX which are located in USA and each day trading activity exceeds billions of dollars. Very high liquidity and interest of other market subjects create a suitable environment for short-term momentum trading strategies. It is appropriate to include these in the research portfolio due to the necessary volatility and the structure of the financial leveraged instrument itself.
R&D team develops and optimizes trading strategies on rule-based concepts that has positive performance and can predict upcoming short-term price momentum with sufficient probability.
Implementation of new technologies can help R&D rigorously analyze the performance of trading strategies and related risks with highest exact level. Against the “old” technologies, the modern ones can implement real-time execution of trading orders based on all realized trades in the selected time period. Application of old technologies for trading strategy performance analysis often lead to unreliable statistical results and trading strategy with great historical performance often fail in the real market.
Development and optimization with modern technologies is the one of the main goals of the project. When trading strategies for Crude Oil WTI, Natural Gas and Gold are done they will be included in metastrategy-driven portfolio with smart asset allocation.
Mind-flow:
- Crude Oil WTI, Natural Gas, Gold futures contracts
- Implementation using modern frameworks and libraries: Zipline, Pyfolio, Pandas, MetaTrader, NumPy
- Short-term price momentum trading strategies development
- Our innovation against existing trading strategies is based on implementation of modern frameworks and analytical tools
- Our research aims to implement proposed trading strategies to the real market in a short period. All strategies will be included in a metastrategy-driven portfolio
Jan Budík
Our EQS software, based on the text analysis in services (e.g. “I am looking for a nursery in Brno which takes children as young as 1 year old”), will present the user with appropriate suppliers.
To correctly pair the data, the search algorithm requires a sufficient amount of data for learning. We have approached this problem by creating web crawlers owing to which we received needed data in the Czech language from external sources. However, predominantly, we are creating our own database of all activities located in the Czech Republic.
When creating it, we did not want to be limited only to the set of services (for example, the mentioned nursery or children’s group), nor occupations (teacher, nanny, …) but the aim was to create a complete database of all activities which people can possibly perform. For this reason, we merged mentioned areas and supplemented them with additional activities (for example, “babysitting”, or more detailed “night-time babysitting”).
The primary input for creating the database was the “National System of Occupations” which was further extended by categories from commercial enquiry servers. In this way, we created database areas, or more precisely, type clusters teacher/nanny/teacher assistant (=occupation) + nursery/children’s group (=service) + babysitting/children’s programme (=activity). We collectively refer to these categories as activities.
All activities were supplemented with keywords that are typical for them (children to nurseries, babysitting, …). Since our algorithm attaches the highest weight to keywords, these keywords are far more important than the names of the respective activities, therefore, the above-mentioned clusters are made by a set of words associated with the given activity/areas of activities.
When aggregating keywords, we used both automated and man-made databases and, last but not least, our own descriptions or suggestions of suppliers we have been calling to over the last 6 months to offer them a free presentation of their services on our test portal mojilidi.cz.
The primary database was afterwards published on the above-mentioned website and we started facing the real operation. The ones who were interested in the presentation of their services from any areas, entered a description of their activity to the search bar, for example, “We are running a children’s group in Brno which specialises in ABA therapy, speech therapy or exercising with kids.”
In response to the analysis of the input text, the users are presented with activities which are identified as most relevant (for example Children’s Group, Night Babysitting, Babysitting or wrongly Nutrition Therapist).
Users have an option either to apply to an already existing activity or to edit/add keywords and description regarding their services or add a completely new activity.
Adding a new activity is subject to confirmation by an administrator so that there are not double values such as taking care of a kid / taking care of kids. Considering the principles of the search algorithm, adding new similar activities would not be a problem. However, for tracking statistics or applying to an existing activity with the most relevant keywords, we are trying to approve only entirely new / not yet given activities.
By doing this, we have been complementing our own database over a year. Activities with a higher number of users have a database of the most interesting keywords and phrases which are recommended to users straight away at the registration.
We also track which (and how many) activities include a particular keyword, see keywords listed above. Furthermore, we track the number of competition in individual regions. When comparing results gained from telephone calls with users and also by an analysis of new customers acquired from advertising in particular areas (for example, we are finding out that car repair shops are not interested in registering whereas text proofreaders are highly interested), interesting statistics about individual market segments are being developed.
The picture is related to Project Architect activity.
The database is constantly growing and updating with the ever-growing number of users. Likewise, our search algorithm is getting better and is offering more relevant results. In the following article, we are going to present how we translated our database into English and German and what interesting features have been accomplished by this.
At the beginning of the new year our team has compiled a list of research activities for 2019 and through this post, we would like to introduce you to the most important milestones. The implementation of the Relative Value trading approach will conclude at the beginning of the new year. We will inform you about the results. After completing the task, the research team will take a short turn onto the field of gold markets. The result of this 14-day sprint should be a profitable trading system using price momentum of futures contracts.
After this sprint, the team will dip into a portfolio optimization process and metastrategy development. Optimization of the rule-based strategy portfolio is a major challenge for the team from technological and commercial point of view. We will have to merge alpha-generating rules with one-level-higher optimization issues (maximizing profit vs. risk minimization, with respect of the investment horizon vs. availability of data and technical feasibility of execution etc.). At the same time as the chapter is opened, the development of instruments for individual business approaches used by hedge funds and mutual funds will continue (Fixed Income, Global Macro, Long/Short).
In addition to these tasks, the team awaits other activities – at the beginning of April some members will participate in the Asset Management 4.0 conference organized by the Association for Communication Tools and the Internet of Things. As a part of the conference, team members will gradually comment on the themes of automation of decision-making and reporting processes, creation of mathematical-statistical models, optimization and risk management.
Another news that awaits us this year is our resolution to give you a report of our activities every week at least in one post. We will also inform you about how our business approaches are being conducted in real terms.
We will look forward to regular meetings and wish you all the best for the new year.
As we mentioned in the previous post, our team is working on a project to help you make decisions about buying different products and services. We try to help users create an objective view of the specific items they want to buy by analyzing published reviews of other users. Currently, we’ve downloaded enough reports and product articles in Czech and English language to analyze individual views. In the first phase it was necessary to adapt the obtained texts to the form suitable for analysis.
It was necessary to divide the documents into individual sentences, because users often present more ideas in one document and evaluate more criteria. The next step was to remove insignificant words that do not bring any or just little information value. For example, clutches, prepositions, web addresses, and so on. In this step, we also used our own POS analyzer, which assigns the words in sentence word types, and our own dataset with stop words. In particular, nouns, adjectives and verbs were interesting for us. Subsequently, we worded the words into their basic shapes, by specifying the roots of words.
We have transformed the edited documents into vector shape using tf-ifd and then split them into clusters with the same themes using k-means methods. We have managed to identify approximately diversified clusters with a high degree of internal integrity. Identified topics were related to the main parameters of the product segment surveyed.
The clusters created for the whole segment, based on expert articles, were then used to classify product reviews. From identified clusters for individual reviews, we chose those with the highest predictive value – and are presented as a suitable representative for a given set of reviews. The result of the analysis is shown in the example below.
Jan Přichystal









