Financial Data Analytics Tool Development
Budget: $30 – $250 USD
In these projects, we ask that you design:
A database backend (mongodb is likely the lowest cost of setup, but any sql will work fine as well)
A Data Loader (simple python script to load and update data in database from a data source)
An Analytics Module (python module that uses just the database, not the original data source, to perform computations given specified user inputs)
GUI front-end (drives the python module with user interactivity. Dash might be the easiest here)
You will be evaluated based on the following criteria: 1) Degree of completion, 2) Ease of Use, 3) Level of proficiency/quality demonstrated in the code, 4) Robustness of the system. Each of these criteria will carry an equal weight as we evaluate.
Note: It is important to note that you will not be evaluated based on the return characteristics of the strategy. It is far more important for us to see how you tackle the assignment and how the collective package is put together. The projects have enough ambiguity to allow for some creativity, but feel free to pose any questions and we will try to get back to you in a timely manner.
Deliverables:
Working prototype of the app (GUI, etc.) (Optional, but strongly preferred, – Hosted on Render, Heroku, etc.)
Core script/application file(s) in the language of your choice
Text file of the build requirements
Read Me file to highlight how to use/run the application (Optional)
Project 1: Equities Pair Trading
Goal: Build a tool that allows the user to test various equity pair-trading strategies
Steps:
Using Yahoo Finance, or another source of your choosing, download end of day data for the components of the S&P 500, Russell 2000, and Nasdaq 100 (as well as the performance of the indices) to a local database.
From the collected securities, identify the most highly correlated pairs and be sure to output relevant metrics to identify strength of the correlation, mean reversion speeds, etc.
The results should be dependent on a time period selected by the user
You should provide a few alternate methods to identify pairs relationships (e.g. OLS/Kalman)
Given the list of correlated pairs from the recent step, allow the user to backtest a trading strategy based on various entry/exit conditions, trade duration, or any other relevant parameters.
You should provide a means of evaluating the sensitivity to various parameters, through a tool such as a slider for easy comparisons.
While the user should have control of certain parameters for testing, create the ability to suggest a set of optimized parameters based on whatever conditions you believe best
Compute relevant risk and return metrics for the chosen strategy and output those statistics in a table (e.g Sharpe, Sortino, Max Drawdown, etc.)
Include a graph (or graphs) to illustrate both the selected pair’s correlation strength historically as well as performance of the chosen strategy
Project 2: Multi-Variate Index Regression
Goal: Build a tool that allows the user to see how much of the variance of a selected index can be explained by a basket of securities
Using Yahoo Finance, or another source of your choosing, download end of day data for the components of the S&P 500, Russell 2000, and Nasdaq 100 (as well as the index performance) to a local database.
Create a drop down window that allows the user to select between the three indices for further analysis
Given a list of up to 10 securities, selected/provided by the user, display a scatterplot regression where the index’s daily performance is explained by the basket of securities chosen. Rather than established weightings, allow the regression to automatically apply loadings to each component on the basket
Display core regression output and calculations
(Optional): By whatever means, create a tool that computes and identifies the set of 10 securities that best explains the index
The GUI front-end should be simple and straightforward to ensure ease of use. The working prototype of the app should be hosted on Heroku. Please build the GUI front-end using Dash. Please use the Yahoo Finance API as the data source. Ensure the database uses standard encryption for data security. Please include scatter plots and histograms for data representation. The GUI should provide a basic level of user experience with essential features and minimum design complexity.
A database backend (mongodb is likely the lowest cost of setup, but any sql will work fine as well)
A Data Loader (simple python script to load and update data in database from a data source)
An Analytics Module (python module that uses just the database, not the original data source, to perform computations given specified user inputs)
GUI front-end (drives the python module with user interactivity. Dash might be the easiest here)
You will be evaluated based on the following criteria: 1) Degree of completion, 2) Ease of Use, 3) Level of proficiency/quality demonstrated in the code, 4) Robustness of the system. Each of these criteria will carry an equal weight as we evaluate.
Note: It is important to note that you will not be evaluated based on the return characteristics of the strategy. It is far more important for us to see how you tackle the assignment and how the collective package is put together. The projects have enough ambiguity to allow for some creativity, but feel free to pose any questions and we will try to get back to you in a timely manner.
Deliverables:
Working prototype of the app (GUI, etc.) (Optional, but strongly preferred, – Hosted on Render, Heroku, etc.)
Core script/application file(s) in the language of your choice
Text file of the build requirements
Read Me file to highlight how to use/run the application (Optional)
Project 1: Equities Pair Trading
Goal: Build a tool that allows the user to test various equity pair-trading strategies
Steps:
Using Yahoo Finance, or another source of your choosing, download end of day data for the components of the S&P 500, Russell 2000, and Nasdaq 100 (as well as the performance of the indices) to a local database.
From the collected securities, identify the most highly correlated pairs and be sure to output relevant metrics to identify strength of the correlation, mean reversion speeds, etc.
The results should be dependent on a time period selected by the user
You should provide a few alternate methods to identify pairs relationships (e.g. OLS/Kalman)
Given the list of correlated pairs from the recent step, allow the user to backtest a trading strategy based on various entry/exit conditions, trade duration, or any other relevant parameters.
You should provide a means of evaluating the sensitivity to various parameters, through a tool such as a slider for easy comparisons.
While the user should have control of certain parameters for testing, create the ability to suggest a set of optimized parameters based on whatever conditions you believe best
Compute relevant risk and return metrics for the chosen strategy and output those statistics in a table (e.g Sharpe, Sortino, Max Drawdown, etc.)
Include a graph (or graphs) to illustrate both the selected pair’s correlation strength historically as well as performance of the chosen strategy
Project 2: Multi-Variate Index Regression
Goal: Build a tool that allows the user to see how much of the variance of a selected index can be explained by a basket of securities
Using Yahoo Finance, or another source of your choosing, download end of day data for the components of the S&P 500, Russell 2000, and Nasdaq 100 (as well as the index performance) to a local database.
Create a drop down window that allows the user to select between the three indices for further analysis
Given a list of up to 10 securities, selected/provided by the user, display a scatterplot regression where the index’s daily performance is explained by the basket of securities chosen. Rather than established weightings, allow the regression to automatically apply loadings to each component on the basket
Display core regression output and calculations
(Optional): By whatever means, create a tool that computes and identifies the set of 10 securities that best explains the index
The GUI front-end should be simple and straightforward to ensure ease of use. The working prototype of the app should be hosted on Heroku. Please build the GUI front-end using Dash. Please use the Yahoo Finance API as the data source. Ensure the database uses standard encryption for data security. Please include scatter plots and histograms for data representation. The GUI should provide a basic level of user experience with essential features and minimum design complexity.