def compute_pattern_returns(prices, indentification_lag=4):
max_min = find_max_min(prices)
patterns = find_patterns(max_min)
returns = (prices.pct_change(1)
.shift(-1)
.reset_index(drop=True)
.dropna())
demeaned_returns = (returns - returns.mean()) / returns.std()
pattern_mean_returns = pd.Series()
for name, start_end_day_nums in patterns.iteritems():
if not isinstance(start_end_day_nums, list):
end_day_nums = [end_day_nums]
lagged_end_days = map(lambda x: x[1] + indentification_lag, start_end_day_nums)
pattern_mean_returns[name] = demeaned_returns.loc[lagged_end_days].mean()
return pattern_mean_returns