import ts_charting as charting import pandas.io.data as pdd import pandas as pd charting.figsize(13, 10) df = pdd.get_data_yahoo('AAPL') spy = pdd.get_data_yahoo('SPY') df = df.tail(100) spy = spy.tail(100) returns = df.Close.pct_change() spy_returns = spy.Close.pct_change() fig = charting.figure(1) df.ohlc_plot() (df.Close.pct_change() > 0).fplot_markers('close up', yvalues=(df.Open + df.Close) / 2, color='green') fig.line(460) overnight = np.log(df.Open / df.Close.shift(1)) intraday = np.log(df.Close / df.Open) overnight_roll = pd.rolling_sum(overnight, 10) intraday_roll = pd.rolling_sum(intraday, 10) fig = charting.figure(1) df.ohlc_plot() (df.Close.pct_change() > 0).fplot_markers('close up', yvalues=(df.Open + df.Close) / 2, color='green') (returns + 1).cumprod().fplot('equity', secondary_y=True) overnight_roll.fplot('overnight returns', yax='10day') intraday_roll.fplot('intraday returns', yax='10day') fig = charting.figure(2) fig.set_ax(1) df.ohlc_plot() (df.Close.pct_change() > 0).fplot_markers('close up', yvalues=(df.Open + df.Close) / 2, color='green') overnight_roll.fplot('overnight returns', yax='10day') intraday_roll.fplot('intraday returns', yax='10day') fig.set_ax(2) (returns + 1).cumprod().fplot('equity') (spy_returns + 1).cumprod().fplot('spy') fig.set_xticks('MS') fig = charting.figure(3) fig.set_ax(1) df.ohlc_plot() (df.Close.pct_change() > 0).fplot_markers('close up', yvalues=(df.Open + df.Close) / 2, color='green') overnight_roll.fplot('overnight returns', yax='10day') intraday_roll.fplot('intraday returns', yax='10day') fig.set_ax(2) (returns + 1).cumprod().tail(10).fplot('equity') (spy_returns + 1).cumprod().tail(10).fplot('spy') fig.set_ax(3, sharex=1) (returns + 1).cumprod().tail(10).fplot('equity') (spy_returns + 1).cumprod().tail(10).fplot('spy') fig = charting.figure(2) fig.set_ax(1) df.ohlc_plot() (df.Close.pct_change() > 0).fplot_markers('close up', yvalues=(df.Open + df.Close) / 2, color='green') overnight_roll.fplot('overnight returns', yax='10day') intraday_roll.fplot('intraday returns', yax='10day') fig.hl_span("4/29/2013", "5/20/2013", color='red') fig.set_ax(2, sharex=1) (returns + 1).cumprod().fplot('equity') (spy_returns + 1).cumprod().fplot('spy') fig.hl_span("3/18/2013", "4/08/2013", color='red') week_max = df.High.resample('W', 'max', label='left').tshift(-1, '1h') week_min = df.Low.resample('W', 'min', label='left').tshift(-3, '1h') # note these are both sparse (anchored on saturday) and misaligned (happens at 11 or 9 PM) week_max fig = charting.figure(1) fig.set_ax(1) df.ohlc_plot() week_max.fplot('week_max', method='ffill', color='green') week_min.fplot('week_min', method='ffill', color='red') fig = charting.figure(3) fig.set_ax(1) (returns + 1).cumprod().fplot('equity') fig.set_xticks('MS') # pandas freq fig.set_ax(2, sharex=1) (returns + 1).cumprod().fplot('equity') fig.set_xticks([pd.Timestamp("2013-03-01"), pd.Timestamp("2013-05-14")]) # explicit dates fig.set_ax(3, sharex=1) (returns + 1).cumprod().fplot('equity') fig.set_xticks(returns > 0.02) # set tick whenver we are above .02