Backend of CS7319 Project - Architecture & Framework Demo

  • By Ashwin Rajesh
  • Last update: Apr 8, 2022
  • Comments: 0


CS7319 Software Architecture & Design Final Project, using batch-sequential and client/server (REST API) via Golang Backend, Ruby on Rails Frontend.

Inspired by Trellis - service targeting retail traders and enabling the implementation of bot executed trading strategies with an intuitive user interface.

This project, set out to explore the possibility of introducing a new product feature that allows users to view a 1 week backtest of their designed strategy before they execute the bot. As of now, only one benchmark (50 day MA) and one trading criterea (sell if higher/lower) is supported in this exploration. The only variable in this iteration of the project is refresh time. The trellis platform has a large number of custom fields and benchmarks for their bots and integrating each of these will take time.

Run Instructions for Windows:

Add polygon API key in line 51 src/main.go


Output @ localhost:8081

C:\> cd simpleBacktesterGo
C:\simpleBacktesterGo> cd src
C:\simpleBacktesterGo\src> go run .


Access @ localhost:3000

C:\> cd simpleBacktesterRuby
C:\simpleBacktesterRuby> rails server -p 3000


Golang Response Ruby Response

limitations: moving averages assume fixed difference (e.g. 50 day is really 75 day to accommodate for weekends & holidays, also the denominator may not represent actual days included) Bot time execution is simulated and may not be the same timeframes in reality Assumes 24/7 trading hours mon-fri Assumes no transaction/exchange/trading fees Indicator calculated at present time and applied to historicals, disregarding current indicator at historical moment Therefor ^ backtest only provides results based on current indicator value Can only do one buy & sell trigger Unknown how bot derives and how often bot calculates indicators, and what bot operating hours are

frontend limitations: It's all prefilled request links, not customizable form inputs to actually get specific user requests as it should be.