def double_smoothed_stochastic(data, period):
catch_errors.check_for_period_error(data, period)<EOL>lows = [data[idx] - np.min(data[idx+<NUM_LIT:1>-period:idx+<NUM_LIT:1>]) for idx in range(period-<NUM_LIT:1>, len(data))]<EOL>sm_lows = ema(ema(lows, period), period)<EOL>highs = [np.max(data[idx+<NUM_LIT:1>-period:idx+<NUM_LIT:1>]) - np.min(data[idx+<NUM_LIT:1>-period:idx+<NUM_LIT:1>]) for idx in range(period-<NUM_LIT:1>, len(data))]<EOL>sm_highs = ema(ema(highs, period), period)<EOL>dss = (sm_lows / sm_highs) * <NUM_LIT:100><EOL>dss = fill_for_noncomputable_vals(data, dss)<EOL>return dss<EOL>
Double Smoothed Stochastic.

Formula:
dss = 100 *  EMA(Close - Lowest Low) / EMA(Highest High - Lowest Low)