Metadata-Version: 2.1
Name: gander
Version: 0.0.1
Summary: Technical indicators for the stock market
Home-page: http://github.com/ekkobit/gander
Author: Ole Olaussen, Xuan Ling
Author-email: ole.olaussen@ekkobit.com, xuan.ling@ekkobit.com
License: MIT
Description: ######
        Gander
        ######
        
        ***********************************************************
        Technical indicators and plotting for stock market analysis
        ***********************************************************
        
        Authors:
        
        * Ole Olaussen: ole.olaussen@ekkobit.com
        * Xuan Ling: xuan.ling@ekkobit.com
        
        
        ============
        Installation
        ============
        
        .. code-block:: shell
        
          pip install gander
        
        ========
        Examples
        ========
        
        .. code-block:: python
        
          import gander.indicators as gi
          import gander.plotting as gp
          import matplotlib.pyplot as plt
        
        Using Matplotlib and Gander to create daily stock charts
        --------------------------------------------------------
        
        Let's say we have a Pandas DataFrame of a stocks data and we want to make a
        chart of a subset of the data. Our DataFrame might look something
        like this:
        
        .. image:: docs/source/usage/df_raw.png
        
        Adding indicators to the data set
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        
        .. code-block:: python
        
          df = gi.calc_ema(df, df["close"], "ema12", window=13)
          df = gi.calc_ema(df, df["close"], "ema26", window=27)
          df = gi.calc_macd(df, df["ema12"], df["ema26"])
        
        
        This will give us something like this:
        
        .. image:: docs/source/usage/df_indicators.png
        
        To get a subset of the data and positions on the x-axis, we can do:
        
        .. code-block:: python
        
          df_plot = df[-300:-200]
          xpos = range(100)
        
        
        Building figure and subplots
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        
        .. code-block:: python
        
          fig = plt.figure(figsize=(12, 6))
          ax1 = plt.subplot2grid((3, 1), (0, 0), rowspan=2)
          ax2 = plt.subplot2grid((3, 1), (2, 0), rowspan=1)
          ticks, labels = gp.daily_labels(df_plot, df_plot.index, step=5)
        
        Customizing x-axis ticks, labels and grid
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        
        .. code-block:: python
        
          for ax in [ax1, ax2]:
              ax.set_xlim(xmin=-1, xmax=104)
              ax.set_xticks(ticks)
              ax.grid(alpha=0.3)
        
          ax1.xaxis.set_ticklabels([])
          ax1.tick_params(axis='x', length=0)
          ax2.set_xticklabels(labels)
        
          for label in ax2.get_xticklabels():
              if len(label.get_text()) == 4:
                  label.set_fontsize(14)
                  label.set_fontweight("bold")
              elif len(label.get_text()) == 3:
                  label.set_fontsize(12)
                  label.set_fontweight("bold")
              else:
                  label.set_fontsize(10)
        
        
        Adding plots
        ^^^^^^^^^^^^
        
        .. code-block:: python
        
          gp.candles(df_plot, ax1)
          ax1.plot(xpos, df_plot["ema12"], "b-")
          ax1.plot(xpos, df_plot["ema26"], "k-")
          gp.macds(df_plot, ax2, "fast", "signal", "macd-h")
        
        
        .. image:: docs/source/usage/daily_plot.png
        
        
        Using Matplotlib and Gander to create weekly stock charts
        ---------------------------------------------------------
        
        Let's again say we have a Pandas DataFrame of a stocks data and we want to make
        a chart of a subset of the data data. Only this time we have weekly
        data. Our DataFrame might look something like this:
        
        .. image:: docs/source/usage/df_raw_weekly.png
        
        Adding indicators to the data set
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        
        .. code-block:: python
        
          df = gi.calc_ema(df, df["close"], "ema12", window=13)
          df = gi.calc_ema(df, df["close"], "ema26", window=27)
          df = gi.calc_macd(df, df["ema12"], df["ema26"])
        
        
        This will give us something like this:
        
        .. image:: docs/source/usage/df_indicators_weekly.png
        
        To get a subset of the data and positions on the x-axis, we can again do:
        
        .. code-block:: python
        
          df_plot = df[-230:-130]
          xpos = range(100)
        
        The process of building the chart is the same as for daily data, except we
        might do different customizations to the lables on the x-axis:
        
        Building figure and subplots
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        
        .. code-block:: python
        
          fig = plt.figure(figsize=(12, 6))
          ax1 = plt.subplot2grid((3, 1), (0, 0), rowspan=2)
          ax2 = plt.subplot2grid((3, 1), (2, 0), rowspan=1)
          ticks, labels = gp.weekly_labels(df_plot, df_plot.index, step=10)
        
        Customizing x-axis ticks, labels and grid
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        
        .. code-block:: python
        
          for ax in [ax1, ax2]:
              ax.set_xlim(xmin=-1, xmax=104)
              ax.set_xticks(ticks)
              ax.grid(alpha=0.3)
        
          ax1.xaxis.set_ticklabels([])
          ax1.tick_params(axis='x', length=0)
          ax2.set_xticklabels(labels)
        
          for label in ax2.get_xticklabels():
              if len(label.get_text()) == 4:
                  label.set_fontsize(14)
                  label.set_fontweight("bold")
        
        
        Adding plots
        ^^^^^^^^^^^^
        
        .. code-block:: python
        
          gp.candles(df_plot, ax1)
          ax1.plot(xpos, df_plot["ema12"], "b-")
          ax1.plot(xpos, df_plot["ema26"], "k-")
          gp.macds(df_plot, ax2, "fast", "signal", "macd-h")
        
        
        .. image:: docs/source/usage/weekly_plot.png
        
        ==========
        Contribute
        ==========
        
        * Issue Tracker: https://github.com/ekkobit/gander/issues
        * Source Code: https://github.com/ekkobit/gander
        * Documentation: https://gander.readthedocs.io
        
Platform: UNKNOWN
Classifier: Development Status :: 3 - Alpha
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Topic :: Office/Business :: Financial :: Investment
Description-Content-Type: text/x-rst
