You are encouraged to perform any tests necessary to instill confidence in your implementation, ensure that the code will run properly when submitted for grading and that it will produce the required results. No credit will be given for coding assignments that do not pass this pre-validation. Some indicators are built using other indicators and/or return multiple results vectors (e.g., MACD uses EMA and returns MACD and Signal vectors). As will be the case throughout the term, the grading team will work as quickly as possible to provide project feedback and grades. You are constrained by the portfolio size and order limits as specified above. 1 watching Forks. This project has two main components: First, you will research and identify five market indicators. However, it is OK to augment your written description with a, Do NOT copy/paste code parts here as a description, It is usually worthwhile to standardize the resulting values (see. Our Challenge After that, we will develop a theoretically optimal strategy and compare its performance metrics to those of a benchmark. Within each document, the headings correspond to the videos within that lesson. On OMSCentral, it has an average rating of 4.3 / 5 and an average difficulty of 2.5 / 5. This file should be considered the entry point to the project. You may not modify or copy code in util.py. that returns your Georgia Tech user ID as a string in each .py file. These commands issued are orders that let us trade the stock over the exchange. Why there is a difference in performance: Now that we have found that our rule based strategy was not very optimum, can we apply machine learning to learn optimal rules and achieve better results. After that, we will develop a theoretically optimal strategy and. and has a maximum of 10 pages. For grading, we will use our own unmodified version. Here is an example of how you might implement author(): Create testproject.py and implement the necessary calls (following each respective API) to. Create a Theoretically optimal strategy if we can see future stock prices. Any content beyond 10 pages will not be considered for a grade. The optimal strategy works by applying every possible buy/sell action to the current positions. egomaniac with low self esteem. You may find our lecture on time series processing, the. Your report should useJDF format and has a maximum of 10 pages. All work you submit should be your own. Be sure you are using the correct versions as stated on the. Transaction costs for TheoreticallyOptimalStrategy: Commission: $0.00, Impact: 0.00. Create a set of trades representing the best a strategy could possibly do during the in-sample period using JPM. As will be the case throughout the term, the grading team will work as quickly as possible to provide project feedback and grades. Do NOT copy/paste code parts here as a description. Use the time period January 1, 2008, to December 31, 2009. a)Equal to the autocorrelation of lag, An investor believes that investing in domestic and international stocks will give a difference in the mean rate of return. All charts must be included in the report, not submitted as separate files. This project has two main components: First, you will develop a theoretically optimal strategy (TOS), which represents the maximum amount your portfolio can theoretically return. Learn more about bidirectional Unicode characters. Theoretically optimal (up to 20 points potential deductions): Is the methodology described correct and convincing? This assignment is subject to change up until 3 weeks prior to the due date. Your report should useJDF format and has a maximum of 10 pages. Please refer to the. Just another site. optimal strategy logic Learn about this topic in these articles: game theory In game theory: Games of perfect information can deduce strategies that are optimal, which makes the outcome preordained (strictly determined). All work you submit should be your own. The report is to be submitted as p6_indicatorsTOS_report.pdf. For each indicator, you will write code that implements each indicator. Your report and code will be graded using a rubric design to mirror the questions above. You will submit the code for the project to Gradescope SUBMISSION. If you use an indicator in Project 6 that returns multiple results vectors, we recommend taking an additional step of determining how you might modify the indicator to return one results vector for use in Project 8. The main method in indicators.py should generate the charts that illustrate your indicators in the report. If a specific random seed is used, it must only be called once within a test_code() function in the testproject.py file and it must use your GT ID as the numeric value. Enter the email address you signed up with and we'll email you a reset link. Note that an indicator like MACD uses EMA as part of its computation. See the appropriate section for required statistics. Charts should also be generated by the code and saved to files. +1000 ( We have 1000 JPM stocks in portfolio), -1000 (We have short 1000 JPM stocks and attributed them in our portfolio). A tag already exists with the provided branch name. You must also create a README.txt file that has: The following technical requirements apply to this assignment. Here are my notes from when I took ML4T in OMSCS during Spring 2020. You signed in with another tab or window. This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. It is usually worthwhile to standardize the resulting values (see Standard Score). This framework assumes you have already set up the local environment and ML4T Software. View TheoreticallyOptimalStrategy.py from CS 4646 at Kenesaw Secondary School. Usually, I omit any introductory or summary videos. Some may find it useful to work on Part 2 of the assignment before beginning Part 1. Create a set of trades representing the best a strategy could possibly do during the in-sample period using JPM. (up to -100 points), Course Development Recommendations, Guidelines, and Rules. Momentum refers to the rate of change in the adjusted close price of the s. It can be calculated : Momentum[t] = (price[t] / price[t N])-1. Floor Coatings. The Project Technical Requirements are grouped into three sections: Always Allowed, Prohibited with Some Exceptions, and Always Prohibited. Ensure to cite any sources you reference and use quotes and in-line citations to mark any direct quotes. While such indicators are okay to use in Project 6, please keep in mind that Project 8 will require that each indicator return one results vector. 0 stars Watchers. Benchmark (see definition above) normalized to 1.0 at the start: Plot as a, Value of the theoretically optimal portfolio (normalized to 1.0 at the start): Plot as a, Cumulative return of the benchmark and portfolio, Stdev of daily returns of benchmark and portfolio, Mean of daily returns of benchmark and portfolio, sd: A DateTime object that represents the start date, ed: A DateTime object that represents the end date. . A position is cash value, the current amount of shares, and previous transactions. Our bets on a large window size was not correct and even though the price went up, the huge lag in reflection on SMA and Momentum, was not able to give correct BUY and SELL opportunity on time. (You may trade up to 2000 shares at a time as long as you maintain these holding requirements.). A tag already exists with the provided branch name. Note: The Theoretically Optimal Strategy does not use the indicators developed in the previous section. Charts should also be generated by the code and saved to files. That means that if a stock price is going up with a high momentum, we can use this as a signal for BUY opportunity as it can go up further in future. Include charts to support each of your answers. other technical indicators like Bollinger Bands and Golden/Death Crossovers. You will submit the code for the project. Provide a compelling description regarding why that indicator might work and how it could be used. Topics: Information processing, probabilistic analysis, portfolio construction, generation of market orders, KNN, random forests. Allowable positions are 1000 shares long, 1000 shares short, 0 shares. These should be incorporated into the body of the paper unless specifically required to be included in an appendix. Create a Theoretically optimal strategy if we can see future stock prices. All work you submit should be your own. Theoretically Optimal Strategy will give a baseline to gauge your later projects performance. It is not your 9 digit student number. Deductions will be applied for unmet implementation requirements or code that fails to run. Create a set of trades representing the best a strategy could possibly do during the in-sample period using JPM. It can be used as a proxy for the stocks, real worth. If you use an indicator in Project 6 that returns multiple results vectors, we recommend taking an additional step of determining how you might modify the indicator to return one results vector for use in Project 8. More specifically, the ML4T workflow starts with generating ideas for a well-defined investment universe, collecting relevant data, and extracting informative features. View TheoreticallyOptimalStrategy.py from ML 7646 at Georgia Institute Of Technology. You should create a directory for your code in ml4t/indicator_evaluation. . You will not be able to switch indicators in Project 8. . While Project 6 doesnt need to code the indicators this way, it is required for Project 8, 3.5 Part 3: Implement author() function (deduction if not implemented). ) Purpose: Athletes are trained to choose the pace which is perceived to be correct during a specific effort, such as the 1500-m speed skating competition. The, number of points to average before a specific point is sometimes referred to as, In our case, SMA aids in smoothing out price data over time by generating a, stream of averaged out prices, which aids in suppressing outliers from a dataset, and so lowering their overall influence. The indicators selected here cannot be replaced in Project 8. For our report, We are are using JPM stock, SMA is a type of moving mean which is created by taking the arithmetic mean, of a collection of data. This is a text file that describes each .py file and provides instructions describing how to run your code. df_trades: A single column data frame, indexed by date, whose values represent trades for each trading day (from the start date to the end date of a given period). D) A and C Click the card to flip Definition This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository. Since the above indicators are based on rolling window, we have taken 30 Days as the rolling window size. Deductions will be applied for unmet implementation requirements or code that fails to run. It is OK not to submit this file if you have subsumed its functionality into one of your other required code files. Here is an example of how you might implement author(): Implementing this method correctly does not provide any points, but there will be a penalty for not implementing it. You may not use an indicator in Project 8 unless it is explicitly identified in Project 6. You may not use any other method of reading data besides util.py. In your report (described below), a description of each indicator should enable someone to reproduce it just by reading the description. In Project-8, you will need to use the same indicators you will choose in this project. We hope Machine Learning will do better than your intuition, but who knows? We encourage spending time finding and research indicators, including examining how they might later be combined to form trading strategies. Your TOS should implement a function called testPolicy() as follows: Your testproject.py code should call testPolicy() as a function within TheoreticallyOptimalStrategy as follows: The df_trades result can be used with your market simulation code to generate the necessary statistics. You may also want to call your market simulation code to compute statistics. Remember me on this computer. Include charts to support each of your answers. The following exemptions to the Course Development Recommendations, Guidelines, and Rules apply to this project: Although the use of these or other resources is not required; some may find them useful in completing the project or in providing an in-depth discussion of the material. () (up to -100 if not), All charts must be created and saved using Python code. Create testproject.py and implement the necessary calls (following each respective API) to indicators.py and TheoreticallyOptimalStrategy.py, with the appropriate parameters to run everything needed for the report in a single Python call. Please address each of these points/questions in your report. We do not provide an explicit set timeline for returning grades, except that everything will be graded before the institute deadline (end of the term). If you need to use multiple values, consider creating a custom indicator (e.g., my_SMA(12,50), which internally uses SMA(12) and SMA(50) before returning a single results vector). In this case, MACD would need to be modified for Project 8 to return your own custom results vector that somehow combines the MACD and Signal vectors, or it would need to be modified to return only one of those vectors. Use the time period January 1, 2008, to December 31, 2009. In addition to testing on your local machine, you are encouraged to submit your files to Gradescope TESTING, where some basic pre-validation tests will be performed against the code. Please submit the following file to Canvas in PDF format only: Please submit the following files to Gradescope, We do not provide an explicit set timeline for returning grades, except that everything will be graded before the institute deadline (end of the term). The tweaked parameters did not work very well. Gradescope TESTING does not grade your assignment. Trading of a stock, in its simplistic form means we can either sell, buy or hold our stocks in portfolio. You are not allowed to import external data. Code implementing a TheoreticallyOptimalStrategy (details below). You are encouraged to submit your files to Gradescope TESTING, where some basic pre-validation tests will be performed against the code.