aboutsummaryrefslogtreecommitdiff
path: root/README.md
diff options
context:
space:
mode:
Diffstat (limited to 'README.md')
-rw-r--r--README.md43
1 files changed, 43 insertions, 0 deletions
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..42781a4
--- /dev/null
+++ b/README.md
@@ -0,0 +1,43 @@
+# Stock Picker
+
+This program was developed in Java by Michael Hunteman. It is inspired by
+algorithms and design patterns taught in SOFT260 at UNL. The application uses a
+dynamic programming approach to maximize the value determined by the user. The
+problem is framed as a directed acyclic graph, so the vertices can be explored
+in topological order. The vertices represent the money spent in USD up to that
+point in time. The root vertex is $0 and the last child visited is the total
+amount of money the user has to spend. With the dynamic programming approach,
+the algorithm breaks down the largest problem "maximize for value up to the
+buying power of the user" into smaller problems where the value is maximized for
+buying power less than what the user entered.
+
+## Setup
+
+- OpenJDK 18 or Java SE
+- Clone the repository
+
+## Usage
+
+Since the value is defined by the user, it should be kept consistent. The same
+financial metric should be used for every stock. Being user-defined allows for
+flexibilty as to which financial metric should be maximized. For example, the
+value could be Sales/Revenue, Cost of Goods Sold, or EBITDA.
+
+Run the stock picker:
+
+```sh
+java picker.java
+```
+
+### Keybindings
+
+- Press 1 to add a stock.
+- Press 2 to add buying power.
+- Press 3 to display stocks and buying power.
+- Press 4 to run.
+- Press 5 to exit.
+
+### Output
+
+The list of stocks picked by the algorithm for the max value are displayed
+first, followed by the buying power and total value accrued.