? def mID := > def rain := mID("Rain Tomorrow", [false, true]) > def sprinkler := mID("Sprinkler On", [false, true]) > def weather := mID("Weather", ["clear", "cloudy", "rain", "snow"]) > def mis := > def iss := mis([rain, sprinkler, weather]) # value: # value: Issue("Rain Tomorrow"[false, true]) # value: Issue("Sprinkler On"[false, true]) # value: Issue("Weather"["clear", "cloudy", "rain", "snow"]) # value: # value: ? def mmm := > def mm := mmm(iss, 100) > def janet := mm.makeParticipant(1000) # value: # value: # value: ? janet.addAssumption(rain, false, true) > janet.addAssumption(weather, "clear", false) > janet.addAssumption(weather, "rain", false) > janet.dropAssumption(weather, "rain") ? janet.assumptions().liveOutcomesForIssue(0) ? janet.printAssumptions(stdout) Rain Tomorrow: false Sprinkler On: unknown Weather: ["clear", "cloudy", "rain", "snow"] possible outcomes: cloudy rain snow ? janet.trade(sprinkler, true, 0.4) ? janet.assumptions().issueIsDetermined(sprinkler) ? janet.assumptions().validateIssue(sprinkler) ? janet.assumptions().liveOutcomesForIssue(1) ? def none := mm.issues().newAssumptions() ? janet.showDependentAssetValues(stdout, sprinkler, none) Issue("Sprinkler On"[false, true]) outcome max assets ave assets min assets false 1026.3034 1011.0107 1000.0000 true 1000.0000 989.5590 967.8071 ? def SprinklerOn := none.withAssumption(sprinkler, true, true) ? janet.showDependentAssetValues(stdout, sprinkler, janet.assumptions()) Issue("Sprinkler On"[false, true]) outcome max assets ave assets min assets false 1026.3034 1026.3034 1026.3034 true 967.8071 967.8071 967.8071 ? def a := janet.assumptions().withAssumption(sprinkler, false, true) # value: Rain Tomorrow: false # Sprinkler On: false # Weather: ["clear", "cloudy", "rain", "snow"] # possible outcomes: cloudy rain snow # ? janet.showDependentAssetValues(stdout, sprinkler) Issue("Sprinkler On"[false, true]) outcome max assets ave assets min assets false 1026.3034 1026.3034 1026.3034 true 967.8071 967.8071 967.8071 ? def newA := janet.assumptions().withAssumption(weather, "cloudy", true) # value: Rain Tomorrow: false # Sprinkler On: unknown # Weather: cloudy ? janet.showDependentAssetValues(stdout, sprinkler, newA) Issue("Sprinkler On"[false, true]) outcome max assets ave assets min assets false 1026.3034 1026.3034 1026.3034 true 967.8071 967.8071 967.8071 ? def notSprinkler := newA.withAssumption(sprinkler, false, true) # value: Rain Tomorrow: false # Sprinkler On: false # Weather: cloudy ? janet.showDependentAssetValues(stdout, sprinkler, newA) Issue("Sprinkler On"[false, true]) outcome max assets ave assets min assets false 1026.3034 1026.3034 1026.3034 true 967.8071 967.8071 967.8071 ? janet.showDependentAssetValues(stdout, rain, none) Issue("Rain Tomorrow"[false, true]) outcome max assets ave assets min assets false 1026.3034 1002.1787 967.8071 true 1000.0000 999.9999 1000.0000 ? janet.showDependentAssetValues(stdout, weather, none) Issue("Weather"["clear", "cloudy", "rain", "snow"]) outcome max assets ave assets min assets clear 1000.0000 1000.0000 1000.0000 cloudy 1026.3034 1001.4524 967.8071 rain 1026.3034 1001.4524 967.8071 snow 1026.3034 1001.4524 967.8071 ? janet.showDependentAssetValues(stdout, sprinkler, none) Issue("Sprinkler On"[false, true]) outcome max assets ave assets min assets false 1026.3034 1011.0107 1000.0000 true 1000.0000 989.5590 967.8071 ? janet.showDependentAssetValues(stdout, weather) Issue("Weather"["clear", "cloudy", "rain", "snow"]) outcome max assets ave assets min assets cloudy 1026.3034 1002.9049 967.8071 rain 1026.3034 1002.9049 967.8071 snow 1026.3034 1002.9049 967.8071 ? def A := cm("Test Issue A", [false, true]) > def B := cm("Test Issue B", [false, true]) > def C := cm("Test Issue C", [false, true]) > def D := cm("Test Issue D", [false, true]) > def F := cm("Test Issue F", [false, true]) # value: Issue("Test Issue A"[false, true]) # value: Issue("Test Issue B"[false, true]) # value: Issue("Test Issue C"[false, true]) # value: Issue("Test Issue D"[false, true]) # value: Issue("Test Issue F"[false, true]) ? def mmm := ? def sampIssue := mis([A, B, C, D, F]) > def sampMm := mmm(sampIssue, 100) > def none := sampMm.issues().newAssumptions() > def joe := sampMm.makeParticipant(1000) # value: # value: # value: Test Issue A: unknown # Test Issue B: unknown # Test Issue C: unknown # Test Issue D: unknown # Test Issue F: unknown # value: ? joe.addAssumption(A, true, true) > joe.addAssumption(B, true, false) > joe.trade(C, true, 0.6) > sampMm.showChances(stdout, C, none) > joe.showDependentAssetValues(stdout, C) > joe.trade(D, true, 0.01) > sampMm.showChances(stdout, C, none) > sampMm.showChances(stdout, D, none) > joe.showDependentAssetValues(stdout, C) > joe.showDependentAssetValues(stdout, D) Probabilities for outcomes of : outcome probability false 0.4750 true 0.5249 Issue("Test Issue C"[false, true]) outcome max assets ave assets min assets false 967.8071 967.8071 967.8071 true 1026.3034 1026.3034 1026.3034 Probabilities for outcomes of : outcome probability false 0.475 true 0.5249 Probabilities for outcomes of : outcome probability false 0.6224 true 0.3775 Issue("Test Issue C"[false, true]) outcome max assets ave assets min assets false 1066.3572 1059.7278 403.4215 true 1124.8534 1118.2241 461.9178 Issue("Test Issue D"[false, true]) outcome max assets ave assets min assets false 1124.8534 1101.4549 1066.3572 true 461.9178 438.5193 403.4215 ? joe.showDependentAssetValues(stdout, F) Issue("Test Issue F"[false, true]) outcome max assets ave assets min assets false 1124.8534 1094.8256 403.4215 true 1124.8534 1094.8256 403.4215 ?