diff --git a/val_sim.py b/val_sim.py
index 845256b66d1d228a9c411089f22cf31372013f93..2d283450fc40b82c6f59f71fc315fd48d5fb7705 100644
--- a/val_sim.py
+++ b/val_sim.py
@@ -1,31 +1,70 @@
 #!/usr/bin/python3
 
-import sys, json
+import math
+import random
+from statistics import mean, stdev
+import json
+import sys
 import cgitb
 cgitb.enable()
 
-# Load event data from stdin
-event = json.loads(sys.stdin.read())
-
-# Extract input parameters from the event
-dt = eval(event['key1'])
-close = eval(event['key2'])
-buy = eval(event['key3'])
-sell = eval(event['key4'])
-h = int(event['key5'])
-d = int(event['key6'])
-t = event['key7']
-
-# Create the output dictionary with the input parameters
-output = {
-    "dates": dt,
-    "close": close,
-    "buy": buy,
-    "sell": sell,
-    "h": h,
-    "d": d,
-    "t": t
+# Read input from stdin
+input_data = sys.stdin.read()
+
+# Parse the input data as JSON
+event_dict = json.loads(input_data)
+
+# Extract the values from the event dictionary
+dt = eval(event_dict['key1'])
+close = eval(event_dict['key2'])
+buy = eval(event_dict['key3'])
+sell = eval(event_dict['key4'])
+h = int(event_dict['key5'])
+d = int(event_dict['key6'])
+t = event_dict['key7']
+
+minhistory = int(h)
+shots = int(d)
+
+var95_list = []
+var99_list = []
+dates = []
+
+# Loop through the data to calculate var95 and var99
+for i in range(minhistory, len(close)):
+    if t == "buy" and buy[i] == 1:  # Calculate for Buy signals
+        data = close[i-minhistory:i]
+        pct_change = [(data[j] - data[j-1]) / data[j-1] for j in range(1, len(data))]
+        mean_value = mean(pct_change)
+        std_value = stdev(pct_change)
+        simulated = [random.gauss(mean_value, std_value) for _ in range(shots)]
+        simulated.sort(reverse=True)
+        var95 = simulated[int(len(simulated) * 0.95)]
+        var99 = simulated[int(len(simulated) * 0.99)]
+        var95_list.append(var95)
+        var99_list.append(var99)
+        dates.append(str(dt[i]))
+    
+    elif t == "sell" and sell[i] == 1:  # Calculate for Sell signals
+        data = close[i-minhistory:i]
+        pct_change = [(data[j] - data[j-1]) / data[j-1] for j in range(1, len(data))]
+        mean_value = mean(pct_change)
+        std_value = stdev(pct_change)
+        simulated = [random.gauss(mean_value, std_value) for _ in range(shots)]
+        simulated.sort(reverse=True)
+        var95 = simulated[int(len(simulated) * 0.95)]
+        var99 = simulated[int(len(simulated) * 0.99)]
+        var95_list.append(var95)
+        var99_list.append(var99)
+        dates.append(str(dt[i]))
+
+# Prepare the response
+response = {
+    "dates": dates,
+    "var95_list": var95_list,
+    "var99_list": var99_list
 }
 
-# Print the output as a JSON string
-print(json.dumps(output))
+# Print the output as a JSON string, which is how CGI scripts return data
+print("Content-Type: application/json\n")
+print(json.dumps(response))