diff --git a/ec2.py b/ec2.py index 8fb2cb858fcc450a94cc36cd8d87b746443d0f9e..ea2b56fe0ab6a2187e11a9d4d4e74b54c01f6326 100644 --- a/ec2.py +++ b/ec2.py @@ -1,64 +1,63 @@ #!/usr/bin/python3 -import math, random, sys, json from statistics import mean, stdev +import math, random, sys, json -event = json.loads(sys.stdin.read()) +args = sys.stdin.read() +session = json.loads(args) -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'] -minhistory = h -shots = d -var95_list = [] -var99_list = [] +date = eval(session['key1']) +close = eval(session['key2']) +buy = eval(session['key3']) +sell = eval(session['key4']) +minhistory = int(session['key5']) +shots = int(session['key6']) +t = session['key7'] +var_95_list = [] +var_99_list = [] dates = [] for i in range(minhistory, len(close)): - if t == "buy": - if buy[i] == 1: # if we’re interested in Buy signals - close_data = close[i-minhistory:i] - pct_change = [(close_data[i] - close_data[i-1]) / close_data[i-1] for i in range(1,len(close_data))] - mn = mean(pct_change) - std = stdev(pct_change) + if t == "sell": + if sell[i] == 1: #If it is to sell + closing = close[i-minhistory:i] + percent_change = [(closing[i] - closing[i-1]) / closing[i-1] for i in range(1,len(closing))]#Calculating percenage change as dataframe method pct_change can't be used + mean_value = mean(percent_change) + std_value = stdev(percent_change) # generate much larger random number series with same broad characteristics - simulated = [random.gauss(mn,std) for x in range(shots)] + simulated = [random.gauss(mean_value,std_value) for x in range(shots)] # sort and pick 95% and 99% - not distinguishing long/short risks here 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": - if sell[i] == 1: # if we’re interested in Sell signals - close_data = close[i-minhistory:i] - pct_change = [(close_data[i] - close_data[i-1]) / close_data[i-1] for i in range(1,len(close_data))] - mn = mean(pct_change) - std = stdev(pct_change) + var_95_list.append(var95) + var_99_list.append(var99) + dates.append(str(date[i])) + if t == "buy": + if buy[i] == 1: #If it is to buy + closing = close[i-minhistory:i] + percent_change = [(closing[i] - closing[i-1]) / closing[i-1] for i in range(1,len(closing))]#Calculating percenage change as dataframe method pct_change can't be used + mean_value = mean(percent_change) + std_value = stdev(percent_change) # generate much larger random number series with same broad characteristics - simulated = [random.gauss(mn,std) for x in range(shots)] + simulated = [random.gauss(mean_value,std_value) for x in range(shots)] # sort and pick 95% and 99% - not distinguishing long/short risks here 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])) + var_95_list.append(var95) + var_99_list.append(var99) + dates.append(str(date[i])) output = {"dates" : dates, - "var95" : var95_list, - "var99" : var99_list + "var95" : var_95_list, + "var99" : var_99_list } -output = json.dumps(output) +final_output = json.dumps(output) print("Content-Type: application/json") print() -print(output) +print(final_output)