diff options
Diffstat (limited to 'analysis.py')
-rw-r--r-- | analysis.py | 59 |
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 |