aboutsummaryrefslogtreecommitdiff
path: root/analysis.py
diff options
context:
space:
mode:
Diffstat (limited to 'analysis.py')
-rw-r--r--analysis.py59
1 files changed, 2 insertions, 57 deletions
diff --git a/analysis.py b/analysis.py
index 644fe93..15ba0ef 100644
--- a/analysis.py
+++ b/analysis.py
@@ -14,27 +14,7 @@ import datetime
# make the line data for the 5 day exponential moving average (EMA)
-def calc_first_sma(period, prices):
- prices_sum = 0
- for i in range(0, period):
- prices_sum += prices[i] # 0, 1, 2, 3 ("popping" order)
- # print('prices_sum:\t', prices_sum)
- return prices_sum / period
-
-def calc_emas(period, prices):
- weighted_multiplier = 2.0 / (period + 1.0)
-
- # calculate the first ema
- first_ema = calc_first_sma(period, prices)
-
- # calculate the rest ema's using that first
- emas = [first_ema] * period
- for i in range(period + 1, len(prices)): # 4, 5, 6, ... , last
- last_ema = emas[-1]
- next_ema = prices[i] * weighted_multiplier + last_ema * (1 - weighted_multiplier)
- emas.append(next_ema)
- return emas
def interpolate_intersection(intersection_indices, timestamps, prices1, prices2):
left_index = intersection_indices[0]
@@ -72,8 +52,8 @@ def find_intersections(prices1, prices2, offset=0):
if len(prices1) != len(prices2):
print("ERROR IN find_intersections: len of arrs not the same")
return []
- prev_p1 = prices1[0]
- prev_p2 = prices2[0]
+ prev_p1 = prices1[offset]
+ prev_p2 = prices2[offset]
intersection_indices = set()
for i in range(1 + offset, len(prices1)):
next_p1 = prices1[i]
@@ -93,39 +73,4 @@ def find_intersections(prices1, prices2, offset=0):
return intersection_indices
-def calculate_profit(buy_line, sell_line, prices, timestamps, offset=0, starting_money=10000):
- if len(buy_line) != len(sell_line):
- print("ERROR IN find_intersections: len of arrs not the same")
- return []
- is_bought = False
- curr_money = 10000
- shares_owned = 0
- buy_info = []
- sell_info = []
- for i in range(offset, len(buy_line)):
- current_b1 = buy_line[i]
- current_sl = sell_line[i]
- # if the sign is positive, we want to hold, if it's negative, we want to sell
- sign_signal = current_b1 - current_sl
-
- if sign_signal > 0:
- if not is_bought:
- # buy the stock
- shares_owned = curr_money / prices[i]
- curr_money = 0
- buy_info.append((timestamps[i], prices[i], i))
- is_bought = True
- if sign_signal < 0:
- if is_bought:
- # selling the stock
- curr_money = prices[i] * shares_owned
- shares_owned = 0
- sell_info.append((timestamps[i], prices[i], i))
- is_bought = False
-
- # TODO: consider end interval
- total_assets = prices[-1] * shares_owned + curr_money
- percent_gain = (total_assets - starting_money) / starting_money
- return (percent_gain, total_assets, buy_info, sell_info)
-
\ No newline at end of file