Post on 20-Aug-2020
Norman’s lab - Financial Analytics Portal
Technologies● .NET, WCF, WebForms, WinForms● PowerShell, MSBuild, TeamCity● MSSQL Server● Windows Azure● Elastic Stack● RabbitMq
Strategy building - goals● Faster optimization than MetaTrader● Guided optimization - specific operators● Advanced fitness function definition, multiobjective optimization
Strategy building● Azure Worker role for each trading instrument with a number of optimization
tasks○ Optimization task - strategy family, money management parameters, EA parameters
● Multi-objective optimization - average across history data sources, drawdown● Position management pre-scanned on historical market data via strategy
tester and stored on Azure Storage. Therefore strategy simulation is faster and encoded solution contains only entry conditions
Strategy generation - flow
Strategy generation - algorithm
Multi-objective optimization - Pareto front as a result
Evolutionary algorithm NSGA-II - non-dominated sort, diversity
Mutation operator - modifies parameter, adds/removes block
Crossover operator - combines parts of two strategies
Graph pareto front, EA flow
Strategy generation - algorithm Implementation - C++ library
Strategy generation - results processing
Merge sets and deploy
Merge existing and new strategies, publish and configure monitoring
Diversity
● Rank new strategies according to diversity (type of strategy, parameters, trading history) and objectives (profit, maximum drawdown)
● Pick top X solutions
Assess existing
Assess existing strategies (already monitored) based on live performance (profit, maximum drawdown)
Strategy monitoring● MT4 instance communicates with Signal Provider windows service through
named pipes● Agent service sends trading history and trading events to cloud, rabbitMQ is
used as message broker
Strategy monitoring
Trading plan managementOption to revert changes, Replace strategy by its “relative”
MetaTrader 4 integration
Database improvementsHistorical data storage
- Partitioned Views https://docs.microsoft.com/en-us/sql/t-sql/statements/create-view-transact-sql?view=sql-server-2017#partitioned-views
- ColumnStore index https://docs.microsoft.com/en-us/sql/relational-databases/indexes/columnstore-indexes-overview?view=sql-server-2017