aboutsummaryrefslogtreecommitdiffstats
path: root/ui-console/src/main/java/market/guess
diff options
context:
space:
mode:
authorKostya <mail@sartin.in>2026-08-18 09:07:57 +0000
committerKostya <mail@sartin.in>2026-08-18 09:07:57 +0000
commit9dab2b3d624ecae08439532157fb8b9805fe9274 (patch)
treee0c6466b3264e377d5b9629e8fbbd6012adc1dd1 /ui-console/src/main/java/market/guess
parent06edeec70b59357657fab0da144e79a96671c749 (diff)
downloadguess-market-9dab2b3d624ecae08439532157fb8b9805fe9274.tar.gz
guess-market-9dab2b3d624ecae08439532157fb8b9805fe9274.tar.xz
guess-market-9dab2b3d624ecae08439532157fb8b9805fe9274.zip
Wire event ledger movements, show winning market by name, seed LMSR subsidy
- Event ledger now grows on purchase and shrinks on payout, mirroring the exact amounts moved on the buyer's ledger (it previously had a Ledger object that nothing ever wrote to). - Settlement and event-detail views now show the winning market's display name instead of its raw key; event details are viewable for settled events too (the picker previously excluded anything not ACTIVE). - LMSR events seed their ledger with a SUBSIDY entry for the market maker's worst-case loss (b * ln(outcomes)), reusing the existing cost() function rather than recomputing the formula.
Diffstat (limited to 'ui-console/src/main/java/market/guess')
-rw-r--r--ui-console/src/main/java/market/guess/ui/console/command/EventDetailsMenuCommand.java12
-rw-r--r--ui-console/src/main/java/market/guess/ui/console/command/SettleEventMenuCommand.java2
2 files changed, 9 insertions, 5 deletions
diff --git a/ui-console/src/main/java/market/guess/ui/console/command/EventDetailsMenuCommand.java b/ui-console/src/main/java/market/guess/ui/console/command/EventDetailsMenuCommand.java
index c9e7585..2ad7a53 100644
--- a/ui-console/src/main/java/market/guess/ui/console/command/EventDetailsMenuCommand.java
+++ b/ui-console/src/main/java/market/guess/ui/console/command/EventDetailsMenuCommand.java
@@ -34,14 +34,14 @@ public final class EventDetailsMenuCommand implements MenuCommand {
34 } 34 }
35 35
36 var events = result.getData(); 36 var events = result.getData();
37 var active = events.stream().filter(event -> event.status() == EventStatus.ACTIVE).toList(); 37 var viewable = events.stream().filter(event -> event.status() != EventStatus.DRAFT).toList();
38 38
39 if (active.isEmpty()) { 39 if (viewable.isEmpty()) {
40 io.println("There are currently no active events to trade on."); 40 io.println("There are currently no events to show.");
41 return; 41 return;
42 } 42 }
43 43
44 var pick = io.readSelect("Pick an event: ", active, event -> "%s".formatted(event.name())); 44 var pick = io.readSelect("Pick an event: ", viewable, event -> "%s".formatted(event.name()));
45 45
46 var result2 = catalog.getEvent(pick.key()); 46 var result2 = catalog.getEvent(pick.key());
47 var event = result2.getData(); 47 var event = result2.getData();
@@ -52,5 +52,9 @@ public final class EventDetailsMenuCommand implements MenuCommand {
52 52
53 io.printState(event.state()); 53 io.printState(event.state());
54 io.printHistory(event.history()); 54 io.printHistory(event.history());
55
56 if (!event.settledMarket().isBlank()) {
57 io.println("Winning market: %s".formatted(event.settledMarket()));
58 }
55 } 59 }
56} 60}
diff --git a/ui-console/src/main/java/market/guess/ui/console/command/SettleEventMenuCommand.java b/ui-console/src/main/java/market/guess/ui/console/command/SettleEventMenuCommand.java
index 3ab28a7..3457e08 100644
--- a/ui-console/src/main/java/market/guess/ui/console/command/SettleEventMenuCommand.java
+++ b/ui-console/src/main/java/market/guess/ui/console/command/SettleEventMenuCommand.java
@@ -61,7 +61,7 @@ public final class SettleEventMenuCommand implements MenuCommand {
61 var settleResult = context.settleEvent("Tester", event.summary().key(), winner.key()); 61 var settleResult = context.settleEvent("Tester", event.summary().key(), winner.key());
62 if (settleResult.isSuccess()) { 62 if (settleResult.isSuccess()) {
63 io.newLine(); 63 io.newLine();
64 io.println("Settled. Winning market: %s".formatted(settleResult.getData().winningOption())); 64 io.println("Settled. Winning market: %s".formatted(settleResult.getData().settledMarket()));
65 return; 65 return;
66 } 66 }
67 io.newLine(); 67 io.newLine();