summaryrefslogtreecommitdiffstats
path: root/service/src/test/java/market/guess
diff options
context:
space:
mode:
Diffstat (limited to 'service/src/test/java/market/guess')
-rw-r--r--service/src/test/java/market/guess/service/mechanism/LmsrTradingMechanismTest.java37
-rw-r--r--service/src/test/java/market/guess/service/mechanism/OrderBookTradingMechanismTest.java51
2 files changed, 0 insertions, 88 deletions
diff --git a/service/src/test/java/market/guess/service/mechanism/LmsrTradingMechanismTest.java b/service/src/test/java/market/guess/service/mechanism/LmsrTradingMechanismTest.java
deleted file mode 100644
index f5c6af5..0000000
--- a/service/src/test/java/market/guess/service/mechanism/LmsrTradingMechanismTest.java
+++ /dev/null
@@ -1,37 +0,0 @@
1package market.guess.service.mechanism;
2
3import static org.junit.Assert.assertArrayEquals;
4import static org.junit.Assert.assertEquals;
5
6import java.math.BigDecimal;
7import org.junit.Test;
8
9public class LmsrTradingMechanismTest {
10
11 @Test
12 public void openingCostMatchesLmsrFormula() {
13 var mechanism = new LmsrTradingMechanism(100, 2);
14
15 assertEquals(new BigDecimal("69.31"), mechanism.openingCost());
16 }
17
18 @Test
19 public void pricesStartEven() {
20 var mechanism = new LmsrTradingMechanism(100, 2);
21
22 assertArrayEquals(
23 new BigDecimal[] {new BigDecimal("0.50"), new BigDecimal("0.50")}, mechanism.prices());
24 }
25
26 @Test
27 public void buyingSharesShiftsCostAndPrice() {
28 var mechanism = new LmsrTradingMechanism(100, 2);
29
30 var execution = mechanism.buy(0, 100);
31
32 assertEquals(100, execution.filledQuantity());
33 assertEquals(new BigDecimal("62.01"), execution.cost());
34 assertArrayEquals(
35 new BigDecimal[] {new BigDecimal("0.73"), new BigDecimal("0.27")}, mechanism.prices());
36 }
37}
diff --git a/service/src/test/java/market/guess/service/mechanism/OrderBookTradingMechanismTest.java b/service/src/test/java/market/guess/service/mechanism/OrderBookTradingMechanismTest.java
deleted file mode 100644
index b4b2da3..0000000
--- a/service/src/test/java/market/guess/service/mechanism/OrderBookTradingMechanismTest.java
+++ /dev/null
@@ -1,51 +0,0 @@
1package market.guess.service.mechanism;
2
3import static org.junit.Assert.assertEquals;
4
5import java.math.BigDecimal;
6import market.guess.service.mechanism.OrderBookTradingMechanism.Side;
7import org.junit.Test;
8
9public class OrderBookTradingMechanismTest {
10
11 @Test
12 public void limitBuyConsumesRestingAsksInFifoOrderAndLeavesRemainder() {
13 var mechanism = new OrderBookTradingMechanism(false, 100, 1, 2);
14 var price = new BigDecimal("0.60");
15
16 mechanism.placeOrder(0, Side.SELL, 20, price);
17 mechanism.placeOrder(0, Side.SELL, 40, price);
18
19 var execution = mechanism.placeOrder(0, Side.BUY, 50, price);
20
21 assertEquals(50, execution.filledQuantity());
22 assertEquals(new BigDecimal("30.00"), execution.cost());
23
24 var followUp = mechanism.buy(0, 100);
25 assertEquals(10, followUp.filledQuantity());
26 }
27
28 @Test
29 public void marketBuySweepsMultiplePriceLevelsAndPartiallyFillsWhenBookRunsOut() {
30 var mechanism = new OrderBookTradingMechanism(false, 100, 1, 2);
31 mechanism.placeOrder(0, Side.SELL, 10, new BigDecimal("0.50"));
32 mechanism.placeOrder(0, Side.SELL, 10, new BigDecimal("0.70"));
33
34 var execution = mechanism.buy(0, 15);
35
36 assertEquals(15, execution.filledQuantity());
37 assertEquals(new BigDecimal("8.50"), execution.cost());
38
39 var exhausted = mechanism.buy(0, 100);
40 assertEquals(5, exhausted.filledQuantity());
41 }
42
43 @Test
44 public void pricesReflectMidpointOfBestBidAndAsk() {
45 var mechanism = new OrderBookTradingMechanism(false, 100, 1, 2);
46 mechanism.placeOrder(0, Side.BUY, 10, new BigDecimal("0.40"));
47 mechanism.placeOrder(0, Side.SELL, 10, new BigDecimal("0.60"));
48
49 assertEquals(new BigDecimal("0.50"), mechanism.prices()[0]);
50 }
51}