mirror of
https://github.com/wassname/pandas-ta.git
synced 2026-08-18 12:20:24 +08:00
2885 lines
208 KiB
Plaintext
2885 lines
208 KiB
Plaintext
{
|
||
"cells": [
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"# Pandas TA ([pandas_ta](https://github.com/twopirllc/pandas-ta)) Strategies for Custom Technical Analysis\n",
|
||
"\n",
|
||
"## Topics\n",
|
||
"- What is a Pandas TA Strategy?\n",
|
||
" - Builtin Strategies: __AllStrategy__ and __CommonStrategy__\n",
|
||
" - Creating Strategies\n",
|
||
"- Watchlist Class\n",
|
||
" - Strategy Management and Execution\n",
|
||
" - **NOTE:** The **watchlist** module is independent of Pandas TA. To easily use it, copy it from your local pandas_ta installation directory into your project directory.\n",
|
||
"- Indicator Composition/Chaining for more Complex Strategies\n",
|
||
" - Comprehensive Example: _MACD and RSI Momo with BBANDS and SMAs 50 & 200 and Cumulative Log Returns_"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 1,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"\n",
|
||
"Pandas TA v0.2.74b0\n",
|
||
"To install the Latest Version:\n",
|
||
"$ pip install -U git+https://github.com/twopirllc/pandas-ta\n",
|
||
"\n",
|
||
"Populating the interactive namespace from numpy and matplotlib\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"%matplotlib inline\n",
|
||
"import datetime as dt\n",
|
||
"\n",
|
||
"from tqdm import tqdm\n",
|
||
"\n",
|
||
"import pandas as pd\n",
|
||
"import pandas_ta as ta\n",
|
||
"from alphaVantageAPI.alphavantage import AlphaVantage # pip install alphaVantage-api\n",
|
||
"\n",
|
||
"from watchlist import Watchlist # Is this failing? If so, copy it locally. See above.\n",
|
||
"\n",
|
||
"print(f\"\\nPandas TA v{ta.version}\\nTo install the Latest Version:\\n$ pip install -U git+https://github.com/twopirllc/pandas-ta\\n\")\n",
|
||
"%pylab inline"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"# What is a Pandas TA Strategy?\n",
|
||
"A _Strategy_ is a simple way to name and group your favorite TA indicators. Technically, a _Strategy_ is a simple Data Class to contain list of indicators and their parameters. __Note__: _Strategy_ is experimental and subject to change. Pandas TA comes with two basic Strategies: __AllStrategy__ and __CommonStrategy__.\n",
|
||
"\n",
|
||
"## Strategy Requirements:\n",
|
||
"- _name_: Some short memorable string. _Note_: Case-insensitive \"All\" is reserved.\n",
|
||
"- _ta_: A list of dicts containing keyword arguments to identify the indicator and the indicator's arguments\n",
|
||
"\n",
|
||
"## Optional Requirements:\n",
|
||
"- _description_: A more detailed description of what the Strategy tries to capture. Default: None\n",
|
||
"- _created_: At datetime string of when it was created. Default: Automatically generated.\n",
|
||
"\n",
|
||
"### Things to note:\n",
|
||
"- A Strategy will __fail__ when consumed by Pandas TA if there is no {\"kind\": \"indicator name\"} attribute."
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"# Builtin Examples"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"### All\n",
|
||
"Default Values"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 2,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"name = All\n",
|
||
"description = All the indicators with their default settings. Pandas TA default.\n",
|
||
"created = Wednesday April 21, 2021, NYSE: 17:14:16, Local: 21:14:16 PDT, Day 111/365 (30.00%)\n",
|
||
"ta = None\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"AllStrategy = ta.AllStrategy\n",
|
||
"print(\"name =\", AllStrategy.name)\n",
|
||
"print(\"description =\", AllStrategy.description)\n",
|
||
"print(\"created =\", AllStrategy.created)\n",
|
||
"print(\"ta =\", AllStrategy.ta)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"### Common\n",
|
||
"Default Values"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 3,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"name = Common Price and Volume SMAs\n",
|
||
"description = Common Price SMAs: 10, 20, 50, 200 and Volume SMA: 20.\n",
|
||
"created = Wednesday April 21, 2021, NYSE: 17:14:16, Local: 21:14:16 PDT, Day 111/365 (30.00%)\n",
|
||
"ta = [{'kind': 'sma', 'length': 10}, {'kind': 'sma', 'length': 20}, {'kind': 'sma', 'length': 50}, {'kind': 'sma', 'length': 200}, {'kind': 'sma', 'close': 'volume', 'length': 20, 'prefix': 'VOL'}]\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"CommonStrategy = ta.CommonStrategy\n",
|
||
"print(\"name =\", CommonStrategy.name)\n",
|
||
"print(\"description =\", CommonStrategy.description)\n",
|
||
"print(\"created =\", CommonStrategy.created)\n",
|
||
"print(\"ta =\", CommonStrategy.ta)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": []
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"# Creating Strategies\n",
|
||
"Strategies require a **name** and an array of dicts containing the \"kind\" of indicator (\"sma\") and other potential parameters for **ta**."
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"### Simple Strategy A"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 4,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"Strategy(name='A', ta=[{'kind': 'sma', 'length': 50}, {'kind': 'sma', 'length': 200}], description='TA Description', created='Wednesday April 21, 2021, NYSE: 17:14:16, Local: 21:14:16 PDT, Day 111/365 (30.00%)')"
|
||
]
|
||
},
|
||
"execution_count": 4,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"custom_a = ta.Strategy(name=\"A\", ta=[{\"kind\": \"sma\", \"length\": 50}, {\"kind\": \"sma\", \"length\": 200}])\n",
|
||
"custom_a"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"### Simple Strategy B"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 5,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"Strategy(name='B', ta=[{'kind': 'ema', 'length': 8}, {'kind': 'ema', 'length': 21}, {'kind': 'log_return', 'cumulative': True}, {'kind': 'rsi'}, {'kind': 'supertrend'}], description='TA Description', created='Wednesday April 21, 2021, NYSE: 17:14:16, Local: 21:14:16 PDT, Day 111/365 (30.00%)')"
|
||
]
|
||
},
|
||
"execution_count": 5,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"custom_b = ta.Strategy(name=\"B\", ta=[{\"kind\": \"ema\", \"length\": 8}, {\"kind\": \"ema\", \"length\": 21}, {\"kind\": \"log_return\", \"cumulative\": True}, {\"kind\": \"rsi\"}, {\"kind\": \"supertrend\"}])\n",
|
||
"custom_b"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"### Bad Strategy. (Misspelled Indicator)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 6,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"Strategy(name='Runtime Failure', ta=[{'kind': 'percet_return'}], description='TA Description', created='Wednesday April 21, 2021, NYSE: 17:14:16, Local: 21:14:16 PDT, Day 111/365 (30.00%)')"
|
||
]
|
||
},
|
||
"execution_count": 6,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"# Misspelled indicator, will fail later when ran with Pandas TA\n",
|
||
"custom_run_failure = ta.Strategy(name=\"Runtime Failure\", ta=[{\"kind\": \"percet_return\"}])\n",
|
||
"custom_run_failure"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": []
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"# Strategy Management and Execution with _Watchlist_"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"### Initialize AlphaVantage Data Source"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 7,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"AlphaVantage(\n",
|
||
" end_point:str = https://www.alphavantage.co/query,\n",
|
||
" api_key:str = YOUR API KEY,\n",
|
||
" export:bool = True,\n",
|
||
" export_path:str = .,\n",
|
||
" output_size:str = full,\n",
|
||
" output:str = csv,\n",
|
||
" datatype:str = json,\n",
|
||
" clean:bool = True,\n",
|
||
" proxy:dict = {}\n",
|
||
")"
|
||
]
|
||
},
|
||
"execution_count": 7,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"AV = AlphaVantage(\n",
|
||
" api_key=\"YOUR API KEY\", premium=False,\n",
|
||
" output_size='full', clean=True,\n",
|
||
" export_path=\".\", export=True\n",
|
||
")\n",
|
||
"AV"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"### Create Watchlist and set it's 'ds' to AlphaVantage"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 8,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"data_source = \"av\" # Default\n",
|
||
"# data_source = \"yahoo\"\n",
|
||
"watch = Watchlist([\"SPY\", \"IWM\"], ds_name=data_source, timed=False)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"#### Info about the Watchlist. Note, the default Strategy is \"All\""
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 9,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"Watch(name='Watch: SPY, IWM', ds_name='av', tickers[2]='SPY, IWM', tf='D', strategy[5]='Common Price and Volume SMAs')"
|
||
]
|
||
},
|
||
"execution_count": 9,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"watch"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"### Help about Watchlist"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 10,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"Help on class Watchlist in module watchlist:\n",
|
||
"\n",
|
||
"class Watchlist(builtins.object)\n",
|
||
" | Watchlist(tickers: list, tf: str = None, name: str = None, strategy: pandas_ta.core.Strategy = None, ds_name: str = 'av', **kwargs)\n",
|
||
" | \n",
|
||
" | # Watchlist Class (** This is subject to change! **)\n",
|
||
" | A simple Class to load/download financial market data and automatically\n",
|
||
" | apply Technical Analysis indicators with a Pandas TA Strategy.\n",
|
||
" | \n",
|
||
" | Default Strategy: pandas_ta.CommonStrategy\n",
|
||
" | \n",
|
||
" | ## Package Support:\n",
|
||
" | ### Data Source (Default: AlphaVantage)\n",
|
||
" | - AlphaVantage (pip install alphaVantage-api).\n",
|
||
" | - Python Binance (pip install python-binance). # Future Support\n",
|
||
" | - Yahoo Finance (pip install yfinance). # Almost Supported\n",
|
||
" | \n",
|
||
" | # Technical Analysis:\n",
|
||
" | - Pandas TA (pip install pandas_ta)\n",
|
||
" | \n",
|
||
" | ## Required Arguments:\n",
|
||
" | - tickers: A list of strings containing tickers. Example: [\"SPY\", \"AAPL\"]\n",
|
||
" | \n",
|
||
" | Methods defined here:\n",
|
||
" | \n",
|
||
" | __init__(self, tickers: list, tf: str = None, name: str = None, strategy: pandas_ta.core.Strategy = None, ds_name: str = 'av', **kwargs)\n",
|
||
" | Initialize self. See help(type(self)) for accurate signature.\n",
|
||
" | \n",
|
||
" | __repr__(self) -> str\n",
|
||
" | Return repr(self).\n",
|
||
" | \n",
|
||
" | indicators(self, *args, **kwargs) -> <built-in function any>\n",
|
||
" | Returns the list of indicators that are available with Pandas Ta.\n",
|
||
" | \n",
|
||
" | load(self, ticker: str = None, tf: str = None, index: str = 'date', drop: list = [], plot: bool = False, **kwargs) -> pandas.core.frame.DataFrame\n",
|
||
" | Loads or Downloads (if a local csv does not exist) the data from the\n",
|
||
" | Data Source. When successful, it returns a Data Frame for the requested\n",
|
||
" | ticker. If no tickers are given, it loads all the tickers.\n",
|
||
" | \n",
|
||
" | ----------------------------------------------------------------------\n",
|
||
" | Data descriptors defined here:\n",
|
||
" | \n",
|
||
" | __dict__\n",
|
||
" | dictionary for instance variables (if defined)\n",
|
||
" | \n",
|
||
" | __weakref__\n",
|
||
" | list of weak references to the object (if defined)\n",
|
||
" | \n",
|
||
" | data\n",
|
||
" | When not None, it contains a dictionary of DataFrames keyed by ticker. data = {\"SPY\": pd.DataFrame, ...}\n",
|
||
" | \n",
|
||
" | name\n",
|
||
" | The name of the Watchlist. Default: \"Watchlist: {Watchlist.tickers}\".\n",
|
||
" | \n",
|
||
" | strategy\n",
|
||
" | Sets a valid Strategy. Default: pandas_ta.CommonStrategy\n",
|
||
" | \n",
|
||
" | tf\n",
|
||
" | Alias for timeframe. Default: 'D'\n",
|
||
" | \n",
|
||
" | tickers\n",
|
||
" | tickers\n",
|
||
" | \n",
|
||
" | If a string, it it converted to a list. Example: \"AAPL\" -> [\"AAPL\"]\n",
|
||
" | * Does not accept, comma seperated strings.\n",
|
||
" | If a list, checks if it is a list of strings.\n",
|
||
" | \n",
|
||
" | verbose\n",
|
||
" | Toggle the verbose property. Default: False\n",
|
||
"\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"help(Watchlist)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"### Default Strategy is \"Common\""
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 11,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"[!] Loading All: SPY, IWM\n",
|
||
"[+] Downloading[av]: SPY[D]\n",
|
||
"[+] Strategy: Common Price and Volume SMAs\n",
|
||
"[i] Indicator arguments: {'timed': False, 'append': True}\n",
|
||
"[i] Multiprocessing 5 indicators with 7 chunks and 8/8 cpus.\n",
|
||
"[i] Total indicators: 5\n",
|
||
"[i] Columns added: 5\n",
|
||
"[i] Last Run: Wednesday April 21, 2021, NYSE: 17:14:19, Local: 21:14:19 PDT, Day 111/365 (30.00%)\n",
|
||
"[+] Downloading[av]: IWM[D]\n",
|
||
"[+] Strategy: Common Price and Volume SMAs\n",
|
||
"[i] Indicator arguments: {'timed': False, 'append': True}\n",
|
||
"[i] Multiprocessing 5 indicators with 7 chunks and 8/8 cpus.\n",
|
||
"[i] Total indicators: 5\n",
|
||
"[i] Columns added: 5\n",
|
||
"[i] Last Run: Wednesday April 21, 2021, NYSE: 17:14:38, Local: 21:14:38 PDT, Day 111/365 (30.00%)\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"# No arguments loads all the tickers and applies the Strategy to each ticker.\n",
|
||
"# The result can be accessed with Watchlist's 'data' property which returns a \n",
|
||
"# dictionary keyed by ticker and DataFrames as values \n",
|
||
"watch.load(verbose=True)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 12,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"'SPY: (5402, 10), IWM: (5258, 10)'"
|
||
]
|
||
},
|
||
"execution_count": 12,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"\", \".join([f\"{t}: {d.shape}\" for t,d in watch.data.items()])"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 13,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/html": [
|
||
"<div>\n",
|
||
"<style scoped>\n",
|
||
" .dataframe tbody tr th:only-of-type {\n",
|
||
" vertical-align: middle;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe tbody tr th {\n",
|
||
" vertical-align: top;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe thead th {\n",
|
||
" text-align: right;\n",
|
||
" }\n",
|
||
"</style>\n",
|
||
"<table border=\"1\" class=\"dataframe\">\n",
|
||
" <thead>\n",
|
||
" <tr style=\"text-align: right;\">\n",
|
||
" <th></th>\n",
|
||
" <th>open</th>\n",
|
||
" <th>high</th>\n",
|
||
" <th>low</th>\n",
|
||
" <th>close</th>\n",
|
||
" <th>volume</th>\n",
|
||
" <th>SMA_10</th>\n",
|
||
" <th>SMA_20</th>\n",
|
||
" <th>SMA_50</th>\n",
|
||
" <th>SMA_200</th>\n",
|
||
" <th>VOL_SMA_20</th>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>date</th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" </tr>\n",
|
||
" </thead>\n",
|
||
" <tbody>\n",
|
||
" <tr>\n",
|
||
" <th>1999-11-01</th>\n",
|
||
" <td>136.5000</td>\n",
|
||
" <td>137.0000</td>\n",
|
||
" <td>135.5625</td>\n",
|
||
" <td>135.5625</td>\n",
|
||
" <td>4006500.0</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>1999-11-02</th>\n",
|
||
" <td>135.9687</td>\n",
|
||
" <td>137.2500</td>\n",
|
||
" <td>134.5937</td>\n",
|
||
" <td>134.5937</td>\n",
|
||
" <td>6516900.0</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>1999-11-03</th>\n",
|
||
" <td>136.0000</td>\n",
|
||
" <td>136.3750</td>\n",
|
||
" <td>135.1250</td>\n",
|
||
" <td>135.5000</td>\n",
|
||
" <td>7222300.0</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>1999-11-04</th>\n",
|
||
" <td>136.7500</td>\n",
|
||
" <td>137.3593</td>\n",
|
||
" <td>135.7656</td>\n",
|
||
" <td>136.5312</td>\n",
|
||
" <td>7907500.0</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>1999-11-05</th>\n",
|
||
" <td>138.6250</td>\n",
|
||
" <td>139.1093</td>\n",
|
||
" <td>136.7812</td>\n",
|
||
" <td>137.8750</td>\n",
|
||
" <td>7431500.0</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>...</th>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2021-04-15</th>\n",
|
||
" <td>413.7400</td>\n",
|
||
" <td>416.1600</td>\n",
|
||
" <td>413.6900</td>\n",
|
||
" <td>415.8700</td>\n",
|
||
" <td>60229842.0</td>\n",
|
||
" <td>409.151</td>\n",
|
||
" <td>400.7300</td>\n",
|
||
" <td>393.4496</td>\n",
|
||
" <td>359.19885</td>\n",
|
||
" <td>84100372.00</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2021-04-16</th>\n",
|
||
" <td>417.2500</td>\n",
|
||
" <td>417.9100</td>\n",
|
||
" <td>415.7300</td>\n",
|
||
" <td>417.2600</td>\n",
|
||
" <td>82037278.0</td>\n",
|
||
" <td>410.816</td>\n",
|
||
" <td>402.0190</td>\n",
|
||
" <td>394.1578</td>\n",
|
||
" <td>359.74335</td>\n",
|
||
" <td>82434780.85</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2021-04-19</th>\n",
|
||
" <td>416.2600</td>\n",
|
||
" <td>416.7400</td>\n",
|
||
" <td>413.7900</td>\n",
|
||
" <td>415.2100</td>\n",
|
||
" <td>78498496.0</td>\n",
|
||
" <td>411.701</td>\n",
|
||
" <td>403.3055</td>\n",
|
||
" <td>394.7382</td>\n",
|
||
" <td>360.26680</td>\n",
|
||
" <td>80678481.15</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2021-04-20</th>\n",
|
||
" <td>413.9100</td>\n",
|
||
" <td>415.0859</td>\n",
|
||
" <td>410.5900</td>\n",
|
||
" <td>412.1700</td>\n",
|
||
" <td>81851828.0</td>\n",
|
||
" <td>412.306</td>\n",
|
||
" <td>404.2845</td>\n",
|
||
" <td>395.2274</td>\n",
|
||
" <td>360.76650</td>\n",
|
||
" <td>81082140.25</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2021-04-21</th>\n",
|
||
" <td>411.5100</td>\n",
|
||
" <td>416.2900</td>\n",
|
||
" <td>411.3600</td>\n",
|
||
" <td>416.0700</td>\n",
|
||
" <td>66792983.0</td>\n",
|
||
" <td>413.254</td>\n",
|
||
" <td>405.6130</td>\n",
|
||
" <td>395.7386</td>\n",
|
||
" <td>361.26160</td>\n",
|
||
" <td>79887461.80</td>\n",
|
||
" </tr>\n",
|
||
" </tbody>\n",
|
||
"</table>\n",
|
||
"<p>5402 rows × 10 columns</p>\n",
|
||
"</div>"
|
||
],
|
||
"text/plain": [
|
||
" open high low close volume SMA_10 \\\n",
|
||
"date \n",
|
||
"1999-11-01 136.5000 137.0000 135.5625 135.5625 4006500.0 NaN \n",
|
||
"1999-11-02 135.9687 137.2500 134.5937 134.5937 6516900.0 NaN \n",
|
||
"1999-11-03 136.0000 136.3750 135.1250 135.5000 7222300.0 NaN \n",
|
||
"1999-11-04 136.7500 137.3593 135.7656 136.5312 7907500.0 NaN \n",
|
||
"1999-11-05 138.6250 139.1093 136.7812 137.8750 7431500.0 NaN \n",
|
||
"... ... ... ... ... ... ... \n",
|
||
"2021-04-15 413.7400 416.1600 413.6900 415.8700 60229842.0 409.151 \n",
|
||
"2021-04-16 417.2500 417.9100 415.7300 417.2600 82037278.0 410.816 \n",
|
||
"2021-04-19 416.2600 416.7400 413.7900 415.2100 78498496.0 411.701 \n",
|
||
"2021-04-20 413.9100 415.0859 410.5900 412.1700 81851828.0 412.306 \n",
|
||
"2021-04-21 411.5100 416.2900 411.3600 416.0700 66792983.0 413.254 \n",
|
||
"\n",
|
||
" SMA_20 SMA_50 SMA_200 VOL_SMA_20 \n",
|
||
"date \n",
|
||
"1999-11-01 NaN NaN NaN NaN \n",
|
||
"1999-11-02 NaN NaN NaN NaN \n",
|
||
"1999-11-03 NaN NaN NaN NaN \n",
|
||
"1999-11-04 NaN NaN NaN NaN \n",
|
||
"1999-11-05 NaN NaN NaN NaN \n",
|
||
"... ... ... ... ... \n",
|
||
"2021-04-15 400.7300 393.4496 359.19885 84100372.00 \n",
|
||
"2021-04-16 402.0190 394.1578 359.74335 82434780.85 \n",
|
||
"2021-04-19 403.3055 394.7382 360.26680 80678481.15 \n",
|
||
"2021-04-20 404.2845 395.2274 360.76650 81082140.25 \n",
|
||
"2021-04-21 405.6130 395.7386 361.26160 79887461.80 \n",
|
||
"\n",
|
||
"[5402 rows x 10 columns]"
|
||
]
|
||
},
|
||
"execution_count": 13,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"watch.data[\"SPY\"]"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": []
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 14,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"[i] Loaded SPY[D]: SPY_D.csv\n"
|
||
]
|
||
},
|
||
{
|
||
"data": {
|
||
"text/html": [
|
||
"<div>\n",
|
||
"<style scoped>\n",
|
||
" .dataframe tbody tr th:only-of-type {\n",
|
||
" vertical-align: middle;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe tbody tr th {\n",
|
||
" vertical-align: top;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe thead th {\n",
|
||
" text-align: right;\n",
|
||
" }\n",
|
||
"</style>\n",
|
||
"<table border=\"1\" class=\"dataframe\">\n",
|
||
" <thead>\n",
|
||
" <tr style=\"text-align: right;\">\n",
|
||
" <th></th>\n",
|
||
" <th>open</th>\n",
|
||
" <th>high</th>\n",
|
||
" <th>low</th>\n",
|
||
" <th>close</th>\n",
|
||
" <th>volume</th>\n",
|
||
" <th>SMA_10</th>\n",
|
||
" <th>SMA_20</th>\n",
|
||
" <th>SMA_50</th>\n",
|
||
" <th>SMA_200</th>\n",
|
||
" <th>VOL_SMA_20</th>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>date</th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" </tr>\n",
|
||
" </thead>\n",
|
||
" <tbody>\n",
|
||
" <tr>\n",
|
||
" <th>1999-11-01</th>\n",
|
||
" <td>136.5000</td>\n",
|
||
" <td>137.0000</td>\n",
|
||
" <td>135.5625</td>\n",
|
||
" <td>135.5625</td>\n",
|
||
" <td>4006500.0</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>1999-11-02</th>\n",
|
||
" <td>135.9687</td>\n",
|
||
" <td>137.2500</td>\n",
|
||
" <td>134.5937</td>\n",
|
||
" <td>134.5937</td>\n",
|
||
" <td>6516900.0</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>1999-11-03</th>\n",
|
||
" <td>136.0000</td>\n",
|
||
" <td>136.3750</td>\n",
|
||
" <td>135.1250</td>\n",
|
||
" <td>135.5000</td>\n",
|
||
" <td>7222300.0</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>1999-11-04</th>\n",
|
||
" <td>136.7500</td>\n",
|
||
" <td>137.3593</td>\n",
|
||
" <td>135.7656</td>\n",
|
||
" <td>136.5312</td>\n",
|
||
" <td>7907500.0</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>1999-11-05</th>\n",
|
||
" <td>138.6250</td>\n",
|
||
" <td>139.1093</td>\n",
|
||
" <td>136.7812</td>\n",
|
||
" <td>137.8750</td>\n",
|
||
" <td>7431500.0</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>...</th>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2021-04-15</th>\n",
|
||
" <td>413.7400</td>\n",
|
||
" <td>416.1600</td>\n",
|
||
" <td>413.6900</td>\n",
|
||
" <td>415.8700</td>\n",
|
||
" <td>60229842.0</td>\n",
|
||
" <td>409.151</td>\n",
|
||
" <td>400.7300</td>\n",
|
||
" <td>393.4496</td>\n",
|
||
" <td>359.19885</td>\n",
|
||
" <td>84100372.00</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2021-04-16</th>\n",
|
||
" <td>417.2500</td>\n",
|
||
" <td>417.9100</td>\n",
|
||
" <td>415.7300</td>\n",
|
||
" <td>417.2600</td>\n",
|
||
" <td>82037278.0</td>\n",
|
||
" <td>410.816</td>\n",
|
||
" <td>402.0190</td>\n",
|
||
" <td>394.1578</td>\n",
|
||
" <td>359.74335</td>\n",
|
||
" <td>82434780.85</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2021-04-19</th>\n",
|
||
" <td>416.2600</td>\n",
|
||
" <td>416.7400</td>\n",
|
||
" <td>413.7900</td>\n",
|
||
" <td>415.2100</td>\n",
|
||
" <td>78498496.0</td>\n",
|
||
" <td>411.701</td>\n",
|
||
" <td>403.3055</td>\n",
|
||
" <td>394.7382</td>\n",
|
||
" <td>360.26680</td>\n",
|
||
" <td>80678481.15</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2021-04-20</th>\n",
|
||
" <td>413.9100</td>\n",
|
||
" <td>415.0859</td>\n",
|
||
" <td>410.5900</td>\n",
|
||
" <td>412.1700</td>\n",
|
||
" <td>81851828.0</td>\n",
|
||
" <td>412.306</td>\n",
|
||
" <td>404.2845</td>\n",
|
||
" <td>395.2274</td>\n",
|
||
" <td>360.76650</td>\n",
|
||
" <td>81082140.25</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2021-04-21</th>\n",
|
||
" <td>411.5100</td>\n",
|
||
" <td>416.2900</td>\n",
|
||
" <td>411.3600</td>\n",
|
||
" <td>416.0700</td>\n",
|
||
" <td>66792983.0</td>\n",
|
||
" <td>413.254</td>\n",
|
||
" <td>405.6130</td>\n",
|
||
" <td>395.7386</td>\n",
|
||
" <td>361.26160</td>\n",
|
||
" <td>79887461.80</td>\n",
|
||
" </tr>\n",
|
||
" </tbody>\n",
|
||
"</table>\n",
|
||
"<p>5402 rows × 10 columns</p>\n",
|
||
"</div>"
|
||
],
|
||
"text/plain": [
|
||
" open high low close volume SMA_10 \\\n",
|
||
"date \n",
|
||
"1999-11-01 136.5000 137.0000 135.5625 135.5625 4006500.0 NaN \n",
|
||
"1999-11-02 135.9687 137.2500 134.5937 134.5937 6516900.0 NaN \n",
|
||
"1999-11-03 136.0000 136.3750 135.1250 135.5000 7222300.0 NaN \n",
|
||
"1999-11-04 136.7500 137.3593 135.7656 136.5312 7907500.0 NaN \n",
|
||
"1999-11-05 138.6250 139.1093 136.7812 137.8750 7431500.0 NaN \n",
|
||
"... ... ... ... ... ... ... \n",
|
||
"2021-04-15 413.7400 416.1600 413.6900 415.8700 60229842.0 409.151 \n",
|
||
"2021-04-16 417.2500 417.9100 415.7300 417.2600 82037278.0 410.816 \n",
|
||
"2021-04-19 416.2600 416.7400 413.7900 415.2100 78498496.0 411.701 \n",
|
||
"2021-04-20 413.9100 415.0859 410.5900 412.1700 81851828.0 412.306 \n",
|
||
"2021-04-21 411.5100 416.2900 411.3600 416.0700 66792983.0 413.254 \n",
|
||
"\n",
|
||
" SMA_20 SMA_50 SMA_200 VOL_SMA_20 \n",
|
||
"date \n",
|
||
"1999-11-01 NaN NaN NaN NaN \n",
|
||
"1999-11-02 NaN NaN NaN NaN \n",
|
||
"1999-11-03 NaN NaN NaN NaN \n",
|
||
"1999-11-04 NaN NaN NaN NaN \n",
|
||
"1999-11-05 NaN NaN NaN NaN \n",
|
||
"... ... ... ... ... \n",
|
||
"2021-04-15 400.7300 393.4496 359.19885 84100372.00 \n",
|
||
"2021-04-16 402.0190 394.1578 359.74335 82434780.85 \n",
|
||
"2021-04-19 403.3055 394.7382 360.26680 80678481.15 \n",
|
||
"2021-04-20 404.2845 395.2274 360.76650 81082140.25 \n",
|
||
"2021-04-21 405.6130 395.7386 361.26160 79887461.80 \n",
|
||
"\n",
|
||
"[5402 rows x 10 columns]"
|
||
]
|
||
},
|
||
"execution_count": 14,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
},
|
||
{
|
||
"data": {
|
||
"image/png": "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vQNWv+ost/lP5Y83xmkh7dXLaS396y844QSna2+vXtCsGYSFQXCw8wgK2v/sV43/Sa2FiRPh99+dILpoEWRkHLpf48bwzjvOAE4iIiIiIiLlUCitDgvvgPxUaHgWxPU7/PP06gVLl8IDDzjdel991XmUp1kzePppGD7cCbdV6ZFH4IknDlzXuLETmLt12//coEHVvq6IiIiIiNRZCqVVbdtPsGkc+IZA97FHHgwjIpwgevnl8PXXsG4dbN4MWVmQnQ05OQc+b9oEl1ziDDT0zDNOsK0KkyY5gdTHB0aOhL59nQBav37VnF9ERERERI5JCqVVKfUfmH+9s3z8oxDWvOrO3aOH8yiPywUffAD33ed0se3dG04/3blHtWPHw3/tefPgssuc5aefhnvuOfxziYiIiIiIlKDRd6vK+g9hSnfI2gzRPaDdf2u+DD4+cM01sGqV05oZFgZTpzph9p13nHtCPZWX54TRESOc1tb0dBg61Bl8SUREREREpIoolB6p/AyYcwXMvQoKsyHxChg0DXz8vVem6Gh46imnK+9VVzlde6+/Hs48E37+uexwai1Mnw5nn+0MUtSrF3z+OQQEwJ13wocfVv19qiIiIiIickxT990jkbIUZg6DtJXOPaQ9XocWV3i7VPtFR8P778PAgc7IvT/95DwiIpzRegMCwN9//3NurjPFS5F27WDAALj3XmcAJRERERERkSqmUHo4rIV178KC26AwB+p1gJO+hHrtvV2y0l16KQwe7HThff11SEpy5hItTUwM3HYb3HijBjESEREREZFqp1B6OBbeCatecpZbXA3dXwW/EO+WqSJxcc59pvfdB3v3Qn6+88jL2/9cUADHHQchtfxaRERERESkzlAoraykH51A6hMAPd+DxEu9XaLK8fGB2Fhvl0JERERERATQQEeVk7Mb5l3jLHd68ugLpCIiIiIiIrWMQmll/HUL5OyEuH7Q7v+8XRoREREREZGjnkKpp/YugM1fgl8o9P4IfHy9XSIREREREZGjnkKpp/55znludSOEJXq3LCIiIiIiInWEQqkn0tfClgng4w/t7vB2aUREREREROoMhVJPrHgerAuaXwohjbxdGhERERERkTpDobQi2Ttg/YfO8nF3e7UoIiIiIiIidY1CaUX2zAdjoPEQqHect0sjIiIiIiJSp/h5uwC1XuNz4bxNUJDp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\n",
|
||
"text/plain": [
|
||
"<Figure size 1152x720 with 1 Axes>"
|
||
]
|
||
},
|
||
"metadata": {
|
||
"needs_background": "light"
|
||
},
|
||
"output_type": "display_data"
|
||
}
|
||
],
|
||
"source": [
|
||
"watch.load(\"SPY\", plot=True, mas=True)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": []
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"## Easy to swap Strategies and run them"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"### Running Simple Strategy A"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 15,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"Strategy(name='A', ta=[{'kind': 'sma', 'length': 50}, {'kind': 'sma', 'length': 200}], description='TA Description', created='Wednesday April 21, 2021, NYSE: 17:14:16, Local: 21:14:16 PDT, Day 111/365 (30.00%)')"
|
||
]
|
||
},
|
||
"execution_count": 15,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"# Load custom_a into Watchlist and verify\n",
|
||
"watch.strategy = custom_a\n",
|
||
"# watch.debug = True\n",
|
||
"watch.strategy"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 16,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"[i] Loaded IWM[D]: IWM_D.csv\n"
|
||
]
|
||
},
|
||
{
|
||
"data": {
|
||
"text/html": [
|
||
"<div>\n",
|
||
"<style scoped>\n",
|
||
" .dataframe tbody tr th:only-of-type {\n",
|
||
" vertical-align: middle;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe tbody tr th {\n",
|
||
" vertical-align: top;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe thead th {\n",
|
||
" text-align: right;\n",
|
||
" }\n",
|
||
"</style>\n",
|
||
"<table border=\"1\" class=\"dataframe\">\n",
|
||
" <thead>\n",
|
||
" <tr style=\"text-align: right;\">\n",
|
||
" <th></th>\n",
|
||
" <th>open</th>\n",
|
||
" <th>high</th>\n",
|
||
" <th>low</th>\n",
|
||
" <th>close</th>\n",
|
||
" <th>volume</th>\n",
|
||
" <th>SMA_50</th>\n",
|
||
" <th>SMA_200</th>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>date</th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" </tr>\n",
|
||
" </thead>\n",
|
||
" <tbody>\n",
|
||
" <tr>\n",
|
||
" <th>2000-05-26</th>\n",
|
||
" <td>91.06</td>\n",
|
||
" <td>91.4400</td>\n",
|
||
" <td>90.63</td>\n",
|
||
" <td>91.44</td>\n",
|
||
" <td>37400.0</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2000-05-30</th>\n",
|
||
" <td>92.75</td>\n",
|
||
" <td>94.8100</td>\n",
|
||
" <td>92.75</td>\n",
|
||
" <td>94.81</td>\n",
|
||
" <td>28800.0</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2000-05-31</th>\n",
|
||
" <td>95.13</td>\n",
|
||
" <td>96.3800</td>\n",
|
||
" <td>95.13</td>\n",
|
||
" <td>95.75</td>\n",
|
||
" <td>18000.0</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2000-06-01</th>\n",
|
||
" <td>97.11</td>\n",
|
||
" <td>97.3100</td>\n",
|
||
" <td>97.11</td>\n",
|
||
" <td>97.31</td>\n",
|
||
" <td>3500.0</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2000-06-02</th>\n",
|
||
" <td>101.70</td>\n",
|
||
" <td>102.4000</td>\n",
|
||
" <td>101.70</td>\n",
|
||
" <td>102.40</td>\n",
|
||
" <td>14700.0</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>...</th>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2021-04-15</th>\n",
|
||
" <td>225.09</td>\n",
|
||
" <td>225.1200</td>\n",
|
||
" <td>222.26</td>\n",
|
||
" <td>224.29</td>\n",
|
||
" <td>20587325.0</td>\n",
|
||
" <td>223.0572</td>\n",
|
||
" <td>182.59330</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2021-04-16</th>\n",
|
||
" <td>225.40</td>\n",
|
||
" <td>225.6780</td>\n",
|
||
" <td>223.01</td>\n",
|
||
" <td>224.65</td>\n",
|
||
" <td>23942972.0</td>\n",
|
||
" <td>223.2652</td>\n",
|
||
" <td>183.00065</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2021-04-19</th>\n",
|
||
" <td>223.71</td>\n",
|
||
" <td>224.6571</td>\n",
|
||
" <td>219.94</td>\n",
|
||
" <td>221.73</td>\n",
|
||
" <td>25285933.0</td>\n",
|
||
" <td>223.3274</td>\n",
|
||
" <td>183.40020</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2021-04-20</th>\n",
|
||
" <td>220.77</td>\n",
|
||
" <td>221.6165</td>\n",
|
||
" <td>215.24</td>\n",
|
||
" <td>217.19</td>\n",
|
||
" <td>35570761.0</td>\n",
|
||
" <td>223.2382</td>\n",
|
||
" <td>183.77415</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2021-04-21</th>\n",
|
||
" <td>217.02</td>\n",
|
||
" <td>222.6200</td>\n",
|
||
" <td>215.50</td>\n",
|
||
" <td>222.50</td>\n",
|
||
" <td>31147779.0</td>\n",
|
||
" <td>223.1420</td>\n",
|
||
" <td>184.16950</td>\n",
|
||
" </tr>\n",
|
||
" </tbody>\n",
|
||
"</table>\n",
|
||
"<p>5258 rows × 7 columns</p>\n",
|
||
"</div>"
|
||
],
|
||
"text/plain": [
|
||
" open high low close volume SMA_50 SMA_200\n",
|
||
"date \n",
|
||
"2000-05-26 91.06 91.4400 90.63 91.44 37400.0 NaN NaN\n",
|
||
"2000-05-30 92.75 94.8100 92.75 94.81 28800.0 NaN NaN\n",
|
||
"2000-05-31 95.13 96.3800 95.13 95.75 18000.0 NaN NaN\n",
|
||
"2000-06-01 97.11 97.3100 97.11 97.31 3500.0 NaN NaN\n",
|
||
"2000-06-02 101.70 102.4000 101.70 102.40 14700.0 NaN NaN\n",
|
||
"... ... ... ... ... ... ... ...\n",
|
||
"2021-04-15 225.09 225.1200 222.26 224.29 20587325.0 223.0572 182.59330\n",
|
||
"2021-04-16 225.40 225.6780 223.01 224.65 23942972.0 223.2652 183.00065\n",
|
||
"2021-04-19 223.71 224.6571 219.94 221.73 25285933.0 223.3274 183.40020\n",
|
||
"2021-04-20 220.77 221.6165 215.24 217.19 35570761.0 223.2382 183.77415\n",
|
||
"2021-04-21 217.02 222.6200 215.50 222.50 31147779.0 223.1420 184.16950\n",
|
||
"\n",
|
||
"[5258 rows x 7 columns]"
|
||
]
|
||
},
|
||
"execution_count": 16,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"watch.load(\"IWM\")"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"### Running Simple Strategy B"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 17,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"Strategy(name='B', ta=[{'kind': 'ema', 'length': 8}, {'kind': 'ema', 'length': 21}, {'kind': 'log_return', 'cumulative': True}, {'kind': 'rsi'}, {'kind': 'supertrend'}], description='TA Description', created='Wednesday April 21, 2021, NYSE: 17:14:16, Local: 21:14:16 PDT, Day 111/365 (30.00%)')"
|
||
]
|
||
},
|
||
"execution_count": 17,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"# Load custom_b into Watchlist and verify\n",
|
||
"watch.strategy = custom_b\n",
|
||
"watch.strategy"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 18,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"[i] Loaded SPY[D]: SPY_D.csv\n"
|
||
]
|
||
},
|
||
{
|
||
"data": {
|
||
"text/html": [
|
||
"<div>\n",
|
||
"<style scoped>\n",
|
||
" .dataframe tbody tr th:only-of-type {\n",
|
||
" vertical-align: middle;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe tbody tr th {\n",
|
||
" vertical-align: top;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe thead th {\n",
|
||
" text-align: right;\n",
|
||
" }\n",
|
||
"</style>\n",
|
||
"<table border=\"1\" class=\"dataframe\">\n",
|
||
" <thead>\n",
|
||
" <tr style=\"text-align: right;\">\n",
|
||
" <th></th>\n",
|
||
" <th>open</th>\n",
|
||
" <th>high</th>\n",
|
||
" <th>low</th>\n",
|
||
" <th>close</th>\n",
|
||
" <th>volume</th>\n",
|
||
" <th>EMA_8</th>\n",
|
||
" <th>EMA_21</th>\n",
|
||
" <th>CUMLOGRET_1</th>\n",
|
||
" <th>RSI_14</th>\n",
|
||
" <th>SUPERT_7_3.0</th>\n",
|
||
" <th>SUPERTd_7_3.0</th>\n",
|
||
" <th>SUPERTl_7_3.0</th>\n",
|
||
" <th>SUPERTs_7_3.0</th>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>date</th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" </tr>\n",
|
||
" </thead>\n",
|
||
" <tbody>\n",
|
||
" <tr>\n",
|
||
" <th>1999-11-01</th>\n",
|
||
" <td>136.5000</td>\n",
|
||
" <td>137.0000</td>\n",
|
||
" <td>135.5625</td>\n",
|
||
" <td>135.5625</td>\n",
|
||
" <td>4006500.0</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>0.000000</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>0.000000</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>1999-11-02</th>\n",
|
||
" <td>135.9687</td>\n",
|
||
" <td>137.2500</td>\n",
|
||
" <td>134.5937</td>\n",
|
||
" <td>134.5937</td>\n",
|
||
" <td>6516900.0</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>-0.007172</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>1999-11-03</th>\n",
|
||
" <td>136.0000</td>\n",
|
||
" <td>136.3750</td>\n",
|
||
" <td>135.1250</td>\n",
|
||
" <td>135.5000</td>\n",
|
||
" <td>7222300.0</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>-0.000461</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>1999-11-04</th>\n",
|
||
" <td>136.7500</td>\n",
|
||
" <td>137.3593</td>\n",
|
||
" <td>135.7656</td>\n",
|
||
" <td>136.5312</td>\n",
|
||
" <td>7907500.0</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>0.007120</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>1999-11-05</th>\n",
|
||
" <td>138.6250</td>\n",
|
||
" <td>139.1093</td>\n",
|
||
" <td>136.7812</td>\n",
|
||
" <td>137.8750</td>\n",
|
||
" <td>7431500.0</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>0.016915</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>...</th>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2021-04-15</th>\n",
|
||
" <td>413.7400</td>\n",
|
||
" <td>416.1600</td>\n",
|
||
" <td>413.6900</td>\n",
|
||
" <td>415.8700</td>\n",
|
||
" <td>60229842.0</td>\n",
|
||
" <td>410.181984</td>\n",
|
||
" <td>402.967345</td>\n",
|
||
" <td>1.120940</td>\n",
|
||
" <td>73.655303</td>\n",
|
||
" <td>404.511242</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>404.511242</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2021-04-16</th>\n",
|
||
" <td>417.2500</td>\n",
|
||
" <td>417.9100</td>\n",
|
||
" <td>415.7300</td>\n",
|
||
" <td>417.2600</td>\n",
|
||
" <td>82037278.0</td>\n",
|
||
" <td>411.754876</td>\n",
|
||
" <td>404.266677</td>\n",
|
||
" <td>1.124277</td>\n",
|
||
" <td>74.749576</td>\n",
|
||
" <td>406.959636</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>406.959636</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2021-04-19</th>\n",
|
||
" <td>416.2600</td>\n",
|
||
" <td>416.7400</td>\n",
|
||
" <td>413.7900</td>\n",
|
||
" <td>415.2100</td>\n",
|
||
" <td>78498496.0</td>\n",
|
||
" <td>412.522682</td>\n",
|
||
" <td>405.261524</td>\n",
|
||
" <td>1.119352</td>\n",
|
||
" <td>70.123431</td>\n",
|
||
" <td>406.959636</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>406.959636</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2021-04-20</th>\n",
|
||
" <td>413.9100</td>\n",
|
||
" <td>415.0859</td>\n",
|
||
" <td>410.5900</td>\n",
|
||
" <td>412.1700</td>\n",
|
||
" <td>81851828.0</td>\n",
|
||
" <td>412.444308</td>\n",
|
||
" <td>405.889568</td>\n",
|
||
" <td>1.112003</td>\n",
|
||
" <td>63.816107</td>\n",
|
||
" <td>406.959636</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>406.959636</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2021-04-21</th>\n",
|
||
" <td>411.5100</td>\n",
|
||
" <td>416.2900</td>\n",
|
||
" <td>411.3600</td>\n",
|
||
" <td>416.0700</td>\n",
|
||
" <td>66792983.0</td>\n",
|
||
" <td>413.250017</td>\n",
|
||
" <td>406.815062</td>\n",
|
||
" <td>1.121421</td>\n",
|
||
" <td>67.815585</td>\n",
|
||
" <td>406.959636</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>406.959636</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" </tr>\n",
|
||
" </tbody>\n",
|
||
"</table>\n",
|
||
"<p>5402 rows × 13 columns</p>\n",
|
||
"</div>"
|
||
],
|
||
"text/plain": [
|
||
" open high low close volume EMA_8 \\\n",
|
||
"date \n",
|
||
"1999-11-01 136.5000 137.0000 135.5625 135.5625 4006500.0 NaN \n",
|
||
"1999-11-02 135.9687 137.2500 134.5937 134.5937 6516900.0 NaN \n",
|
||
"1999-11-03 136.0000 136.3750 135.1250 135.5000 7222300.0 NaN \n",
|
||
"1999-11-04 136.7500 137.3593 135.7656 136.5312 7907500.0 NaN \n",
|
||
"1999-11-05 138.6250 139.1093 136.7812 137.8750 7431500.0 NaN \n",
|
||
"... ... ... ... ... ... ... \n",
|
||
"2021-04-15 413.7400 416.1600 413.6900 415.8700 60229842.0 410.181984 \n",
|
||
"2021-04-16 417.2500 417.9100 415.7300 417.2600 82037278.0 411.754876 \n",
|
||
"2021-04-19 416.2600 416.7400 413.7900 415.2100 78498496.0 412.522682 \n",
|
||
"2021-04-20 413.9100 415.0859 410.5900 412.1700 81851828.0 412.444308 \n",
|
||
"2021-04-21 411.5100 416.2900 411.3600 416.0700 66792983.0 413.250017 \n",
|
||
"\n",
|
||
" EMA_21 CUMLOGRET_1 RSI_14 SUPERT_7_3.0 SUPERTd_7_3.0 \\\n",
|
||
"date \n",
|
||
"1999-11-01 NaN 0.000000 NaN 0.000000 1 \n",
|
||
"1999-11-02 NaN -0.007172 NaN NaN 1 \n",
|
||
"1999-11-03 NaN -0.000461 NaN NaN 1 \n",
|
||
"1999-11-04 NaN 0.007120 NaN NaN 1 \n",
|
||
"1999-11-05 NaN 0.016915 NaN NaN 1 \n",
|
||
"... ... ... ... ... ... \n",
|
||
"2021-04-15 402.967345 1.120940 73.655303 404.511242 1 \n",
|
||
"2021-04-16 404.266677 1.124277 74.749576 406.959636 1 \n",
|
||
"2021-04-19 405.261524 1.119352 70.123431 406.959636 1 \n",
|
||
"2021-04-20 405.889568 1.112003 63.816107 406.959636 1 \n",
|
||
"2021-04-21 406.815062 1.121421 67.815585 406.959636 1 \n",
|
||
"\n",
|
||
" SUPERTl_7_3.0 SUPERTs_7_3.0 \n",
|
||
"date \n",
|
||
"1999-11-01 NaN NaN \n",
|
||
"1999-11-02 NaN NaN \n",
|
||
"1999-11-03 NaN NaN \n",
|
||
"1999-11-04 NaN NaN \n",
|
||
"1999-11-05 NaN NaN \n",
|
||
"... ... ... \n",
|
||
"2021-04-15 404.511242 NaN \n",
|
||
"2021-04-16 406.959636 NaN \n",
|
||
"2021-04-19 406.959636 NaN \n",
|
||
"2021-04-20 406.959636 NaN \n",
|
||
"2021-04-21 406.959636 NaN \n",
|
||
"\n",
|
||
"[5402 rows x 13 columns]"
|
||
]
|
||
},
|
||
"execution_count": 18,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"watch.load(\"SPY\")"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"### Running Bad Strategy. (Misspelled indicator)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 19,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"Strategy(name='Runtime Failure', ta=[{'kind': 'percet_return'}], description='TA Description', created='Wednesday April 21, 2021, NYSE: 17:14:16, Local: 21:14:16 PDT, Day 111/365 (30.00%)')"
|
||
]
|
||
},
|
||
"execution_count": 19,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"# Load custom_run_failure into Watchlist and verify\n",
|
||
"watch.strategy = custom_run_failure\n",
|
||
"watch.strategy"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 20,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"[i] Loaded IWM[D]: IWM_D.csv\n",
|
||
"[X] Oops! 'AnalysisIndicators' object has no attribute 'percet_return'\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"try:\n",
|
||
" iwm = watch.load(\"IWM\")\n",
|
||
"except AttributeError as error:\n",
|
||
" print(f\"[X] Oops! {error}\")"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": []
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"# Indicator Composition/Chaining\n",
|
||
"- When you need an indicator to depend on the value of a prior indicator\n",
|
||
"- Utilitze _prefix_ or _suffix_ to help identify unique columns or avoid column name clashes."
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"### Volume MAs and MA chains"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 21,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"Strategy(name='Volume MAs and Price MA chain', ta=[{'kind': 'ema', 'close': 'volume', 'length': 10, 'prefix': 'VOLUME'}, {'kind': 'sma', 'close': 'volume', 'length': 20, 'prefix': 'VOLUME'}, {'kind': 'ema', 'length': 5}, {'kind': 'linreg', 'close': 'EMA_5', 'length': 8, 'prefix': 'EMA_5'}], description='TA Description', created='Wednesday April 21, 2021, NYSE: 17:14:16, Local: 21:14:16 PDT, Day 111/365 (30.00%)')"
|
||
]
|
||
},
|
||
"execution_count": 21,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"# Set EMA's and SMA's 'close' to 'volume' to create Volume MAs, prefix 'volume' MAs with 'VOLUME' so easy to identify the column\n",
|
||
"# Take a price EMA and apply LINREG from EMA's output\n",
|
||
"volmas_price_ma_chain = [\n",
|
||
" {\"kind\":\"ema\", \"close\": \"volume\", \"length\": 10, \"prefix\": \"VOLUME\"},\n",
|
||
" {\"kind\":\"sma\", \"close\": \"volume\", \"length\": 20, \"prefix\": \"VOLUME\"},\n",
|
||
" {\"kind\":\"ema\", \"length\": 5},\n",
|
||
" {\"kind\":\"linreg\", \"close\": \"EMA_5\", \"length\": 8, \"prefix\": \"EMA_5\"},\n",
|
||
"]\n",
|
||
"vp_ma_chain_ta = ta.Strategy(\"Volume MAs and Price MA chain\", volmas_price_ma_chain)\n",
|
||
"vp_ma_chain_ta"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 22,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"'Volume MAs and Price MA chain'"
|
||
]
|
||
},
|
||
"execution_count": 22,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"# Update the Watchlist\n",
|
||
"watch.strategy = vp_ma_chain_ta\n",
|
||
"watch.strategy.name"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 23,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"[i] Loaded SPY[D]: SPY_D.csv\n"
|
||
]
|
||
},
|
||
{
|
||
"data": {
|
||
"text/html": [
|
||
"<div>\n",
|
||
"<style scoped>\n",
|
||
" .dataframe tbody tr th:only-of-type {\n",
|
||
" vertical-align: middle;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe tbody tr th {\n",
|
||
" vertical-align: top;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe thead th {\n",
|
||
" text-align: right;\n",
|
||
" }\n",
|
||
"</style>\n",
|
||
"<table border=\"1\" class=\"dataframe\">\n",
|
||
" <thead>\n",
|
||
" <tr style=\"text-align: right;\">\n",
|
||
" <th></th>\n",
|
||
" <th>open</th>\n",
|
||
" <th>high</th>\n",
|
||
" <th>low</th>\n",
|
||
" <th>close</th>\n",
|
||
" <th>volume</th>\n",
|
||
" <th>VOLUME_EMA_10</th>\n",
|
||
" <th>VOLUME_SMA_20</th>\n",
|
||
" <th>EMA_5</th>\n",
|
||
" <th>EMA_5_LR_8</th>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>date</th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" </tr>\n",
|
||
" </thead>\n",
|
||
" <tbody>\n",
|
||
" <tr>\n",
|
||
" <th>1999-11-01</th>\n",
|
||
" <td>136.5000</td>\n",
|
||
" <td>137.0000</td>\n",
|
||
" <td>135.5625</td>\n",
|
||
" <td>135.5625</td>\n",
|
||
" <td>4006500.0</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>1999-11-02</th>\n",
|
||
" <td>135.9687</td>\n",
|
||
" <td>137.2500</td>\n",
|
||
" <td>134.5937</td>\n",
|
||
" <td>134.5937</td>\n",
|
||
" <td>6516900.0</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>1999-11-03</th>\n",
|
||
" <td>136.0000</td>\n",
|
||
" <td>136.3750</td>\n",
|
||
" <td>135.1250</td>\n",
|
||
" <td>135.5000</td>\n",
|
||
" <td>7222300.0</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>1999-11-04</th>\n",
|
||
" <td>136.7500</td>\n",
|
||
" <td>137.3593</td>\n",
|
||
" <td>135.7656</td>\n",
|
||
" <td>136.5312</td>\n",
|
||
" <td>7907500.0</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>1999-11-05</th>\n",
|
||
" <td>138.6250</td>\n",
|
||
" <td>139.1093</td>\n",
|
||
" <td>136.7812</td>\n",
|
||
" <td>137.8750</td>\n",
|
||
" <td>7431500.0</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>136.012480</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>...</th>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2021-04-15</th>\n",
|
||
" <td>413.7400</td>\n",
|
||
" <td>416.1600</td>\n",
|
||
" <td>413.6900</td>\n",
|
||
" <td>415.8700</td>\n",
|
||
" <td>60229842.0</td>\n",
|
||
" <td>6.719201e+07</td>\n",
|
||
" <td>84100372.00</td>\n",
|
||
" <td>412.326473</td>\n",
|
||
" <td>411.148064</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2021-04-16</th>\n",
|
||
" <td>417.2500</td>\n",
|
||
" <td>417.9100</td>\n",
|
||
" <td>415.7300</td>\n",
|
||
" <td>417.2600</td>\n",
|
||
" <td>82037278.0</td>\n",
|
||
" <td>6.989115e+07</td>\n",
|
||
" <td>82434780.85</td>\n",
|
||
" <td>413.970982</td>\n",
|
||
" <td>412.535178</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2021-04-19</th>\n",
|
||
" <td>416.2600</td>\n",
|
||
" <td>416.7400</td>\n",
|
||
" <td>413.7900</td>\n",
|
||
" <td>415.2100</td>\n",
|
||
" <td>78498496.0</td>\n",
|
||
" <td>7.145612e+07</td>\n",
|
||
" <td>80678481.15</td>\n",
|
||
" <td>414.383988</td>\n",
|
||
" <td>413.565317</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2021-04-20</th>\n",
|
||
" <td>413.9100</td>\n",
|
||
" <td>415.0859</td>\n",
|
||
" <td>410.5900</td>\n",
|
||
" <td>412.1700</td>\n",
|
||
" <td>81851828.0</td>\n",
|
||
" <td>7.334625e+07</td>\n",
|
||
" <td>81082140.25</td>\n",
|
||
" <td>413.645992</td>\n",
|
||
" <td>413.940568</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2021-04-21</th>\n",
|
||
" <td>411.5100</td>\n",
|
||
" <td>416.2900</td>\n",
|
||
" <td>411.3600</td>\n",
|
||
" <td>416.0700</td>\n",
|
||
" <td>66792983.0</td>\n",
|
||
" <td>7.215475e+07</td>\n",
|
||
" <td>79887461.80</td>\n",
|
||
" <td>414.453995</td>\n",
|
||
" <td>414.381569</td>\n",
|
||
" </tr>\n",
|
||
" </tbody>\n",
|
||
"</table>\n",
|
||
"<p>5402 rows × 9 columns</p>\n",
|
||
"</div>"
|
||
],
|
||
"text/plain": [
|
||
" open high low close volume VOLUME_EMA_10 \\\n",
|
||
"date \n",
|
||
"1999-11-01 136.5000 137.0000 135.5625 135.5625 4006500.0 NaN \n",
|
||
"1999-11-02 135.9687 137.2500 134.5937 134.5937 6516900.0 NaN \n",
|
||
"1999-11-03 136.0000 136.3750 135.1250 135.5000 7222300.0 NaN \n",
|
||
"1999-11-04 136.7500 137.3593 135.7656 136.5312 7907500.0 NaN \n",
|
||
"1999-11-05 138.6250 139.1093 136.7812 137.8750 7431500.0 NaN \n",
|
||
"... ... ... ... ... ... ... \n",
|
||
"2021-04-15 413.7400 416.1600 413.6900 415.8700 60229842.0 6.719201e+07 \n",
|
||
"2021-04-16 417.2500 417.9100 415.7300 417.2600 82037278.0 6.989115e+07 \n",
|
||
"2021-04-19 416.2600 416.7400 413.7900 415.2100 78498496.0 7.145612e+07 \n",
|
||
"2021-04-20 413.9100 415.0859 410.5900 412.1700 81851828.0 7.334625e+07 \n",
|
||
"2021-04-21 411.5100 416.2900 411.3600 416.0700 66792983.0 7.215475e+07 \n",
|
||
"\n",
|
||
" VOLUME_SMA_20 EMA_5 EMA_5_LR_8 \n",
|
||
"date \n",
|
||
"1999-11-01 NaN NaN NaN \n",
|
||
"1999-11-02 NaN NaN NaN \n",
|
||
"1999-11-03 NaN NaN NaN \n",
|
||
"1999-11-04 NaN NaN NaN \n",
|
||
"1999-11-05 NaN 136.012480 NaN \n",
|
||
"... ... ... ... \n",
|
||
"2021-04-15 84100372.00 412.326473 411.148064 \n",
|
||
"2021-04-16 82434780.85 413.970982 412.535178 \n",
|
||
"2021-04-19 80678481.15 414.383988 413.565317 \n",
|
||
"2021-04-20 81082140.25 413.645992 413.940568 \n",
|
||
"2021-04-21 79887461.80 414.453995 414.381569 \n",
|
||
"\n",
|
||
"[5402 rows x 9 columns]"
|
||
]
|
||
},
|
||
"execution_count": 23,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"spy = watch.load(\"SPY\")\n",
|
||
"spy"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": []
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"### MACD BBANDS"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 24,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"Strategy(name='MACD BBands', ta=[{'kind': 'macd'}, {'kind': 'bbands', 'close': 'MACD_12_26_9', 'length': 20, 'ddof': 0, 'prefix': 'MACD'}], description='BBANDS_20 applied to MACD', created='Wednesday April 21, 2021, NYSE: 17:14:16, Local: 21:14:16 PDT, Day 111/365 (30.00%)')"
|
||
]
|
||
},
|
||
"execution_count": 24,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"# MACD is the initial indicator that BBANDS depends on.\n",
|
||
"# Set BBANDS's 'close' to MACD's main signal, in this case 'MACD_12_26_9' and add a prefix (or suffix) so it's easier to identify\n",
|
||
"macd_bands_ta = [\n",
|
||
" {\"kind\":\"macd\"},\n",
|
||
" {\"kind\":\"bbands\", \"close\": \"MACD_12_26_9\", \"length\": 20, \"ddof\": 0, \"prefix\": \"MACD\"}\n",
|
||
"]\n",
|
||
"macd_bands_ta = ta.Strategy(\"MACD BBands\", macd_bands_ta, f\"BBANDS_{macd_bands_ta[1]['length']} applied to MACD\")\n",
|
||
"macd_bands_ta"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 25,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"'MACD BBands'"
|
||
]
|
||
},
|
||
"execution_count": 25,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"# Update the Watchlist\n",
|
||
"watch.strategy = macd_bands_ta\n",
|
||
"watch.strategy.name"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 26,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"[i] Loaded SPY[D]: SPY_D.csv\n"
|
||
]
|
||
},
|
||
{
|
||
"data": {
|
||
"text/html": [
|
||
"<div>\n",
|
||
"<style scoped>\n",
|
||
" .dataframe tbody tr th:only-of-type {\n",
|
||
" vertical-align: middle;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe tbody tr th {\n",
|
||
" vertical-align: top;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe thead th {\n",
|
||
" text-align: right;\n",
|
||
" }\n",
|
||
"</style>\n",
|
||
"<table border=\"1\" class=\"dataframe\">\n",
|
||
" <thead>\n",
|
||
" <tr style=\"text-align: right;\">\n",
|
||
" <th></th>\n",
|
||
" <th>open</th>\n",
|
||
" <th>high</th>\n",
|
||
" <th>low</th>\n",
|
||
" <th>close</th>\n",
|
||
" <th>volume</th>\n",
|
||
" <th>MACD_12_26_9</th>\n",
|
||
" <th>MACDh_12_26_9</th>\n",
|
||
" <th>MACDs_12_26_9</th>\n",
|
||
" <th>MACD_BBL_20_2.0</th>\n",
|
||
" <th>MACD_BBM_20_2.0</th>\n",
|
||
" <th>MACD_BBU_20_2.0</th>\n",
|
||
" <th>MACD_BBB_20_2.0</th>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>date</th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" </tr>\n",
|
||
" </thead>\n",
|
||
" <tbody>\n",
|
||
" <tr>\n",
|
||
" <th>1999-11-01</th>\n",
|
||
" <td>136.5000</td>\n",
|
||
" <td>137.0000</td>\n",
|
||
" <td>135.5625</td>\n",
|
||
" <td>135.5625</td>\n",
|
||
" <td>4006500.0</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>1999-11-02</th>\n",
|
||
" <td>135.9687</td>\n",
|
||
" <td>137.2500</td>\n",
|
||
" <td>134.5937</td>\n",
|
||
" <td>134.5937</td>\n",
|
||
" <td>6516900.0</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>1999-11-03</th>\n",
|
||
" <td>136.0000</td>\n",
|
||
" <td>136.3750</td>\n",
|
||
" <td>135.1250</td>\n",
|
||
" <td>135.5000</td>\n",
|
||
" <td>7222300.0</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>1999-11-04</th>\n",
|
||
" <td>136.7500</td>\n",
|
||
" <td>137.3593</td>\n",
|
||
" <td>135.7656</td>\n",
|
||
" <td>136.5312</td>\n",
|
||
" <td>7907500.0</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>1999-11-05</th>\n",
|
||
" <td>138.6250</td>\n",
|
||
" <td>139.1093</td>\n",
|
||
" <td>136.7812</td>\n",
|
||
" <td>137.8750</td>\n",
|
||
" <td>7431500.0</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>...</th>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2021-04-15</th>\n",
|
||
" <td>413.7400</td>\n",
|
||
" <td>416.1600</td>\n",
|
||
" <td>413.6900</td>\n",
|
||
" <td>415.8700</td>\n",
|
||
" <td>60229842.0</td>\n",
|
||
" <td>6.478994</td>\n",
|
||
" <td>1.251027</td>\n",
|
||
" <td>5.227967</td>\n",
|
||
" <td>0.107034</td>\n",
|
||
" <td>3.533810</td>\n",
|
||
" <td>6.960587</td>\n",
|
||
" <td>193.942317</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2021-04-16</th>\n",
|
||
" <td>417.2500</td>\n",
|
||
" <td>417.9100</td>\n",
|
||
" <td>415.7300</td>\n",
|
||
" <td>417.2600</td>\n",
|
||
" <td>82037278.0</td>\n",
|
||
" <td>6.775655</td>\n",
|
||
" <td>1.238150</td>\n",
|
||
" <td>5.537504</td>\n",
|
||
" <td>0.033429</td>\n",
|
||
" <td>3.732053</td>\n",
|
||
" <td>7.430676</td>\n",
|
||
" <td>198.208557</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2021-04-19</th>\n",
|
||
" <td>416.2600</td>\n",
|
||
" <td>416.7400</td>\n",
|
||
" <td>413.7900</td>\n",
|
||
" <td>415.2100</td>\n",
|
||
" <td>78498496.0</td>\n",
|
||
" <td>6.767333</td>\n",
|
||
" <td>0.983863</td>\n",
|
||
" <td>5.783470</td>\n",
|
||
" <td>0.063804</td>\n",
|
||
" <td>3.947467</td>\n",
|
||
" <td>7.831129</td>\n",
|
||
" <td>196.767334</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2021-04-20</th>\n",
|
||
" <td>413.9100</td>\n",
|
||
" <td>415.0859</td>\n",
|
||
" <td>410.5900</td>\n",
|
||
" <td>412.1700</td>\n",
|
||
" <td>81851828.0</td>\n",
|
||
" <td>6.441185</td>\n",
|
||
" <td>0.526172</td>\n",
|
||
" <td>5.915013</td>\n",
|
||
" <td>0.184685</td>\n",
|
||
" <td>4.149350</td>\n",
|
||
" <td>8.114015</td>\n",
|
||
" <td>191.098113</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2021-04-21</th>\n",
|
||
" <td>411.5100</td>\n",
|
||
" <td>416.2900</td>\n",
|
||
" <td>411.3600</td>\n",
|
||
" <td>416.0700</td>\n",
|
||
" <td>66792983.0</td>\n",
|
||
" <td>6.423364</td>\n",
|
||
" <td>0.406681</td>\n",
|
||
" <td>6.016683</td>\n",
|
||
" <td>0.402246</td>\n",
|
||
" <td>4.366212</td>\n",
|
||
" <td>8.330177</td>\n",
|
||
" <td>181.574596</td>\n",
|
||
" </tr>\n",
|
||
" </tbody>\n",
|
||
"</table>\n",
|
||
"<p>5402 rows × 12 columns</p>\n",
|
||
"</div>"
|
||
],
|
||
"text/plain": [
|
||
" open high low close volume MACD_12_26_9 \\\n",
|
||
"date \n",
|
||
"1999-11-01 136.5000 137.0000 135.5625 135.5625 4006500.0 NaN \n",
|
||
"1999-11-02 135.9687 137.2500 134.5937 134.5937 6516900.0 NaN \n",
|
||
"1999-11-03 136.0000 136.3750 135.1250 135.5000 7222300.0 NaN \n",
|
||
"1999-11-04 136.7500 137.3593 135.7656 136.5312 7907500.0 NaN \n",
|
||
"1999-11-05 138.6250 139.1093 136.7812 137.8750 7431500.0 NaN \n",
|
||
"... ... ... ... ... ... ... \n",
|
||
"2021-04-15 413.7400 416.1600 413.6900 415.8700 60229842.0 6.478994 \n",
|
||
"2021-04-16 417.2500 417.9100 415.7300 417.2600 82037278.0 6.775655 \n",
|
||
"2021-04-19 416.2600 416.7400 413.7900 415.2100 78498496.0 6.767333 \n",
|
||
"2021-04-20 413.9100 415.0859 410.5900 412.1700 81851828.0 6.441185 \n",
|
||
"2021-04-21 411.5100 416.2900 411.3600 416.0700 66792983.0 6.423364 \n",
|
||
"\n",
|
||
" MACDh_12_26_9 MACDs_12_26_9 MACD_BBL_20_2.0 MACD_BBM_20_2.0 \\\n",
|
||
"date \n",
|
||
"1999-11-01 NaN NaN NaN NaN \n",
|
||
"1999-11-02 NaN NaN NaN NaN \n",
|
||
"1999-11-03 NaN NaN NaN NaN \n",
|
||
"1999-11-04 NaN NaN NaN NaN \n",
|
||
"1999-11-05 NaN NaN NaN NaN \n",
|
||
"... ... ... ... ... \n",
|
||
"2021-04-15 1.251027 5.227967 0.107034 3.533810 \n",
|
||
"2021-04-16 1.238150 5.537504 0.033429 3.732053 \n",
|
||
"2021-04-19 0.983863 5.783470 0.063804 3.947467 \n",
|
||
"2021-04-20 0.526172 5.915013 0.184685 4.149350 \n",
|
||
"2021-04-21 0.406681 6.016683 0.402246 4.366212 \n",
|
||
"\n",
|
||
" MACD_BBU_20_2.0 MACD_BBB_20_2.0 \n",
|
||
"date \n",
|
||
"1999-11-01 NaN NaN \n",
|
||
"1999-11-02 NaN NaN \n",
|
||
"1999-11-03 NaN NaN \n",
|
||
"1999-11-04 NaN NaN \n",
|
||
"1999-11-05 NaN NaN \n",
|
||
"... ... ... \n",
|
||
"2021-04-15 6.960587 193.942317 \n",
|
||
"2021-04-16 7.430676 198.208557 \n",
|
||
"2021-04-19 7.831129 196.767334 \n",
|
||
"2021-04-20 8.114015 191.098113 \n",
|
||
"2021-04-21 8.330177 181.574596 \n",
|
||
"\n",
|
||
"[5402 rows x 12 columns]"
|
||
]
|
||
},
|
||
"execution_count": 26,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"spy = watch.load(\"SPY\")\n",
|
||
"spy"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": []
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"# Comprehensive Strategy"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"### MACD and RSI Momentum with BBANDS and SMAs and Cumulative Log Returns"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 27,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"Strategy(name='Momo, Bands and SMAs and Cumulative Log Returns', ta=[{'kind': 'sma', 'length': 50}, {'kind': 'sma', 'length': 200}, {'kind': 'bbands', 'length': 20, 'ddof': 0}, {'kind': 'macd'}, {'kind': 'rsi'}, {'kind': 'log_return', 'cumulative': True}, {'kind': 'sma', 'close': 'CUMLOGRET_1', 'length': 5, 'suffix': 'CUMLOGRET'}], description='MACD and RSI Momo with BBANDS and SMAs 50 & 200 and Cumulative Log Returns', created='Wednesday April 21, 2021, NYSE: 17:14:16, Local: 21:14:16 PDT, Day 111/365 (30.00%)')"
|
||
]
|
||
},
|
||
"execution_count": 27,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"momo_bands_sma_ta = [\n",
|
||
" {\"kind\":\"sma\", \"length\": 50},\n",
|
||
" {\"kind\":\"sma\", \"length\": 200},\n",
|
||
" {\"kind\":\"bbands\", \"length\": 20, \"ddof\": 0},\n",
|
||
" {\"kind\":\"macd\"},\n",
|
||
" {\"kind\":\"rsi\"},\n",
|
||
" {\"kind\":\"log_return\", \"cumulative\": True},\n",
|
||
" {\"kind\":\"sma\", \"close\": \"CUMLOGRET_1\", \"length\": 5, \"suffix\": \"CUMLOGRET\"},\n",
|
||
"]\n",
|
||
"momo_bands_sma_strategy = ta.Strategy(\n",
|
||
" \"Momo, Bands and SMAs and Cumulative Log Returns\", # name\n",
|
||
" momo_bands_sma_ta, # ta\n",
|
||
" \"MACD and RSI Momo with BBANDS and SMAs 50 & 200 and Cumulative Log Returns\" # description\n",
|
||
")\n",
|
||
"momo_bands_sma_strategy"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 28,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"'Momo, Bands and SMAs and Cumulative Log Returns'"
|
||
]
|
||
},
|
||
"execution_count": 28,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"# Update the Watchlist\n",
|
||
"watch.strategy = momo_bands_sma_strategy\n",
|
||
"watch.strategy.name"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 29,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"[i] Loaded SPY[D]: SPY_D.csv\n"
|
||
]
|
||
},
|
||
{
|
||
"data": {
|
||
"text/html": [
|
||
"<div>\n",
|
||
"<style scoped>\n",
|
||
" .dataframe tbody tr th:only-of-type {\n",
|
||
" vertical-align: middle;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe tbody tr th {\n",
|
||
" vertical-align: top;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe thead th {\n",
|
||
" text-align: right;\n",
|
||
" }\n",
|
||
"</style>\n",
|
||
"<table border=\"1\" class=\"dataframe\">\n",
|
||
" <thead>\n",
|
||
" <tr style=\"text-align: right;\">\n",
|
||
" <th></th>\n",
|
||
" <th>open</th>\n",
|
||
" <th>high</th>\n",
|
||
" <th>low</th>\n",
|
||
" <th>close</th>\n",
|
||
" <th>volume</th>\n",
|
||
" <th>SMA_50</th>\n",
|
||
" <th>SMA_200</th>\n",
|
||
" <th>BBL_20_2.0</th>\n",
|
||
" <th>BBM_20_2.0</th>\n",
|
||
" <th>BBU_20_2.0</th>\n",
|
||
" <th>BBB_20_2.0</th>\n",
|
||
" <th>MACD_12_26_9</th>\n",
|
||
" <th>MACDh_12_26_9</th>\n",
|
||
" <th>MACDs_12_26_9</th>\n",
|
||
" <th>RSI_14</th>\n",
|
||
" <th>CUMLOGRET_1</th>\n",
|
||
" <th>SMA_5_CUMLOGRET</th>\n",
|
||
" <th>0</th>\n",
|
||
" <th>30</th>\n",
|
||
" <th>70</th>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>date</th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" </tr>\n",
|
||
" </thead>\n",
|
||
" <tbody>\n",
|
||
" <tr>\n",
|
||
" <th>2021-04-15</th>\n",
|
||
" <td>413.74</td>\n",
|
||
" <td>416.1600</td>\n",
|
||
" <td>413.69</td>\n",
|
||
" <td>415.87</td>\n",
|
||
" <td>60229842.0</td>\n",
|
||
" <td>393.4496</td>\n",
|
||
" <td>359.19885</td>\n",
|
||
" <td>381.895791</td>\n",
|
||
" <td>400.7300</td>\n",
|
||
" <td>419.564209</td>\n",
|
||
" <td>9.399949</td>\n",
|
||
" <td>6.478994</td>\n",
|
||
" <td>1.251027</td>\n",
|
||
" <td>5.227967</td>\n",
|
||
" <td>73.655303</td>\n",
|
||
" <td>1.120940</td>\n",
|
||
" <td>1.113188</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>30</td>\n",
|
||
" <td>70</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2021-04-16</th>\n",
|
||
" <td>417.25</td>\n",
|
||
" <td>417.9100</td>\n",
|
||
" <td>415.73</td>\n",
|
||
" <td>417.26</td>\n",
|
||
" <td>82037278.0</td>\n",
|
||
" <td>394.1578</td>\n",
|
||
" <td>359.74335</td>\n",
|
||
" <td>382.340515</td>\n",
|
||
" <td>402.0190</td>\n",
|
||
" <td>421.697485</td>\n",
|
||
" <td>9.789828</td>\n",
|
||
" <td>6.775655</td>\n",
|
||
" <td>1.238150</td>\n",
|
||
" <td>5.537504</td>\n",
|
||
" <td>74.749576</td>\n",
|
||
" <td>1.124277</td>\n",
|
||
" <td>1.115973</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>30</td>\n",
|
||
" <td>70</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2021-04-19</th>\n",
|
||
" <td>416.26</td>\n",
|
||
" <td>416.7400</td>\n",
|
||
" <td>413.79</td>\n",
|
||
" <td>415.21</td>\n",
|
||
" <td>78498496.0</td>\n",
|
||
" <td>394.7382</td>\n",
|
||
" <td>360.26680</td>\n",
|
||
" <td>383.714538</td>\n",
|
||
" <td>403.3055</td>\n",
|
||
" <td>422.896462</td>\n",
|
||
" <td>9.715197</td>\n",
|
||
" <td>6.767333</td>\n",
|
||
" <td>0.983863</td>\n",
|
||
" <td>5.783470</td>\n",
|
||
" <td>70.123431</td>\n",
|
||
" <td>1.119352</td>\n",
|
||
" <td>1.117700</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>30</td>\n",
|
||
" <td>70</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2021-04-20</th>\n",
|
||
" <td>413.91</td>\n",
|
||
" <td>415.0859</td>\n",
|
||
" <td>410.59</td>\n",
|
||
" <td>412.17</td>\n",
|
||
" <td>81851828.0</td>\n",
|
||
" <td>395.2274</td>\n",
|
||
" <td>360.76650</td>\n",
|
||
" <td>384.993564</td>\n",
|
||
" <td>404.2845</td>\n",
|
||
" <td>423.575436</td>\n",
|
||
" <td>9.543248</td>\n",
|
||
" <td>6.441185</td>\n",
|
||
" <td>0.526172</td>\n",
|
||
" <td>5.915013</td>\n",
|
||
" <td>63.816107</td>\n",
|
||
" <td>1.112003</td>\n",
|
||
" <td>1.117365</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>30</td>\n",
|
||
" <td>70</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2021-04-21</th>\n",
|
||
" <td>411.51</td>\n",
|
||
" <td>416.2900</td>\n",
|
||
" <td>411.36</td>\n",
|
||
" <td>416.07</td>\n",
|
||
" <td>66792983.0</td>\n",
|
||
" <td>395.7386</td>\n",
|
||
" <td>361.26160</td>\n",
|
||
" <td>386.960023</td>\n",
|
||
" <td>405.6130</td>\n",
|
||
" <td>424.265977</td>\n",
|
||
" <td>9.197426</td>\n",
|
||
" <td>6.423364</td>\n",
|
||
" <td>0.406681</td>\n",
|
||
" <td>6.016683</td>\n",
|
||
" <td>67.815585</td>\n",
|
||
" <td>1.121421</td>\n",
|
||
" <td>1.119598</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>30</td>\n",
|
||
" <td>70</td>\n",
|
||
" </tr>\n",
|
||
" </tbody>\n",
|
||
"</table>\n",
|
||
"</div>"
|
||
],
|
||
"text/plain": [
|
||
" open high low close volume SMA_50 SMA_200 \\\n",
|
||
"date \n",
|
||
"2021-04-15 413.74 416.1600 413.69 415.87 60229842.0 393.4496 359.19885 \n",
|
||
"2021-04-16 417.25 417.9100 415.73 417.26 82037278.0 394.1578 359.74335 \n",
|
||
"2021-04-19 416.26 416.7400 413.79 415.21 78498496.0 394.7382 360.26680 \n",
|
||
"2021-04-20 413.91 415.0859 410.59 412.17 81851828.0 395.2274 360.76650 \n",
|
||
"2021-04-21 411.51 416.2900 411.36 416.07 66792983.0 395.7386 361.26160 \n",
|
||
"\n",
|
||
" BBL_20_2.0 BBM_20_2.0 BBU_20_2.0 BBB_20_2.0 MACD_12_26_9 \\\n",
|
||
"date \n",
|
||
"2021-04-15 381.895791 400.7300 419.564209 9.399949 6.478994 \n",
|
||
"2021-04-16 382.340515 402.0190 421.697485 9.789828 6.775655 \n",
|
||
"2021-04-19 383.714538 403.3055 422.896462 9.715197 6.767333 \n",
|
||
"2021-04-20 384.993564 404.2845 423.575436 9.543248 6.441185 \n",
|
||
"2021-04-21 386.960023 405.6130 424.265977 9.197426 6.423364 \n",
|
||
"\n",
|
||
" MACDh_12_26_9 MACDs_12_26_9 RSI_14 CUMLOGRET_1 \\\n",
|
||
"date \n",
|
||
"2021-04-15 1.251027 5.227967 73.655303 1.120940 \n",
|
||
"2021-04-16 1.238150 5.537504 74.749576 1.124277 \n",
|
||
"2021-04-19 0.983863 5.783470 70.123431 1.119352 \n",
|
||
"2021-04-20 0.526172 5.915013 63.816107 1.112003 \n",
|
||
"2021-04-21 0.406681 6.016683 67.815585 1.121421 \n",
|
||
"\n",
|
||
" SMA_5_CUMLOGRET 0 30 70 \n",
|
||
"date \n",
|
||
"2021-04-15 1.113188 0 30 70 \n",
|
||
"2021-04-16 1.115973 0 30 70 \n",
|
||
"2021-04-19 1.117700 0 30 70 \n",
|
||
"2021-04-20 1.117365 0 30 70 \n",
|
||
"2021-04-21 1.119598 0 30 70 "
|
||
]
|
||
},
|
||
"execution_count": 29,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"spy = watch.load(\"SPY\")\n",
|
||
"# Apply constants to the DataFrame for indicators\n",
|
||
"spy.ta.constants(True, [0, 30, 70])\n",
|
||
"spy.tail()"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": []
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"# Additional Strategy Options"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"The ```params``` keyword takes a _tuple_ as a shorthand to the parameter arguments in order.\n",
|
||
"* **Note**: If the indicator arguments change, so will results. Breaking Changes will **always** be posted on the README.\n",
|
||
"\n",
|
||
"The ```col_numbers``` keyword takes a _tuple_ specifying which column to return if the result is a DataFrame."
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 30,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"Strategy(name='EMA, MACD History, Outter BBands, Log Returns', ta=[{'kind': 'ema', 'params': (10,)}, {'kind': 'macd', 'params': (9, 19, 10), 'col_numbers': (1,)}, {'kind': 'bbands', 'col_numbers': (0, 2), 'col_names': ('LB', 'UB')}, {'kind': 'log_return', 'params': (5, False)}], description='EMA, MACD History, BBands(LB, UB), and Log Returns Strategy', created='Wednesday April 21, 2021, NYSE: 17:14:16, Local: 21:14:16 PDT, Day 111/365 (30.00%)')"
|
||
]
|
||
},
|
||
"execution_count": 30,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"params_ta = [\n",
|
||
" {\"kind\":\"ema\", \"params\": (10,)},\n",
|
||
" # params sets MACD's keyword arguments: fast=9, slow=19, signal=10\n",
|
||
" # and returning the 2nd column: histogram\n",
|
||
" {\"kind\":\"macd\", \"params\": (9, 19, 10), \"col_numbers\": (1,)},\n",
|
||
" # Selects the Lower and Upper Bands and renames them LB and UB, ignoring the MB\n",
|
||
" {\"kind\":\"bbands\", \"col_numbers\": (0,2), \"col_names\": (\"LB\", \"UB\")},\n",
|
||
" {\"kind\":\"log_return\", \"params\": (5, False)},\n",
|
||
"]\n",
|
||
"params_ta_strategy = ta.Strategy(\n",
|
||
" \"EMA, MACD History, Outter BBands, Log Returns\", # name\n",
|
||
" params_ta, # ta\n",
|
||
" \"EMA, MACD History, BBands(LB, UB), and Log Returns Strategy\" # description\n",
|
||
")\n",
|
||
"params_ta_strategy"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 31,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"'EMA, MACD History, Outter BBands, Log Returns'"
|
||
]
|
||
},
|
||
"execution_count": 31,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"# Update the Watchlist\n",
|
||
"watch.strategy = params_ta_strategy\n",
|
||
"watch.strategy.name"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 32,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"[i] Loaded SPY[D]: SPY_D.csv\n"
|
||
]
|
||
},
|
||
{
|
||
"data": {
|
||
"text/html": [
|
||
"<div>\n",
|
||
"<style scoped>\n",
|
||
" .dataframe tbody tr th:only-of-type {\n",
|
||
" vertical-align: middle;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe tbody tr th {\n",
|
||
" vertical-align: top;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe thead th {\n",
|
||
" text-align: right;\n",
|
||
" }\n",
|
||
"</style>\n",
|
||
"<table border=\"1\" class=\"dataframe\">\n",
|
||
" <thead>\n",
|
||
" <tr style=\"text-align: right;\">\n",
|
||
" <th></th>\n",
|
||
" <th>open</th>\n",
|
||
" <th>high</th>\n",
|
||
" <th>low</th>\n",
|
||
" <th>close</th>\n",
|
||
" <th>volume</th>\n",
|
||
" <th>EMA_10</th>\n",
|
||
" <th>MACDh_9_19_10</th>\n",
|
||
" <th>LB</th>\n",
|
||
" <th>UB</th>\n",
|
||
" <th>LOGRET_5</th>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>date</th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" </tr>\n",
|
||
" </thead>\n",
|
||
" <tbody>\n",
|
||
" <tr>\n",
|
||
" <th>2021-04-15</th>\n",
|
||
" <td>413.74</td>\n",
|
||
" <td>416.1600</td>\n",
|
||
" <td>413.69</td>\n",
|
||
" <td>415.87</td>\n",
|
||
" <td>60229842.0</td>\n",
|
||
" <td>408.805040</td>\n",
|
||
" <td>1.131842</td>\n",
|
||
" <td>408.891393</td>\n",
|
||
" <td>416.432607</td>\n",
|
||
" <td>0.017832</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2021-04-16</th>\n",
|
||
" <td>417.25</td>\n",
|
||
" <td>417.9100</td>\n",
|
||
" <td>415.73</td>\n",
|
||
" <td>417.26</td>\n",
|
||
" <td>82037278.0</td>\n",
|
||
" <td>410.342305</td>\n",
|
||
" <td>1.100301</td>\n",
|
||
" <td>408.588484</td>\n",
|
||
" <td>419.043516</td>\n",
|
||
" <td>0.013925</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2021-04-19</th>\n",
|
||
" <td>416.26</td>\n",
|
||
" <td>416.7400</td>\n",
|
||
" <td>413.79</td>\n",
|
||
" <td>415.21</td>\n",
|
||
" <td>78498496.0</td>\n",
|
||
" <td>411.227341</td>\n",
|
||
" <td>0.762081</td>\n",
|
||
" <td>409.841056</td>\n",
|
||
" <td>419.218944</td>\n",
|
||
" <td>0.008635</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2021-04-20</th>\n",
|
||
" <td>413.91</td>\n",
|
||
" <td>415.0859</td>\n",
|
||
" <td>410.59</td>\n",
|
||
" <td>412.17</td>\n",
|
||
" <td>81851828.0</td>\n",
|
||
" <td>411.398733</td>\n",
|
||
" <td>0.182182</td>\n",
|
||
" <td>409.424941</td>\n",
|
||
" <td>419.359059</td>\n",
|
||
" <td>-0.001673</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2021-04-21</th>\n",
|
||
" <td>411.51</td>\n",
|
||
" <td>416.2900</td>\n",
|
||
" <td>411.36</td>\n",
|
||
" <td>416.07</td>\n",
|
||
" <td>66792983.0</td>\n",
|
||
" <td>412.248055</td>\n",
|
||
" <td>0.066079</td>\n",
|
||
" <td>411.499834</td>\n",
|
||
" <td>419.132166</td>\n",
|
||
" <td>0.011166</td>\n",
|
||
" </tr>\n",
|
||
" </tbody>\n",
|
||
"</table>\n",
|
||
"</div>"
|
||
],
|
||
"text/plain": [
|
||
" open high low close volume EMA_10 \\\n",
|
||
"date \n",
|
||
"2021-04-15 413.74 416.1600 413.69 415.87 60229842.0 408.805040 \n",
|
||
"2021-04-16 417.25 417.9100 415.73 417.26 82037278.0 410.342305 \n",
|
||
"2021-04-19 416.26 416.7400 413.79 415.21 78498496.0 411.227341 \n",
|
||
"2021-04-20 413.91 415.0859 410.59 412.17 81851828.0 411.398733 \n",
|
||
"2021-04-21 411.51 416.2900 411.36 416.07 66792983.0 412.248055 \n",
|
||
"\n",
|
||
" MACDh_9_19_10 LB UB LOGRET_5 \n",
|
||
"date \n",
|
||
"2021-04-15 1.131842 408.891393 416.432607 0.017832 \n",
|
||
"2021-04-16 1.100301 408.588484 419.043516 0.013925 \n",
|
||
"2021-04-19 0.762081 409.841056 419.218944 0.008635 \n",
|
||
"2021-04-20 0.182182 409.424941 419.359059 -0.001673 \n",
|
||
"2021-04-21 0.066079 411.499834 419.132166 0.011166 "
|
||
]
|
||
},
|
||
"execution_count": 32,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"spy = watch.load(\"SPY\")\n",
|
||
"spy.tail()"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": []
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"# Disclaimer\n",
|
||
"* All investments involve risk, and the past performance of a security, industry, sector, market, financial product, trading strategy, or individual’s trading does not guarantee future results or returns. Investors are fully responsible for any investment decisions they make. Such decisions should be based solely on an evaluation of their financial circumstances, investment objectives, risk tolerance, and liquidity needs.\n",
|
||
"\n",
|
||
"* Any opinions, news, research, analyses, prices, or other information offered is provided as general market commentary, and does not constitute investment advice. I will not accept liability for any loss or damage, including without limitation any loss of profit, which may arise directly or indirectly from use of or reliance on such information."
|
||
]
|
||
}
|
||
],
|
||
"metadata": {
|
||
"kernelspec": {
|
||
"display_name": "Python 3",
|
||
"language": "python",
|
||
"name": "python3"
|
||
},
|
||
"language_info": {
|
||
"codemirror_mode": {
|
||
"name": "ipython",
|
||
"version": 3
|
||
},
|
||
"file_extension": ".py",
|
||
"mimetype": "text/x-python",
|
||
"name": "python",
|
||
"nbconvert_exporter": "python",
|
||
"pygments_lexer": "ipython3",
|
||
"version": "3.9.1"
|
||
}
|
||
},
|
||
"nbformat": 4,
|
||
"nbformat_minor": 4
|
||
}
|