diff options
-rw-r--r-- | src/main/java/edu/brown/cs/student/term/profit/ProfitCalculation.java | 33 | ||||
-rw-r--r-- | src/test/java/edu/brown/cs/student/ProfitCalculationTest.java | 10 | ||||
-rw-r--r-- | tatus | 52 |
3 files changed, 75 insertions, 20 deletions
diff --git a/src/main/java/edu/brown/cs/student/term/profit/ProfitCalculation.java b/src/main/java/edu/brown/cs/student/term/profit/ProfitCalculation.java index 0b86172..fe12612 100644 --- a/src/main/java/edu/brown/cs/student/term/profit/ProfitCalculation.java +++ b/src/main/java/edu/brown/cs/student/term/profit/ProfitCalculation.java @@ -228,11 +228,15 @@ public class ProfitCalculation { if (currentStockPrices.containsKey(ticker)) { return currentStockPrices.get(ticker); } else { - String PRICE_URL = BASE_URL + "/last/stocks/" + ticker; + String url = "https://data.alpaca.markets/v1/bars/" + + "day?" + + "symbols=" + ticker + + "&start=" + startTime + + "&end=" + endTime; HttpClient client = HttpClient.newHttpClient(); HttpRequest request = HttpRequest.newBuilder() - .uri(URI.create(PRICE_URL)).setHeader("APCA-API-KEY-ID", API_KEY) + .uri(URI.create(url)).setHeader("APCA-API-KEY-ID", API_KEY) .setHeader("APCA-API-SECRET-KEY", SECRET_KEY) .build(); @@ -240,18 +244,14 @@ public class ProfitCalculation { try { response = client.send(request, HttpResponse.BodyHandlers.ofString()); - } catch (IOException e) { - e.printStackTrace(); - } catch (InterruptedException e) { - e.printStackTrace(); + } catch (Exception e) { + System.out.println("ERROR: error getting price for profit calculation"); } - System.out.println(response.body()); - JSONObject object = new JSONObject(response.body()); + JSONArray object = new JSONObject(response.body()).getJSONArray(ticker); try { - double price = object.getJSONObject("last").getDouble("price"); - currentStockPrices.put(ticker, price); - return price; + double endPrice = object.getJSONObject(object.length() - 1).getDouble("c"); + return endPrice; } catch (JSONException e) { currentStockPrices.put(ticker, -1.0); return -1.0; @@ -265,20 +265,15 @@ public class ProfitCalculation { if (!tablesFilled) { organizeOrders(); getRealizedGains(); - getUnrealizedGains(); tablesFilled = true; } double realizedGains = 0; - double unrealizedGains = 0; for (double value : realizedGainsMap.values()) { realizedGains += value; } - for (double value : unrealizedGainsMap.values()) { - unrealizedGains += value; - } - return unrealizedGains + realizedGains; + return realizedGains; } public List<StockHolding> getHoldingsList() { @@ -317,8 +312,8 @@ public class ProfitCalculation { String url = "https://data.alpaca.markets/v1/bars/" + "day?" + "symbols=SPY" - + "&start=" + startTime - + "&end=" + endTime; + + "&start=" + startTime.toString() + "T09:30:00-04:00" + + "&end=" + endTime.toString() + "T09:30:00-04:00"; HttpClient client = HttpClient.newHttpClient(); HttpRequest request = HttpRequest.newBuilder() diff --git a/src/test/java/edu/brown/cs/student/ProfitCalculationTest.java b/src/test/java/edu/brown/cs/student/ProfitCalculationTest.java index d1fc9be..f435c7c 100644 --- a/src/test/java/edu/brown/cs/student/ProfitCalculationTest.java +++ b/src/test/java/edu/brown/cs/student/ProfitCalculationTest.java @@ -12,6 +12,7 @@ import org.junit.After; import org.junit.Before; import org.junit.Test; +import java.time.LocalDate; import java.util.List; import java.sql.Date; import java.time.Instant; @@ -55,7 +56,14 @@ public class ProfitCalculationTest { //price of GME at end time is 154.69 List<StockHolding> trade = profitCalculation.getHoldingsList(); //buy with no sell - assertEquals(3842.25, trade.get(0).getUnrealizedGain(),6); + assertEquals(trade.get(0).getUnrealizedGain(), 3842.25,.25); + assertEquals(trade.get(0).getRealizedGain(), 0, .01); + + + profitCalculation = new ProfitCalculation(DatabaseQuerier.getConn(), "Don", new Date(1618234200000l), + new Date(1618814264000l)); + + assertEquals(profitCalculation.compareToSP500(), .01464, .001); } @@ -0,0 +1,52 @@ +[1mdiff --git a/data/mock_tradeClarks.sqlite3 b/data/mock_tradeClarks.sqlite3[m +[1mindex 980c539..e816ee8 100644[m +Binary files a/data/mock_tradeClarks.sqlite3 and b/data/mock_tradeClarks.sqlite3 differ +[1mdiff --git a/src/main/java/edu/brown/cs/student/term/Main.java b/src/main/java/edu/brown/cs/student/term/Main.java[m +[1mindex 31bf7a3..c4a7814 100644[m +[1m--- a/src/main/java/edu/brown/cs/student/term/Main.java[m +[1m+++ b/src/main/java/edu/brown/cs/student/term/Main.java[m +[36m@@ -47,12 +47,21 @@[m [mpublic final class Main {[m + //do a gui type thing[m + //runSparkServer((int) options.valueOf("port"));[m + }[m +[31m- [m +[31m- HashMap<String, Command> commandHashMap = new HashMap<>();[m +[31m- commandHashMap.put("setup", new SetupCommand());[m +[31m- /** add commands to map here! */[m +[31m- REPL repl = new REPL(commandHashMap);[m +[31m- repl.runREPL();[m +[32m+[m +[32m+[m[32m ProfitCalculation person = new ProfitCalculation(null, "Vincent", new Date(1515629591000L), new Date(1715507898000L));[m +[32m+[m[32m try {[m +[32m+[m[32m person.setConnection("./data/mock_tradeClarks.sqlite3");[m +[32m+[m[32m } catch(Exception e) {[m +[32m+[m[32m e.printStackTrace();[m +[32m+[m[32m }[m +[32m+[m +[32m+[m[32m person.calculateGains();[m +[32m+[m +[32m+[m[32m// HashMap<String, Command> commandHashMap = new HashMap<>();[m +[32m+[m[32m// commandHashMap.put("setup", new SetupCommand());[m +[32m+[m[32m// /** add commands to map here! */[m +[32m+[m[32m// REPL repl = new REPL(commandHashMap);[m +[32m+[m[32m// repl.runREPL();[m + }[m + [m + [m +[1mdiff --git a/src/main/java/edu/brown/cs/student/term/ProfitCalculation.java b/src/main/java/edu/brown/cs/student/term/ProfitCalculation.java[m +[1mindex aa1bc09..94f87f7 100644[m +[1m--- a/src/main/java/edu/brown/cs/student/term/ProfitCalculation.java[m +[1m+++ b/src/main/java/edu/brown/cs/student/term/ProfitCalculation.java[m +[36m@@ -265,10 +265,10 @@[m [mpublic class ProfitCalculation {[m + double totalGains = unrealizedGains + realizedGains;[m + [m + System.out.println("Money In: " + moneyInput);[m +[32m+[m[32m System.out.println("SP500 on money In: " + (moneyInput * compareToSP500()));[m + System.out.println("Money Out: " + (moneyInput + totalGains));[m +[31m- System.out.println("NASDAQ on money In: " + (moneyInput * compareToSP500()));[m + System.out.println([m +[31m- "Total: " + totalGains + "| unrealized: " + unrealizedGains + " | realized: " +[m +[32m+[m[32m "Total gain: " + totalGains + "| unrealized: " + unrealizedGains + " | realized: " +[m + realizedGains);[m + }[m + [m |