Skip to content
Snippets Groups Projects
Commit b854af8e authored by Sivaramalingam, Janani (PG/T - Comp Sci & Elec Eng)'s avatar Sivaramalingam, Janani (PG/T - Comp Sci & Elec Eng)
Browse files

Update val_sim.py

parent f6ad39d7
No related branches found
No related tags found
No related merge requests found
#!/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))
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment