Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- {
- "nbformat": 4,
- "nbformat_minor": 0,
- "metadata": {
- "colab": {
- "provenance": [],
- "collapsed_sections": []
- },
- "kernelspec": {
- "name": "python3",
- "display_name": "Python 3"
- },
- "language_info": {
- "name": "python"
- }
- },
- "cells": [
- {
- "cell_type": "markdown",
- "source": [
- "[Keeping it Really Simple](https://www.reddit.com/r/RealDayTrading/comments/svn70b/keeping_it_really_simple/)\n",
- "\n",
- "3. HA continuation of at least 2 days\n",
- "4. Above or below all major SMAs (50/100/200-day)\n",
- "\n",
- "[HA continuation is at least 2 flat-topped/bottomed candles in a row prior to the current trading day](https://www.reddit.com/r/RealDayTrading/comments/x0i2do/weekly_lounge_informal_discussion_general_talk/imsh2hl/)\n",
- "\n",
- "Eventually I want to pull D1s for all stocks on the NYSE, NASDAQ, and AMEX and incorporate [u/lilsgymdan's criteria](https://www.reddit.com/r/RealDayTrading/comments/ua7rm4/these_trade_criteria_work_really_really_well/)"
- ],
- "metadata": {
- "id": "3c-Udtwdecef"
- }
- },
- {
- "cell_type": "code",
- "execution_count": 2,
- "metadata": {
- "id": "c6GNIptFcXkQ",
- "colab": {
- "base_uri": "https://localhost:8080/"
- },
- "outputId": "f30c0050-ed4d-4aa6-ad8b-9b2b0d5a13b5"
- },
- "outputs": [
- {
- "output_type": "stream",
- "name": "stdout",
- "text": [
- "Looking in indexes: https://pypi.org/simple, https://us-python.pkg.dev/colab-wheels/public/simple/\n",
- "Collecting yfinance\n",
- " Downloading yfinance-0.1.74-py2.py3-none-any.whl (27 kB)\n",
- "Collecting requests>=2.26\n",
- " Downloading requests-2.28.1-py3-none-any.whl (62 kB)\n",
- "\u001b[K |████████████████████████████████| 62 kB 1.2 MB/s \n",
- "\u001b[?25hRequirement already satisfied: multitasking>=0.0.7 in /usr/local/lib/python3.7/dist-packages (from yfinance) (0.0.11)\n",
- "Requirement already satisfied: pandas>=0.24.0 in /usr/local/lib/python3.7/dist-packages (from yfinance) (1.3.5)\n",
- "Requirement already satisfied: lxml>=4.5.1 in /usr/local/lib/python3.7/dist-packages (from yfinance) (4.9.1)\n",
- "Requirement already satisfied: numpy>=1.15 in /usr/local/lib/python3.7/dist-packages (from yfinance) (1.21.6)\n",
- "Requirement already satisfied: python-dateutil>=2.7.3 in /usr/local/lib/python3.7/dist-packages (from pandas>=0.24.0->yfinance) (2.8.2)\n",
- "Requirement already satisfied: pytz>=2017.3 in /usr/local/lib/python3.7/dist-packages (from pandas>=0.24.0->yfinance) (2022.2.1)\n",
- "Requirement already satisfied: six>=1.5 in /usr/local/lib/python3.7/dist-packages (from python-dateutil>=2.7.3->pandas>=0.24.0->yfinance) (1.15.0)\n",
- "Requirement already satisfied: charset-normalizer<3,>=2 in /usr/local/lib/python3.7/dist-packages (from requests>=2.26->yfinance) (2.1.1)\n",
- "Requirement already satisfied: urllib3<1.27,>=1.21.1 in /usr/local/lib/python3.7/dist-packages (from requests>=2.26->yfinance) (1.24.3)\n",
- "Requirement already satisfied: idna<4,>=2.5 in /usr/local/lib/python3.7/dist-packages (from requests>=2.26->yfinance) (2.10)\n",
- "Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.7/dist-packages (from requests>=2.26->yfinance) (2022.6.15)\n",
- "Installing collected packages: requests, yfinance\n",
- " Attempting uninstall: requests\n",
- " Found existing installation: requests 2.23.0\n",
- " Uninstalling requests-2.23.0:\n",
- " Successfully uninstalled requests-2.23.0\n",
- "Successfully installed requests-2.28.1 yfinance-0.1.74\n"
- ]
- }
- ],
- "source": [
- "#https://blog.quantinsti.com/stock-market-data-analysis-python/\n",
- "!pip install yfinance"
- ]
- },
- {
- "cell_type": "code",
- "source": [
- "# import packages\n",
- "import yfinance as yf\n",
- "import pandas as pd\n",
- "# import numpy as np\n",
- "# import datetime as dt"
- ],
- "metadata": {
- "id": "Zoa2ux9FcaeI"
- },
- "execution_count": 3,
- "outputs": []
- },
- {
- "cell_type": "code",
- "source": [
- "# get SPY and SPDR sector ETFs D1 data\n",
- "etfs = ['SPY','XLK','XLC','XLY','XLP','XLV','XLF','XLE','XLI','XLB','XLU','XLRE']\n",
- "# etfs\n",
- "\n",
- "start_date = '2021-9-3'\n",
- "end_date = '2022-9-3'\n",
- "\n",
- "etf_data = yf.download(etfs,start_date,end_date) #auto_adjust=True would make the close adjusted for dividends, which we don't want. See SPY on 8/16/22 for example: bounced off the 200SMA unadjusted"
- ],
- "metadata": {
- "id": "YeXt3wjhcfg-",
- "colab": {
- "base_uri": "https://localhost:8080/"
- },
- "outputId": "716f0beb-409f-483b-fffe-8b044cd586e4"
- },
- "execution_count": 4,
- "outputs": [
- {
- "output_type": "stream",
- "name": "stdout",
- "text": [
- "[*********************100%***********************] 12 of 12 completed\n"
- ]
- }
- ]
- },
- {
- "cell_type": "code",
- "source": [
- "# etf_data.dtypes"
- ],
- "metadata": {
- "id": "tsmIvqSSN8Qe"
- },
- "execution_count": null,
- "outputs": []
- },
- {
- "cell_type": "code",
- "source": [
- "SPY_D1 = pd.DataFrame()\n",
- "\n",
- "SPY_D1['Close'] = etf_data['Close']['SPY']\n",
- "SPY_D1['sma50'] = SPY_D1['Close'].rolling(window = 50, min_periods = 1).mean()\n",
- "SPY_D1['sma100'] = SPY_D1['Close'].rolling(window = 100, min_periods = 1).mean()\n",
- "SPY_D1['sma200'] = SPY_D1['Close'].rolling(window = 200, min_periods = 1).mean()\n",
- "SPY_D1.tail()"
- ],
- "metadata": {
- "colab": {
- "base_uri": "https://localhost:8080/",
- "height": 238
- },
- "id": "Oo09C6mYLIM-",
- "outputId": "c18e1638-0459-4d89-e27e-f6227e4592b7"
- },
- "execution_count": null,
- "outputs": [
- {
- "output_type": "execute_result",
- "data": {
- "text/plain": [
- " Close sma50 sma100 sma200\n",
- "Date \n",
- "2022-08-29 402.630005 399.283201 405.922501 429.377851\n",
- "2022-08-30 398.209991 399.930201 405.439401 429.050051\n",
- "2022-08-31 395.179993 400.332401 404.903501 428.689601\n",
- "2022-09-01 396.420013 400.773000 404.392001 428.334552\n",
- "2022-09-02 392.239990 401.056600 403.915201 427.949352"
- ],
- "text/html": [
- "\n",
- " <div id=\"df-f4ef70aa-3092-4d55-a981-4d26634db27a\">\n",
- " <div class=\"colab-df-container\">\n",
- " <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>Close</th>\n",
- " <th>sma50</th>\n",
- " <th>sma100</th>\n",
- " <th>sma200</th>\n",
- " </tr>\n",
- " <tr>\n",
- " <th>Date</th>\n",
- " <th></th>\n",
- " <th></th>\n",
- " <th></th>\n",
- " <th></th>\n",
- " </tr>\n",
- " </thead>\n",
- " <tbody>\n",
- " <tr>\n",
- " <th>2022-08-29</th>\n",
- " <td>402.630005</td>\n",
- " <td>399.283201</td>\n",
- " <td>405.922501</td>\n",
- " <td>429.377851</td>\n",
- " </tr>\n",
- " <tr>\n",
- " <th>2022-08-30</th>\n",
- " <td>398.209991</td>\n",
- " <td>399.930201</td>\n",
- " <td>405.439401</td>\n",
- " <td>429.050051</td>\n",
- " </tr>\n",
- " <tr>\n",
- " <th>2022-08-31</th>\n",
- " <td>395.179993</td>\n",
- " <td>400.332401</td>\n",
- " <td>404.903501</td>\n",
- " <td>428.689601</td>\n",
- " </tr>\n",
- " <tr>\n",
- " <th>2022-09-01</th>\n",
- " <td>396.420013</td>\n",
- " <td>400.773000</td>\n",
- " <td>404.392001</td>\n",
- " <td>428.334552</td>\n",
- " </tr>\n",
- " <tr>\n",
- " <th>2022-09-02</th>\n",
- " <td>392.239990</td>\n",
- " <td>401.056600</td>\n",
- " <td>403.915201</td>\n",
- " <td>427.949352</td>\n",
- " </tr>\n",
- " </tbody>\n",
- "</table>\n",
- "</div>\n",
- " <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-f4ef70aa-3092-4d55-a981-4d26634db27a')\"\n",
- " title=\"Convert this dataframe to an interactive table.\"\n",
- " style=\"display:none;\">\n",
- " \n",
- " <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
- " width=\"24px\">\n",
- " <path d=\"M0 0h24v24H0V0z\" fill=\"none\"/>\n",
- " <path d=\"M18.56 5.44l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94zm-11 1L8.5 8.5l.94-2.06 2.06-.94-2.06-.94L8.5 2.5l-.94 2.06-2.06.94zm10 10l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94z\"/><path d=\"M17.41 7.96l-1.37-1.37c-.4-.4-.92-.59-1.43-.59-.52 0-1.04.2-1.43.59L10.3 9.45l-7.72 7.72c-.78.78-.78 2.05 0 2.83L4 21.41c.39.39.9.59 1.41.59.51 0 1.02-.2 1.41-.59l7.78-7.78 2.81-2.81c.8-.78.8-2.07 0-2.86zM5.41 20L4 18.59l7.72-7.72 1.47 1.35L5.41 20z\"/>\n",
- " </svg>\n",
- " </button>\n",
- " \n",
- " <style>\n",
- " .colab-df-container {\n",
- " display:flex;\n",
- " flex-wrap:wrap;\n",
- " gap: 12px;\n",
- " }\n",
- "\n",
- " .colab-df-convert {\n",
- " background-color: #E8F0FE;\n",
- " border: none;\n",
- " border-radius: 50%;\n",
- " cursor: pointer;\n",
- " display: none;\n",
- " fill: #1967D2;\n",
- " height: 32px;\n",
- " padding: 0 0 0 0;\n",
- " width: 32px;\n",
- " }\n",
- "\n",
- " .colab-df-convert:hover {\n",
- " background-color: #E2EBFA;\n",
- " box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
- " fill: #174EA6;\n",
- " }\n",
- "\n",
- " [theme=dark] .colab-df-convert {\n",
- " background-color: #3B4455;\n",
- " fill: #D2E3FC;\n",
- " }\n",
- "\n",
- " [theme=dark] .colab-df-convert:hover {\n",
- " background-color: #434B5C;\n",
- " box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
- " filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
- " fill: #FFFFFF;\n",
- " }\n",
- " </style>\n",
- "\n",
- " <script>\n",
- " const buttonEl =\n",
- " document.querySelector('#df-f4ef70aa-3092-4d55-a981-4d26634db27a button.colab-df-convert');\n",
- " buttonEl.style.display =\n",
- " google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
- "\n",
- " async function convertToInteractive(key) {\n",
- " const element = document.querySelector('#df-f4ef70aa-3092-4d55-a981-4d26634db27a');\n",
- " const dataTable =\n",
- " await google.colab.kernel.invokeFunction('convertToInteractive',\n",
- " [key], {});\n",
- " if (!dataTable) return;\n",
- "\n",
- " const docLinkHtml = 'Like what you see? Visit the ' +\n",
- " '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
- " + ' to learn more about interactive tables.';\n",
- " element.innerHTML = '';\n",
- " dataTable['output_type'] = 'display_data';\n",
- " await google.colab.output.renderOutput(dataTable, element);\n",
- " const docLink = document.createElement('div');\n",
- " docLink.innerHTML = docLinkHtml;\n",
- " element.appendChild(docLink);\n",
- " }\n",
- " </script>\n",
- " </div>\n",
- " </div>\n",
- " "
- ]
- },
- "metadata": {},
- "execution_count": 40
- }
- ]
- },
- {
- "cell_type": "code",
- "source": [
- "SPY_D1.head()"
- ],
- "metadata": {
- "colab": {
- "base_uri": "https://localhost:8080/",
- "height": 238
- },
- "id": "-OGBIKtoXhGu",
- "outputId": "e539660b-5589-45e9-db57-74075ab33631"
- },
- "execution_count": null,
- "outputs": [
- {
- "output_type": "execute_result",
- "data": {
- "text/plain": [
- " Close sma50 sma100 sma200\n",
- "Date \n",
- "2021-09-03 453.079987 453.079987 453.079987 453.079987\n",
- "2021-09-07 451.459991 452.269989 452.269989 452.269989\n",
- "2021-09-08 450.910004 451.816661 451.816661 451.816661\n",
- "2021-09-09 448.980011 451.107498 451.107498 451.107498\n",
- "2021-09-10 445.440002 449.973999 449.973999 449.973999"
- ],
- "text/html": [
- "\n",
- " <div id=\"df-c6335dbd-71e3-49b0-8c3a-b3cb4d3a953a\">\n",
- " <div class=\"colab-df-container\">\n",
- " <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>Close</th>\n",
- " <th>sma50</th>\n",
- " <th>sma100</th>\n",
- " <th>sma200</th>\n",
- " </tr>\n",
- " <tr>\n",
- " <th>Date</th>\n",
- " <th></th>\n",
- " <th></th>\n",
- " <th></th>\n",
- " <th></th>\n",
- " </tr>\n",
- " </thead>\n",
- " <tbody>\n",
- " <tr>\n",
- " <th>2021-09-03</th>\n",
- " <td>453.079987</td>\n",
- " <td>453.079987</td>\n",
- " <td>453.079987</td>\n",
- " <td>453.079987</td>\n",
- " </tr>\n",
- " <tr>\n",
- " <th>2021-09-07</th>\n",
- " <td>451.459991</td>\n",
- " <td>452.269989</td>\n",
- " <td>452.269989</td>\n",
- " <td>452.269989</td>\n",
- " </tr>\n",
- " <tr>\n",
- " <th>2021-09-08</th>\n",
- " <td>450.910004</td>\n",
- " <td>451.816661</td>\n",
- " <td>451.816661</td>\n",
- " <td>451.816661</td>\n",
- " </tr>\n",
- " <tr>\n",
- " <th>2021-09-09</th>\n",
- " <td>448.980011</td>\n",
- " <td>451.107498</td>\n",
- " <td>451.107498</td>\n",
- " <td>451.107498</td>\n",
- " </tr>\n",
- " <tr>\n",
- " <th>2021-09-10</th>\n",
- " <td>445.440002</td>\n",
- " <td>449.973999</td>\n",
- " <td>449.973999</td>\n",
- " <td>449.973999</td>\n",
- " </tr>\n",
- " </tbody>\n",
- "</table>\n",
- "</div>\n",
- " <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-c6335dbd-71e3-49b0-8c3a-b3cb4d3a953a')\"\n",
- " title=\"Convert this dataframe to an interactive table.\"\n",
- " style=\"display:none;\">\n",
- " \n",
- " <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
- " width=\"24px\">\n",
- " <path d=\"M0 0h24v24H0V0z\" fill=\"none\"/>\n",
- " <path d=\"M18.56 5.44l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94zm-11 1L8.5 8.5l.94-2.06 2.06-.94-2.06-.94L8.5 2.5l-.94 2.06-2.06.94zm10 10l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94z\"/><path d=\"M17.41 7.96l-1.37-1.37c-.4-.4-.92-.59-1.43-.59-.52 0-1.04.2-1.43.59L10.3 9.45l-7.72 7.72c-.78.78-.78 2.05 0 2.83L4 21.41c.39.39.9.59 1.41.59.51 0 1.02-.2 1.41-.59l7.78-7.78 2.81-2.81c.8-.78.8-2.07 0-2.86zM5.41 20L4 18.59l7.72-7.72 1.47 1.35L5.41 20z\"/>\n",
- " </svg>\n",
- " </button>\n",
- " \n",
- " <style>\n",
- " .colab-df-container {\n",
- " display:flex;\n",
- " flex-wrap:wrap;\n",
- " gap: 12px;\n",
- " }\n",
- "\n",
- " .colab-df-convert {\n",
- " background-color: #E8F0FE;\n",
- " border: none;\n",
- " border-radius: 50%;\n",
- " cursor: pointer;\n",
- " display: none;\n",
- " fill: #1967D2;\n",
- " height: 32px;\n",
- " padding: 0 0 0 0;\n",
- " width: 32px;\n",
- " }\n",
- "\n",
- " .colab-df-convert:hover {\n",
- " background-color: #E2EBFA;\n",
- " box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
- " fill: #174EA6;\n",
- " }\n",
- "\n",
- " [theme=dark] .colab-df-convert {\n",
- " background-color: #3B4455;\n",
- " fill: #D2E3FC;\n",
- " }\n",
- "\n",
- " [theme=dark] .colab-df-convert:hover {\n",
- " background-color: #434B5C;\n",
- " box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
- " filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
- " fill: #FFFFFF;\n",
- " }\n",
- " </style>\n",
- "\n",
- " <script>\n",
- " const buttonEl =\n",
- " document.querySelector('#df-c6335dbd-71e3-49b0-8c3a-b3cb4d3a953a button.colab-df-convert');\n",
- " buttonEl.style.display =\n",
- " google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
- "\n",
- " async function convertToInteractive(key) {\n",
- " const element = document.querySelector('#df-c6335dbd-71e3-49b0-8c3a-b3cb4d3a953a');\n",
- " const dataTable =\n",
- " await google.colab.kernel.invokeFunction('convertToInteractive',\n",
- " [key], {});\n",
- " if (!dataTable) return;\n",
- "\n",
- " const docLinkHtml = 'Like what you see? Visit the ' +\n",
- " '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
- " + ' to learn more about interactive tables.';\n",
- " element.innerHTML = '';\n",
- " dataTable['output_type'] = 'display_data';\n",
- " await google.colab.output.renderOutput(dataTable, element);\n",
- " const docLink = document.createElement('div');\n",
- " docLink.innerHTML = docLinkHtml;\n",
- " element.appendChild(docLink);\n",
- " }\n",
- " </script>\n",
- " </div>\n",
- " </div>\n",
- " "
- ]
- },
- "metadata": {},
- "execution_count": 61
- }
- ]
- },
- {
- "cell_type": "code",
- "source": [
- "# get the stock tickers that make up S&P500\n",
- "tickers = pd.read_html(\n",
- " 'https://en.wikipedia.org/wiki/List_of_S%26P_500_companies')[0]\n",
- "\n",
- "# pd.set_option('display.max_rows', None)\n",
- "# tickers"
- ],
- "metadata": {
- "id": "j09lEw9-cfeA"
- },
- "execution_count": 5,
- "outputs": []
- },
- {
- "cell_type": "code",
- "source": [
- "# scrub tickers\n",
- "tickers.at[64, 'Symbol'] = 'BRK-B'\n",
- "tickers.at[80, 'Symbol'] = 'BF-B'"
- ],
- "metadata": {
- "id": "JD0MBIOEEB4l"
- },
- "execution_count": 6,
- "outputs": []
- },
- {
- "cell_type": "code",
- "source": [
- "# get the data for these tickers from yahoo finance\n",
- "\n",
- "start_date = '2021-9-3'\n",
- "end_date = '2022-9-3'\n",
- "\n",
- "ticker_data = yf.download(tickers.Symbol.to_list(),start_date,end_date)\n",
- "print(ticker_data['Close'])"
- ],
- "metadata": {
- "id": "YK-G8mYtdhMu",
- "colab": {
- "base_uri": "https://localhost:8080/"
- },
- "outputId": "efc54b69-bae1-4c7b-f1e2-f4417d783ffa"
- },
- "execution_count": 29,
- "outputs": [
- {
- "output_type": "stream",
- "name": "stdout",
- "text": [
- "[*********************100%***********************] 503 of 503 completed\n",
- " A AAL AAP AAPL ABBV \\\n",
- "Date \n",
- "2021-09-02 NaN NaN NaN NaN NaN \n",
- "2021-09-03 179.279999 19.370001 199.440002 154.300003 111.620003 \n",
- "2021-09-07 177.720001 19.530001 199.809998 156.690002 109.029999 \n",
- "2021-09-08 178.729996 19.129999 200.179993 155.110001 110.360001 \n",
- "2021-09-09 177.229996 20.200001 201.220001 154.070007 107.269997 \n",
- "... ... ... ... ... ... \n",
- "2022-08-29 128.110001 13.510000 170.539993 161.380005 135.710007 \n",
- "2022-08-30 128.279999 13.330000 170.470001 158.910004 135.550003 \n",
- "2022-08-31 128.250000 12.990000 168.639999 157.220001 134.460007 \n",
- "2022-09-01 128.929993 12.930000 172.149994 157.960007 138.449997 \n",
- "2022-09-02 128.009995 12.990000 171.729996 155.809998 136.279999 \n",
- "\n",
- " ABC ABMD ABT ACN ADBE ... \\\n",
- "Date ... \n",
- "2021-09-02 NaN NaN NaN NaN NaN ... \n",
- "2021-09-03 125.139999 372.690002 128.940002 343.329987 666.590027 ... \n",
- "2021-09-07 124.209999 376.200012 128.389999 341.489990 661.390015 ... \n",
- "2021-09-08 124.309998 374.790009 129.059998 340.320007 663.219971 ... \n",
- "2021-09-09 123.599998 365.839996 127.980003 341.100006 661.679993 ... \n",
- "... ... ... ... ... ... ... \n",
- "2022-08-29 147.490005 256.980011 101.839996 295.140015 375.260010 ... \n",
- "2022-08-30 145.429993 258.649994 102.199997 292.500000 375.070007 ... \n",
- "2022-08-31 146.559998 259.279999 102.650002 288.459991 373.440002 ... \n",
- "2022-09-01 147.610001 259.529999 104.839996 288.790009 370.529999 ... \n",
- "2022-09-02 147.710007 261.239990 102.500000 284.070007 368.140015 ... \n",
- "\n",
- " WYNN XEL XOM XRAY XYL \\\n",
- "Date \n",
- "2021-09-02 NaN NaN NaN NaN NaN \n",
- "2021-09-03 100.300003 69.800003 54.869999 62.430000 137.250000 \n",
- "2021-09-07 105.930000 67.900002 54.549999 62.169998 135.649994 \n",
- "2021-09-08 104.620003 69.309998 54.049999 62.310001 135.110001 \n",
- "2021-09-09 103.930000 69.269997 54.090000 62.459999 133.940002 \n",
- "... ... ... ... ... ... \n",
- "2022-08-29 62.410000 75.620003 100.120003 33.080002 92.050003 \n",
- "2022-08-30 60.209999 74.690002 96.309998 32.939999 91.349998 \n",
- "2022-08-31 60.590000 74.250000 95.589996 32.770000 91.099998 \n",
- "2022-09-01 59.180000 75.419998 93.870003 32.169998 92.089996 \n",
- "2022-09-02 59.180000 74.410004 95.589996 31.799999 91.209999 \n",
- "\n",
- " YUM ZBH ZBRA ZION ZTS \n",
- "Date \n",
- "2021-09-02 NaN NaN NaN NaN NaN \n",
- "2021-09-03 130.919998 142.466019 590.599976 57.119999 209.690002 \n",
- "2021-09-07 128.830002 142.349518 581.140015 57.500000 207.809998 \n",
- "2021-09-08 130.190002 143.184464 579.750000 56.500000 209.330002 \n",
- "2021-09-09 129.250000 140.135925 577.469971 57.560001 206.020004 \n",
- "... ... ... ... ... ... \n",
- "2022-08-29 112.209999 107.620003 307.899994 55.750000 157.869995 \n",
- "2022-08-30 110.779999 107.370003 302.859985 55.400002 157.080002 \n",
- "2022-08-31 111.239998 106.320000 301.640015 55.029999 156.529999 \n",
- "2022-09-01 114.260002 106.800003 309.739990 55.110001 159.410004 \n",
- "2022-09-02 112.739998 105.570000 297.600006 55.040001 156.979996 \n",
- "\n",
- "[253 rows x 503 columns]\n"
- ]
- }
- ]
- },
- {
- "cell_type": "code",
- "source": [
- "ticker_data.drop(index=('2021-09-02'), inplace=True) # not sure why the first row is always NA"
- ],
- "metadata": {
- "id": "FZ3qI1BQJdlz"
- },
- "execution_count": 30,
- "outputs": []
- },
- {
- "cell_type": "code",
- "source": [
- "# get HA candles\n",
- "# https://tlc.thinkorswim.com/center/howToTos/thinkManual/charts/Chart-Modes/Chart-Types/heikinashi\n",
- "\n",
- "ha_ticker_data = ticker_data.copy()\n",
- "\n",
- "ha_ticker_data['Close'] = (ticker_data['Open'] + ticker_data['High'] + ticker_data['Low'] + ticker_data['Close'])/4\n",
- "\n",
- "ha_ticker_data['Open'].iloc[0] = ticker_data['Open'].iloc[0]\n",
- "\n",
- "for i in range(1, len(ticker_data.index)):\n",
- " ha_ticker_data['Open'].iloc[i] = (ha_ticker_data['Open'].iloc[i-1] + ha_ticker_data['Close'].iloc[i-1])/2\n",
- "\n",
- "ha_ticker_data['High'] = pd.concat([ticker_data['High'], ha_ticker_data['Open'], ha_ticker_data['Close']]).max(level=0)\n",
- "ha_ticker_data['Low'] = pd.concat([ticker_data['Low'], ha_ticker_data['Open'], ha_ticker_data['Close']]).min(level=0)"
- ],
- "metadata": {
- "colab": {
- "base_uri": "https://localhost:8080/"
- },
- "id": "N6I2TgJs7UlW",
- "outputId": "424fe035-deb4-4ed7-b3c7-a8c3ae346205"
- },
- "execution_count": 38,
- "outputs": [
- {
- "output_type": "stream",
- "name": "stderr",
- "text": [
- "/usr/local/lib/python3.7/dist-packages/pandas/core/indexing.py:1732: SettingWithCopyWarning: \n",
- "A value is trying to be set on a copy of a slice from a DataFrame\n",
- "\n",
- "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
- " self._setitem_single_block(indexer, value, name)\n",
- "/usr/local/lib/python3.7/dist-packages/pandas/core/indexing.py:723: SettingWithCopyWarning: \n",
- "A value is trying to be set on a copy of a slice from a DataFrame\n",
- "\n",
- "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
- " iloc._setitem_with_indexer(indexer, value, self.name)\n",
- "/usr/local/lib/python3.7/dist-packages/ipykernel_launcher.py:13: FutureWarning: Using the level keyword in DataFrame and Series aggregations is deprecated and will be removed in a future version. Use groupby instead. df.median(level=1) should use df.groupby(level=1).median().\n",
- " del sys.path[0]\n",
- "/usr/local/lib/python3.7/dist-packages/ipykernel_launcher.py:14: FutureWarning: Using the level keyword in DataFrame and Series aggregations is deprecated and will be removed in a future version. Use groupby instead. df.median(level=1) should use df.groupby(level=1).median().\n",
- " \n"
- ]
- }
- ]
- },
- {
- "cell_type": "code",
- "source": [],
- "metadata": {
- "id": "Aw6qbdU6X5gt"
- },
- "execution_count": 9,
- "outputs": []
- },
- {
- "cell_type": "code",
- "source": [
- "ticker_closes = ticker_data['Close']\n",
- "\n",
- "ticker_results = pd.DataFrame(index = ticker_closes.columns, \\\n",
- " columns = ['last_close', 'sma50', 'sma100', 'sma200', 'above_all', 'below_all', \\\n",
- " 'last_flat_bottom', 't1_flat_bottom', 'last_flat_top', 't1_flat_top', \\\n",
- " 'two_flat_bottom', 'two_flat_top', 'good_long', 'good_short'])\n",
- "\n",
- "ticker_results['last_close'] = ticker_closes.iloc[-1]\n",
- "\n",
- "ticker_results.head()"
- ],
- "metadata": {
- "colab": {
- "base_uri": "https://localhost:8080/",
- "height": 206
- },
- "id": "07yexkvAddJi",
- "outputId": "9476d0eb-11a9-40e6-8742-13a2f6c2a284"
- },
- "execution_count": 41,
- "outputs": [
- {
- "output_type": "execute_result",
- "data": {
- "text/plain": [
- " last_close sma50 sma100 sma200 above_all below_all last_flat_bottom \\\n",
- "A 128.009995 NaN NaN NaN NaN NaN NaN \n",
- "AAL 12.990000 NaN NaN NaN NaN NaN NaN \n",
- "AAP 171.729996 NaN NaN NaN NaN NaN NaN \n",
- "AAPL 155.809998 NaN NaN NaN NaN NaN NaN \n",
- "ABBV 136.279999 NaN NaN NaN NaN NaN NaN \n",
- "\n",
- " t1_flat_bottom last_flat_top t1_flat_top two_flat_bottom two_flat_top \\\n",
- "A NaN NaN NaN NaN NaN \n",
- "AAL NaN NaN NaN NaN NaN \n",
- "AAP NaN NaN NaN NaN NaN \n",
- "AAPL NaN NaN NaN NaN NaN \n",
- "ABBV NaN NaN NaN NaN NaN \n",
- "\n",
- " good_long good_short \n",
- "A NaN NaN \n",
- "AAL NaN NaN \n",
- "AAP NaN NaN \n",
- "AAPL NaN NaN \n",
- "ABBV NaN NaN "
- ],
- "text/html": [
- "\n",
- " <div id=\"df-735ccea8-9105-4c3a-bb04-114746405acf\">\n",
- " <div class=\"colab-df-container\">\n",
- " <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>last_close</th>\n",
- " <th>sma50</th>\n",
- " <th>sma100</th>\n",
- " <th>sma200</th>\n",
- " <th>above_all</th>\n",
- " <th>below_all</th>\n",
- " <th>last_flat_bottom</th>\n",
- " <th>t1_flat_bottom</th>\n",
- " <th>last_flat_top</th>\n",
- " <th>t1_flat_top</th>\n",
- " <th>two_flat_bottom</th>\n",
- " <th>two_flat_top</th>\n",
- " <th>good_long</th>\n",
- " <th>good_short</th>\n",
- " </tr>\n",
- " </thead>\n",
- " <tbody>\n",
- " <tr>\n",
- " <th>A</th>\n",
- " <td>128.009995</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",
- " <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>AAL</th>\n",
- " <td>12.990000</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",
- " <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>AAP</th>\n",
- " <td>171.729996</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",
- " <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>AAPL</th>\n",
- " <td>155.809998</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",
- " <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>ABBV</th>\n",
- " <td>136.279999</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",
- " <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",
- " </tbody>\n",
- "</table>\n",
- "</div>\n",
- " <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-735ccea8-9105-4c3a-bb04-114746405acf')\"\n",
- " title=\"Convert this dataframe to an interactive table.\"\n",
- " style=\"display:none;\">\n",
- " \n",
- " <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
- " width=\"24px\">\n",
- " <path d=\"M0 0h24v24H0V0z\" fill=\"none\"/>\n",
- " <path d=\"M18.56 5.44l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94zm-11 1L8.5 8.5l.94-2.06 2.06-.94-2.06-.94L8.5 2.5l-.94 2.06-2.06.94zm10 10l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94z\"/><path d=\"M17.41 7.96l-1.37-1.37c-.4-.4-.92-.59-1.43-.59-.52 0-1.04.2-1.43.59L10.3 9.45l-7.72 7.72c-.78.78-.78 2.05 0 2.83L4 21.41c.39.39.9.59 1.41.59.51 0 1.02-.2 1.41-.59l7.78-7.78 2.81-2.81c.8-.78.8-2.07 0-2.86zM5.41 20L4 18.59l7.72-7.72 1.47 1.35L5.41 20z\"/>\n",
- " </svg>\n",
- " </button>\n",
- " \n",
- " <style>\n",
- " .colab-df-container {\n",
- " display:flex;\n",
- " flex-wrap:wrap;\n",
- " gap: 12px;\n",
- " }\n",
- "\n",
- " .colab-df-convert {\n",
- " background-color: #E8F0FE;\n",
- " border: none;\n",
- " border-radius: 50%;\n",
- " cursor: pointer;\n",
- " display: none;\n",
- " fill: #1967D2;\n",
- " height: 32px;\n",
- " padding: 0 0 0 0;\n",
- " width: 32px;\n",
- " }\n",
- "\n",
- " .colab-df-convert:hover {\n",
- " background-color: #E2EBFA;\n",
- " box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
- " fill: #174EA6;\n",
- " }\n",
- "\n",
- " [theme=dark] .colab-df-convert {\n",
- " background-color: #3B4455;\n",
- " fill: #D2E3FC;\n",
- " }\n",
- "\n",
- " [theme=dark] .colab-df-convert:hover {\n",
- " background-color: #434B5C;\n",
- " box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
- " filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
- " fill: #FFFFFF;\n",
- " }\n",
- " </style>\n",
- "\n",
- " <script>\n",
- " const buttonEl =\n",
- " document.querySelector('#df-735ccea8-9105-4c3a-bb04-114746405acf button.colab-df-convert');\n",
- " buttonEl.style.display =\n",
- " google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
- "\n",
- " async function convertToInteractive(key) {\n",
- " const element = document.querySelector('#df-735ccea8-9105-4c3a-bb04-114746405acf');\n",
- " const dataTable =\n",
- " await google.colab.kernel.invokeFunction('convertToInteractive',\n",
- " [key], {});\n",
- " if (!dataTable) return;\n",
- "\n",
- " const docLinkHtml = 'Like what you see? Visit the ' +\n",
- " '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
- " + ' to learn more about interactive tables.';\n",
- " element.innerHTML = '';\n",
- " dataTable['output_type'] = 'display_data';\n",
- " await google.colab.output.renderOutput(dataTable, element);\n",
- " const docLink = document.createElement('div');\n",
- " docLink.innerHTML = docLinkHtml;\n",
- " element.appendChild(docLink);\n",
- " }\n",
- " </script>\n",
- " </div>\n",
- " </div>\n",
- " "
- ]
- },
- "metadata": {},
- "execution_count": 41
- }
- ]
- },
- {
- "cell_type": "code",
- "source": [
- "ticker = 'A'\n",
- "ha_ticker_data['Low'][ticker][-1]"
- ],
- "metadata": {
- "colab": {
- "base_uri": "https://localhost:8080/"
- },
- "id": "Ek6PrinpHR-Z",
- "outputId": "2480ebea-de0e-4e85-8f90-a9e6c3683bd4"
- },
- "execution_count": 47,
- "outputs": [
- {
- "output_type": "execute_result",
- "data": {
- "text/plain": [
- "127.12000274658203"
- ]
- },
- "metadata": {},
- "execution_count": 47
- }
- ]
- },
- {
- "cell_type": "code",
- "source": [
- "for ticker in ticker_closes.columns:\n",
- "\n",
- " ticker_results.loc[ticker, 'sma50'] = ticker_closes[ticker].rolling(window = 50, min_periods = 1).mean().tail(1)[0]\n",
- " ticker_results.loc[ticker, 'sma100'] = ticker_closes[ticker].rolling(window = 100, min_periods = 1).mean().tail(1)[0]\n",
- " ticker_results.loc[ticker, 'sma200'] = ticker_closes[ticker].rolling(window = 200, min_periods = 1).mean().tail(1)[0]\n",
- " ticker_results.loc[ticker, 'above_all'] = ticker_results.loc[ticker, 'last_close'] > ticker_results.loc[ticker, 'sma50'] and \\\n",
- " ticker_results.loc[ticker, 'last_close'] > ticker_results.loc[ticker, 'sma100'] and \\\n",
- " ticker_results.loc[ticker, 'last_close'] > ticker_results.loc[ticker, 'sma200']\n",
- " ticker_results.loc[ticker, 'below_all'] = ticker_results.loc[ticker, 'last_close'] < ticker_results.loc[ticker, 'sma50'] and \\\n",
- " ticker_results.loc[ticker, 'last_close'] < ticker_results.loc[ticker, 'sma100'] and \\\n",
- " ticker_results.loc[ticker, 'last_close'] < ticker_results.loc[ticker, 'sma200']\n",
- "\n",
- " ticker_results.loc[ticker, 'last_flat_bottom'] = ha_ticker_data['Low'][ticker][-1] == ha_ticker_data['Open'][ticker][-1]\n",
- " ticker_results.loc[ticker, 'last_flat_top'] = ha_ticker_data['High'][ticker][-1] == ha_ticker_data['Open'][ticker][-1]\n",
- "\n",
- " ticker_results.loc[ticker, 't1_flat_bottom'] = ha_ticker_data['Low'][ticker][-2] == ha_ticker_data['Open'][ticker][-2]\n",
- " ticker_results.loc[ticker, 't1_flat_top'] = ha_ticker_data['High'][ticker][-2] == ha_ticker_data['Open'][ticker][-2]\n",
- "\n",
- " ticker_results.loc[ticker, 'two_flat_bottom'] = ticker_results.loc[ticker, 't1_flat_bottom'] and ticker_results.loc[ticker, 'last_flat_bottom']\n",
- " ticker_results.loc[ticker, 'two_flat_top'] = ticker_results.loc[ticker, 'last_flat_top'] and ticker_results.loc[ticker, 't1_flat_top']\n",
- "\n",
- " ticker_results.loc[ticker, 'good_long'] = ticker_results.loc[ticker, 'above_all'] and ticker_results.loc[ticker, 'two_flat_bottom']\n",
- " ticker_results.loc[ticker, 'good_short'] = ticker_results.loc[ticker, 'below_all'] and ticker_results.loc[ticker, 'two_flat_top']"
- ],
- "metadata": {
- "id": "trBorl18ZHBw"
- },
- "execution_count": 53,
- "outputs": []
- },
- {
- "cell_type": "code",
- "source": [
- "ticker_results"
- ],
- "metadata": {
- "id": "CoDRholqsSVK",
- "colab": {
- "base_uri": "https://localhost:8080/",
- "height": 424
- },
- "outputId": "fde710bf-32f1-4829-b789-e1120b96edf2"
- },
- "execution_count": 54,
- "outputs": [
- {
- "output_type": "execute_result",
- "data": {
- "text/plain": [
- " last_close sma50 sma100 sma200 above_all below_all \\\n",
- "A 128.009995 127.3384 124.5744 133.724999 False False \n",
- "AAL 12.990000 14.1182 15.4952 16.4178 False True \n",
- "AAP 171.729996 187.9036 192.8611 208.2079 False True \n",
- "AAPL 155.809998 156.845 153.2715 161.0885 False False \n",
- "ABBV 136.279999 145.376 148.0243 144.24435 False True \n",
- "... ... ... ... ... ... ... \n",
- "YUM 112.739998 117.2044 116.6597 120.96335 False True \n",
- "ZBH 105.570000 109.213401 113.8394 117.647967 False True \n",
- "ZBRA 297.600006 318.251199 330.535999 414.611649 False True \n",
- "ZION 55.040001 53.9468 55.1171 60.8519 False False \n",
- "ZTS 156.979996 172.122399 171.1468 189.399199 False True \n",
- "\n",
- " last_flat_bottom t1_flat_bottom last_flat_top t1_flat_top \\\n",
- "A False False False True \n",
- "AAL False False False True \n",
- "AAP False False False False \n",
- "AAPL False False False True \n",
- "ABBV False False False False \n",
- "... ... ... ... ... \n",
- "YUM True False False False \n",
- "ZBH False False False True \n",
- "ZBRA False False False False \n",
- "ZION False False False True \n",
- "ZTS False False False False \n",
- "\n",
- " two_flat_bottom two_flat_top good_long good_short \n",
- "A False False False False \n",
- "AAL False False False False \n",
- "AAP False False False False \n",
- "AAPL False False False False \n",
- "ABBV False False False False \n",
- "... ... ... ... ... \n",
- "YUM False False False False \n",
- "ZBH False False False False \n",
- "ZBRA False False False False \n",
- "ZION False False False False \n",
- "ZTS False False False False \n",
- "\n",
- "[503 rows x 14 columns]"
- ],
- "text/html": [
- "\n",
- " <div id=\"df-f778fc03-ad9e-4ec3-98de-4b3a4289fd87\">\n",
- " <div class=\"colab-df-container\">\n",
- " <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>last_close</th>\n",
- " <th>sma50</th>\n",
- " <th>sma100</th>\n",
- " <th>sma200</th>\n",
- " <th>above_all</th>\n",
- " <th>below_all</th>\n",
- " <th>last_flat_bottom</th>\n",
- " <th>t1_flat_bottom</th>\n",
- " <th>last_flat_top</th>\n",
- " <th>t1_flat_top</th>\n",
- " <th>two_flat_bottom</th>\n",
- " <th>two_flat_top</th>\n",
- " <th>good_long</th>\n",
- " <th>good_short</th>\n",
- " </tr>\n",
- " </thead>\n",
- " <tbody>\n",
- " <tr>\n",
- " <th>A</th>\n",
- " <td>128.009995</td>\n",
- " <td>127.3384</td>\n",
- " <td>124.5744</td>\n",
- " <td>133.724999</td>\n",
- " <td>False</td>\n",
- " <td>False</td>\n",
- " <td>False</td>\n",
- " <td>False</td>\n",
- " <td>False</td>\n",
- " <td>True</td>\n",
- " <td>False</td>\n",
- " <td>False</td>\n",
- " <td>False</td>\n",
- " <td>False</td>\n",
- " </tr>\n",
- " <tr>\n",
- " <th>AAL</th>\n",
- " <td>12.990000</td>\n",
- " <td>14.1182</td>\n",
- " <td>15.4952</td>\n",
- " <td>16.4178</td>\n",
- " <td>False</td>\n",
- " <td>True</td>\n",
- " <td>False</td>\n",
- " <td>False</td>\n",
- " <td>False</td>\n",
- " <td>True</td>\n",
- " <td>False</td>\n",
- " <td>False</td>\n",
- " <td>False</td>\n",
- " <td>False</td>\n",
- " </tr>\n",
- " <tr>\n",
- " <th>AAP</th>\n",
- " <td>171.729996</td>\n",
- " <td>187.9036</td>\n",
- " <td>192.8611</td>\n",
- " <td>208.2079</td>\n",
- " <td>False</td>\n",
- " <td>True</td>\n",
- " <td>False</td>\n",
- " <td>False</td>\n",
- " <td>False</td>\n",
- " <td>False</td>\n",
- " <td>False</td>\n",
- " <td>False</td>\n",
- " <td>False</td>\n",
- " <td>False</td>\n",
- " </tr>\n",
- " <tr>\n",
- " <th>AAPL</th>\n",
- " <td>155.809998</td>\n",
- " <td>156.845</td>\n",
- " <td>153.2715</td>\n",
- " <td>161.0885</td>\n",
- " <td>False</td>\n",
- " <td>False</td>\n",
- " <td>False</td>\n",
- " <td>False</td>\n",
- " <td>False</td>\n",
- " <td>True</td>\n",
- " <td>False</td>\n",
- " <td>False</td>\n",
- " <td>False</td>\n",
- " <td>False</td>\n",
- " </tr>\n",
- " <tr>\n",
- " <th>ABBV</th>\n",
- " <td>136.279999</td>\n",
- " <td>145.376</td>\n",
- " <td>148.0243</td>\n",
- " <td>144.24435</td>\n",
- " <td>False</td>\n",
- " <td>True</td>\n",
- " <td>False</td>\n",
- " <td>False</td>\n",
- " <td>False</td>\n",
- " <td>False</td>\n",
- " <td>False</td>\n",
- " <td>False</td>\n",
- " <td>False</td>\n",
- " <td>False</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",
- " <td>...</td>\n",
- " </tr>\n",
- " <tr>\n",
- " <th>YUM</th>\n",
- " <td>112.739998</td>\n",
- " <td>117.2044</td>\n",
- " <td>116.6597</td>\n",
- " <td>120.96335</td>\n",
- " <td>False</td>\n",
- " <td>True</td>\n",
- " <td>True</td>\n",
- " <td>False</td>\n",
- " <td>False</td>\n",
- " <td>False</td>\n",
- " <td>False</td>\n",
- " <td>False</td>\n",
- " <td>False</td>\n",
- " <td>False</td>\n",
- " </tr>\n",
- " <tr>\n",
- " <th>ZBH</th>\n",
- " <td>105.570000</td>\n",
- " <td>109.213401</td>\n",
- " <td>113.8394</td>\n",
- " <td>117.647967</td>\n",
- " <td>False</td>\n",
- " <td>True</td>\n",
- " <td>False</td>\n",
- " <td>False</td>\n",
- " <td>False</td>\n",
- " <td>True</td>\n",
- " <td>False</td>\n",
- " <td>False</td>\n",
- " <td>False</td>\n",
- " <td>False</td>\n",
- " </tr>\n",
- " <tr>\n",
- " <th>ZBRA</th>\n",
- " <td>297.600006</td>\n",
- " <td>318.251199</td>\n",
- " <td>330.535999</td>\n",
- " <td>414.611649</td>\n",
- " <td>False</td>\n",
- " <td>True</td>\n",
- " <td>False</td>\n",
- " <td>False</td>\n",
- " <td>False</td>\n",
- " <td>False</td>\n",
- " <td>False</td>\n",
- " <td>False</td>\n",
- " <td>False</td>\n",
- " <td>False</td>\n",
- " </tr>\n",
- " <tr>\n",
- " <th>ZION</th>\n",
- " <td>55.040001</td>\n",
- " <td>53.9468</td>\n",
- " <td>55.1171</td>\n",
- " <td>60.8519</td>\n",
- " <td>False</td>\n",
- " <td>False</td>\n",
- " <td>False</td>\n",
- " <td>False</td>\n",
- " <td>False</td>\n",
- " <td>True</td>\n",
- " <td>False</td>\n",
- " <td>False</td>\n",
- " <td>False</td>\n",
- " <td>False</td>\n",
- " </tr>\n",
- " <tr>\n",
- " <th>ZTS</th>\n",
- " <td>156.979996</td>\n",
- " <td>172.122399</td>\n",
- " <td>171.1468</td>\n",
- " <td>189.399199</td>\n",
- " <td>False</td>\n",
- " <td>True</td>\n",
- " <td>False</td>\n",
- " <td>False</td>\n",
- " <td>False</td>\n",
- " <td>False</td>\n",
- " <td>False</td>\n",
- " <td>False</td>\n",
- " <td>False</td>\n",
- " <td>False</td>\n",
- " </tr>\n",
- " </tbody>\n",
- "</table>\n",
- "<p>503 rows × 14 columns</p>\n",
- "</div>\n",
- " <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-f778fc03-ad9e-4ec3-98de-4b3a4289fd87')\"\n",
- " title=\"Convert this dataframe to an interactive table.\"\n",
- " style=\"display:none;\">\n",
- " \n",
- " <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
- " width=\"24px\">\n",
- " <path d=\"M0 0h24v24H0V0z\" fill=\"none\"/>\n",
- " <path d=\"M18.56 5.44l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94zm-11 1L8.5 8.5l.94-2.06 2.06-.94-2.06-.94L8.5 2.5l-.94 2.06-2.06.94zm10 10l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94z\"/><path d=\"M17.41 7.96l-1.37-1.37c-.4-.4-.92-.59-1.43-.59-.52 0-1.04.2-1.43.59L10.3 9.45l-7.72 7.72c-.78.78-.78 2.05 0 2.83L4 21.41c.39.39.9.59 1.41.59.51 0 1.02-.2 1.41-.59l7.78-7.78 2.81-2.81c.8-.78.8-2.07 0-2.86zM5.41 20L4 18.59l7.72-7.72 1.47 1.35L5.41 20z\"/>\n",
- " </svg>\n",
- " </button>\n",
- " \n",
- " <style>\n",
- " .colab-df-container {\n",
- " display:flex;\n",
- " flex-wrap:wrap;\n",
- " gap: 12px;\n",
- " }\n",
- "\n",
- " .colab-df-convert {\n",
- " background-color: #E8F0FE;\n",
- " border: none;\n",
- " border-radius: 50%;\n",
- " cursor: pointer;\n",
- " display: none;\n",
- " fill: #1967D2;\n",
- " height: 32px;\n",
- " padding: 0 0 0 0;\n",
- " width: 32px;\n",
- " }\n",
- "\n",
- " .colab-df-convert:hover {\n",
- " background-color: #E2EBFA;\n",
- " box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
- " fill: #174EA6;\n",
- " }\n",
- "\n",
- " [theme=dark] .colab-df-convert {\n",
- " background-color: #3B4455;\n",
- " fill: #D2E3FC;\n",
- " }\n",
- "\n",
- " [theme=dark] .colab-df-convert:hover {\n",
- " background-color: #434B5C;\n",
- " box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
- " filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
- " fill: #FFFFFF;\n",
- " }\n",
- " </style>\n",
- "\n",
- " <script>\n",
- " const buttonEl =\n",
- " document.querySelector('#df-f778fc03-ad9e-4ec3-98de-4b3a4289fd87 button.colab-df-convert');\n",
- " buttonEl.style.display =\n",
- " google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
- "\n",
- " async function convertToInteractive(key) {\n",
- " const element = document.querySelector('#df-f778fc03-ad9e-4ec3-98de-4b3a4289fd87');\n",
- " const dataTable =\n",
- " await google.colab.kernel.invokeFunction('convertToInteractive',\n",
- " [key], {});\n",
- " if (!dataTable) return;\n",
- "\n",
- " const docLinkHtml = 'Like what you see? Visit the ' +\n",
- " '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
- " + ' to learn more about interactive tables.';\n",
- " element.innerHTML = '';\n",
- " dataTable['output_type'] = 'display_data';\n",
- " await google.colab.output.renderOutput(dataTable, element);\n",
- " const docLink = document.createElement('div');\n",
- " docLink.innerHTML = docLinkHtml;\n",
- " element.appendChild(docLink);\n",
- " }\n",
- " </script>\n",
- " </div>\n",
- " </div>\n",
- " "
- ]
- },
- "metadata": {},
- "execution_count": 54
- }
- ]
- },
- {
- "cell_type": "code",
- "source": [
- "ticker_results.loc[ticker_results['good_long'] == True]"
- ],
- "metadata": {
- "colab": {
- "base_uri": "https://localhost:8080/",
- "height": 81
- },
- "id": "VMc8L3LKSWNy",
- "outputId": "a27bf05a-6357-4322-9276-1d0949749083"
- },
- "execution_count": 55,
- "outputs": [
- {
- "output_type": "execute_result",
- "data": {
- "text/plain": [
- " last_close sma50 sma100 sma200 above_all below_all \\\n",
- "CAH 70.989998 60.7288 58.7987 55.65735 True False \n",
- "\n",
- " last_flat_bottom t1_flat_bottom last_flat_top t1_flat_top two_flat_bottom \\\n",
- "CAH True True False False True \n",
- "\n",
- " two_flat_top good_long good_short \n",
- "CAH False True False "
- ],
- "text/html": [
- "\n",
- " <div id=\"df-e3723fc5-4322-45b0-ad6d-55f8f8e4e7ab\">\n",
- " <div class=\"colab-df-container\">\n",
- " <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>last_close</th>\n",
- " <th>sma50</th>\n",
- " <th>sma100</th>\n",
- " <th>sma200</th>\n",
- " <th>above_all</th>\n",
- " <th>below_all</th>\n",
- " <th>last_flat_bottom</th>\n",
- " <th>t1_flat_bottom</th>\n",
- " <th>last_flat_top</th>\n",
- " <th>t1_flat_top</th>\n",
- " <th>two_flat_bottom</th>\n",
- " <th>two_flat_top</th>\n",
- " <th>good_long</th>\n",
- " <th>good_short</th>\n",
- " </tr>\n",
- " </thead>\n",
- " <tbody>\n",
- " <tr>\n",
- " <th>CAH</th>\n",
- " <td>70.989998</td>\n",
- " <td>60.7288</td>\n",
- " <td>58.7987</td>\n",
- " <td>55.65735</td>\n",
- " <td>True</td>\n",
- " <td>False</td>\n",
- " <td>True</td>\n",
- " <td>True</td>\n",
- " <td>False</td>\n",
- " <td>False</td>\n",
- " <td>True</td>\n",
- " <td>False</td>\n",
- " <td>True</td>\n",
- " <td>False</td>\n",
- " </tr>\n",
- " </tbody>\n",
- "</table>\n",
- "</div>\n",
- " <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-e3723fc5-4322-45b0-ad6d-55f8f8e4e7ab')\"\n",
- " title=\"Convert this dataframe to an interactive table.\"\n",
- " style=\"display:none;\">\n",
- " \n",
- " <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
- " width=\"24px\">\n",
- " <path d=\"M0 0h24v24H0V0z\" fill=\"none\"/>\n",
- " <path d=\"M18.56 5.44l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94zm-11 1L8.5 8.5l.94-2.06 2.06-.94-2.06-.94L8.5 2.5l-.94 2.06-2.06.94zm10 10l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94z\"/><path d=\"M17.41 7.96l-1.37-1.37c-.4-.4-.92-.59-1.43-.59-.52 0-1.04.2-1.43.59L10.3 9.45l-7.72 7.72c-.78.78-.78 2.05 0 2.83L4 21.41c.39.39.9.59 1.41.59.51 0 1.02-.2 1.41-.59l7.78-7.78 2.81-2.81c.8-.78.8-2.07 0-2.86zM5.41 20L4 18.59l7.72-7.72 1.47 1.35L5.41 20z\"/>\n",
- " </svg>\n",
- " </button>\n",
- " \n",
- " <style>\n",
- " .colab-df-container {\n",
- " display:flex;\n",
- " flex-wrap:wrap;\n",
- " gap: 12px;\n",
- " }\n",
- "\n",
- " .colab-df-convert {\n",
- " background-color: #E8F0FE;\n",
- " border: none;\n",
- " border-radius: 50%;\n",
- " cursor: pointer;\n",
- " display: none;\n",
- " fill: #1967D2;\n",
- " height: 32px;\n",
- " padding: 0 0 0 0;\n",
- " width: 32px;\n",
- " }\n",
- "\n",
- " .colab-df-convert:hover {\n",
- " background-color: #E2EBFA;\n",
- " box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
- " fill: #174EA6;\n",
- " }\n",
- "\n",
- " [theme=dark] .colab-df-convert {\n",
- " background-color: #3B4455;\n",
- " fill: #D2E3FC;\n",
- " }\n",
- "\n",
- " [theme=dark] .colab-df-convert:hover {\n",
- " background-color: #434B5C;\n",
- " box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
- " filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
- " fill: #FFFFFF;\n",
- " }\n",
- " </style>\n",
- "\n",
- " <script>\n",
- " const buttonEl =\n",
- " document.querySelector('#df-e3723fc5-4322-45b0-ad6d-55f8f8e4e7ab button.colab-df-convert');\n",
- " buttonEl.style.display =\n",
- " google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
- "\n",
- " async function convertToInteractive(key) {\n",
- " const element = document.querySelector('#df-e3723fc5-4322-45b0-ad6d-55f8f8e4e7ab');\n",
- " const dataTable =\n",
- " await google.colab.kernel.invokeFunction('convertToInteractive',\n",
- " [key], {});\n",
- " if (!dataTable) return;\n",
- "\n",
- " const docLinkHtml = 'Like what you see? Visit the ' +\n",
- " '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
- " + ' to learn more about interactive tables.';\n",
- " element.innerHTML = '';\n",
- " dataTable['output_type'] = 'display_data';\n",
- " await google.colab.output.renderOutput(dataTable, element);\n",
- " const docLink = document.createElement('div');\n",
- " docLink.innerHTML = docLinkHtml;\n",
- " element.appendChild(docLink);\n",
- " }\n",
- " </script>\n",
- " </div>\n",
- " </div>\n",
- " "
- ]
- },
- "metadata": {},
- "execution_count": 55
- }
- ]
- },
- {
- "cell_type": "code",
- "source": [
- "ticker_results.loc[ticker_results['good_short'] == True]"
- ],
- "metadata": {
- "colab": {
- "base_uri": "https://localhost:8080/",
- "height": 896
- },
- "id": "vxdDxR0TKgNd",
- "outputId": "ec7e05af-a2d2-4df8-fe7b-7fbd1cdc4b2e"
- },
- "execution_count": 56,
- "outputs": [
- {
- "output_type": "execute_result",
- "data": {
- "text/plain": [
- " last_close sma50 sma100 sma200 above_all below_all \\\n",
- "AMD 80.239998 88.9144 91.095 108.9809 False True \n",
- "BKNG 1837.910034 1895.030005 2019.870403 2164.28429 False True \n",
- "DOW 49.310001 52.457 58.938 58.96615 False True \n",
- "DPZ 365.799988 396.393997 380.270899 422.06545 False True \n",
- "EQIX 631.159973 669.7076 677.4155 714.115452 False True \n",
- "FCX 28.299999 29.4772 34.5892 38.75215 False True \n",
- "FIS 89.970001 96.906 98.1052 101.71945 False True \n",
- "FLT 209.119995 220.1844 229.4393 231.01195 False True \n",
- "HPQ 27.639999 32.6776 34.7818 35.70045 False True \n",
- "HRL 46.389999 48.9204 49.3459 48.72335 False True \n",
- "HSIC 71.260002 76.1284 79.9454 79.9241 False True \n",
- "IQV 207.259995 225.362001 219.561001 233.43535 False True \n",
- "LYB 80.779999 87.351 96.7496 96.72625 False True \n",
- "MPWR 424.420013 455.526601 439.029101 450.458952 False True \n",
- "NSC 239.259995 242.808199 244.047299 260.42445 False True \n",
- "NVDA 136.470001 168.6804 175.922 221.70725 False True \n",
- "NWL 17.520000 19.792 20.5676 21.64345 False True \n",
- "PVH 54.580002 61.9398 65.6222 80.47085 False True \n",
- "RL 90.010002 95.2326 97.9254 107.68015 False True \n",
- "RTX 87.589996 93.15 94.4544 93.18995 False True \n",
- "SEDG 267.119995 296.899196 281.759498 285.52135 False True \n",
- "SWK 85.769997 102.1148 112.0977 141.003349 False True \n",
- "T 17.190001 19.1376 19.6063 18.968898 False True \n",
- "TTWO 118.629997 126.3804 125.426001 143.99845 False True \n",
- "TWTR 38.630001 40.088 41.3936 40.6522 False True \n",
- "VZ 41.299999 46.719 48.4743 50.5009 False True \n",
- "XRAY 31.799999 35.5014 37.6142 45.09095 False True \n",
- "\n",
- " last_flat_bottom t1_flat_bottom last_flat_top t1_flat_top \\\n",
- "AMD False False True True \n",
- "BKNG False False True True \n",
- "DOW False False True True \n",
- "DPZ False False True True \n",
- "EQIX False False True True \n",
- "FCX False False True True \n",
- "FIS False False True True \n",
- "FLT False False True True \n",
- "HPQ False False True True \n",
- "HRL False False True True \n",
- "HSIC False False True True \n",
- "IQV False False True True \n",
- "LYB False False True True \n",
- "MPWR False False True True \n",
- "NSC False False True True \n",
- "NVDA False False True True \n",
- "NWL False False True True \n",
- "PVH False False True True \n",
- "RL False False True True \n",
- "RTX False False True True \n",
- "SEDG False False True True \n",
- "SWK False False True True \n",
- "T False False True True \n",
- "TTWO False False True True \n",
- "TWTR False False True True \n",
- "VZ False False True True \n",
- "XRAY False False True True \n",
- "\n",
- " two_flat_bottom two_flat_top good_long good_short \n",
- "AMD False True False True \n",
- "BKNG False True False True \n",
- "DOW False True False True \n",
- "DPZ False True False True \n",
- "EQIX False True False True \n",
- "FCX False True False True \n",
- "FIS False True False True \n",
- "FLT False True False True \n",
- "HPQ False True False True \n",
- "HRL False True False True \n",
- "HSIC False True False True \n",
- "IQV False True False True \n",
- "LYB False True False True \n",
- "MPWR False True False True \n",
- "NSC False True False True \n",
- "NVDA False True False True \n",
- "NWL False True False True \n",
- "PVH False True False True \n",
- "RL False True False True \n",
- "RTX False True False True \n",
- "SEDG False True False True \n",
- "SWK False True False True \n",
- "T False True False True \n",
- "TTWO False True False True \n",
- "TWTR False True False True \n",
- "VZ False True False True \n",
- "XRAY False True False True "
- ],
- "text/html": [
- "\n",
- " <div id=\"df-9637e530-e0a4-45bb-8b13-8abac86d7b02\">\n",
- " <div class=\"colab-df-container\">\n",
- " <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>last_close</th>\n",
- " <th>sma50</th>\n",
- " <th>sma100</th>\n",
- " <th>sma200</th>\n",
- " <th>above_all</th>\n",
- " <th>below_all</th>\n",
- " <th>last_flat_bottom</th>\n",
- " <th>t1_flat_bottom</th>\n",
- " <th>last_flat_top</th>\n",
- " <th>t1_flat_top</th>\n",
- " <th>two_flat_bottom</th>\n",
- " <th>two_flat_top</th>\n",
- " <th>good_long</th>\n",
- " <th>good_short</th>\n",
- " </tr>\n",
- " </thead>\n",
- " <tbody>\n",
- " <tr>\n",
- " <th>AMD</th>\n",
- " <td>80.239998</td>\n",
- " <td>88.9144</td>\n",
- " <td>91.095</td>\n",
- " <td>108.9809</td>\n",
- " <td>False</td>\n",
- " <td>True</td>\n",
- " <td>False</td>\n",
- " <td>False</td>\n",
- " <td>True</td>\n",
- " <td>True</td>\n",
- " <td>False</td>\n",
- " <td>True</td>\n",
- " <td>False</td>\n",
- " <td>True</td>\n",
- " </tr>\n",
- " <tr>\n",
- " <th>BKNG</th>\n",
- " <td>1837.910034</td>\n",
- " <td>1895.030005</td>\n",
- " <td>2019.870403</td>\n",
- " <td>2164.28429</td>\n",
- " <td>False</td>\n",
- " <td>True</td>\n",
- " <td>False</td>\n",
- " <td>False</td>\n",
- " <td>True</td>\n",
- " <td>True</td>\n",
- " <td>False</td>\n",
- " <td>True</td>\n",
- " <td>False</td>\n",
- " <td>True</td>\n",
- " </tr>\n",
- " <tr>\n",
- " <th>DOW</th>\n",
- " <td>49.310001</td>\n",
- " <td>52.457</td>\n",
- " <td>58.938</td>\n",
- " <td>58.96615</td>\n",
- " <td>False</td>\n",
- " <td>True</td>\n",
- " <td>False</td>\n",
- " <td>False</td>\n",
- " <td>True</td>\n",
- " <td>True</td>\n",
- " <td>False</td>\n",
- " <td>True</td>\n",
- " <td>False</td>\n",
- " <td>True</td>\n",
- " </tr>\n",
- " <tr>\n",
- " <th>DPZ</th>\n",
- " <td>365.799988</td>\n",
- " <td>396.393997</td>\n",
- " <td>380.270899</td>\n",
- " <td>422.06545</td>\n",
- " <td>False</td>\n",
- " <td>True</td>\n",
- " <td>False</td>\n",
- " <td>False</td>\n",
- " <td>True</td>\n",
- " <td>True</td>\n",
- " <td>False</td>\n",
- " <td>True</td>\n",
- " <td>False</td>\n",
- " <td>True</td>\n",
- " </tr>\n",
- " <tr>\n",
- " <th>EQIX</th>\n",
- " <td>631.159973</td>\n",
- " <td>669.7076</td>\n",
- " <td>677.4155</td>\n",
- " <td>714.115452</td>\n",
- " <td>False</td>\n",
- " <td>True</td>\n",
- " <td>False</td>\n",
- " <td>False</td>\n",
- " <td>True</td>\n",
- " <td>True</td>\n",
- " <td>False</td>\n",
- " <td>True</td>\n",
- " <td>False</td>\n",
- " <td>True</td>\n",
- " </tr>\n",
- " <tr>\n",
- " <th>FCX</th>\n",
- " <td>28.299999</td>\n",
- " <td>29.4772</td>\n",
- " <td>34.5892</td>\n",
- " <td>38.75215</td>\n",
- " <td>False</td>\n",
- " <td>True</td>\n",
- " <td>False</td>\n",
- " <td>False</td>\n",
- " <td>True</td>\n",
- " <td>True</td>\n",
- " <td>False</td>\n",
- " <td>True</td>\n",
- " <td>False</td>\n",
- " <td>True</td>\n",
- " </tr>\n",
- " <tr>\n",
- " <th>FIS</th>\n",
- " <td>89.970001</td>\n",
- " <td>96.906</td>\n",
- " <td>98.1052</td>\n",
- " <td>101.71945</td>\n",
- " <td>False</td>\n",
- " <td>True</td>\n",
- " <td>False</td>\n",
- " <td>False</td>\n",
- " <td>True</td>\n",
- " <td>True</td>\n",
- " <td>False</td>\n",
- " <td>True</td>\n",
- " <td>False</td>\n",
- " <td>True</td>\n",
- " </tr>\n",
- " <tr>\n",
- " <th>FLT</th>\n",
- " <td>209.119995</td>\n",
- " <td>220.1844</td>\n",
- " <td>229.4393</td>\n",
- " <td>231.01195</td>\n",
- " <td>False</td>\n",
- " <td>True</td>\n",
- " <td>False</td>\n",
- " <td>False</td>\n",
- " <td>True</td>\n",
- " <td>True</td>\n",
- " <td>False</td>\n",
- " <td>True</td>\n",
- " <td>False</td>\n",
- " <td>True</td>\n",
- " </tr>\n",
- " <tr>\n",
- " <th>HPQ</th>\n",
- " <td>27.639999</td>\n",
- " <td>32.6776</td>\n",
- " <td>34.7818</td>\n",
- " <td>35.70045</td>\n",
- " <td>False</td>\n",
- " <td>True</td>\n",
- " <td>False</td>\n",
- " <td>False</td>\n",
- " <td>True</td>\n",
- " <td>True</td>\n",
- " <td>False</td>\n",
- " <td>True</td>\n",
- " <td>False</td>\n",
- " <td>True</td>\n",
- " </tr>\n",
- " <tr>\n",
- " <th>HRL</th>\n",
- " <td>46.389999</td>\n",
- " <td>48.9204</td>\n",
- " <td>49.3459</td>\n",
- " <td>48.72335</td>\n",
- " <td>False</td>\n",
- " <td>True</td>\n",
- " <td>False</td>\n",
- " <td>False</td>\n",
- " <td>True</td>\n",
- " <td>True</td>\n",
- " <td>False</td>\n",
- " <td>True</td>\n",
- " <td>False</td>\n",
- " <td>True</td>\n",
- " </tr>\n",
- " <tr>\n",
- " <th>HSIC</th>\n",
- " <td>71.260002</td>\n",
- " <td>76.1284</td>\n",
- " <td>79.9454</td>\n",
- " <td>79.9241</td>\n",
- " <td>False</td>\n",
- " <td>True</td>\n",
- " <td>False</td>\n",
- " <td>False</td>\n",
- " <td>True</td>\n",
- " <td>True</td>\n",
- " <td>False</td>\n",
- " <td>True</td>\n",
- " <td>False</td>\n",
- " <td>True</td>\n",
- " </tr>\n",
- " <tr>\n",
- " <th>IQV</th>\n",
- " <td>207.259995</td>\n",
- " <td>225.362001</td>\n",
- " <td>219.561001</td>\n",
- " <td>233.43535</td>\n",
- " <td>False</td>\n",
- " <td>True</td>\n",
- " <td>False</td>\n",
- " <td>False</td>\n",
- " <td>True</td>\n",
- " <td>True</td>\n",
- " <td>False</td>\n",
- " <td>True</td>\n",
- " <td>False</td>\n",
- " <td>True</td>\n",
- " </tr>\n",
- " <tr>\n",
- " <th>LYB</th>\n",
- " <td>80.779999</td>\n",
- " <td>87.351</td>\n",
- " <td>96.7496</td>\n",
- " <td>96.72625</td>\n",
- " <td>False</td>\n",
- " <td>True</td>\n",
- " <td>False</td>\n",
- " <td>False</td>\n",
- " <td>True</td>\n",
- " <td>True</td>\n",
- " <td>False</td>\n",
- " <td>True</td>\n",
- " <td>False</td>\n",
- " <td>True</td>\n",
- " </tr>\n",
- " <tr>\n",
- " <th>MPWR</th>\n",
- " <td>424.420013</td>\n",
- " <td>455.526601</td>\n",
- " <td>439.029101</td>\n",
- " <td>450.458952</td>\n",
- " <td>False</td>\n",
- " <td>True</td>\n",
- " <td>False</td>\n",
- " <td>False</td>\n",
- " <td>True</td>\n",
- " <td>True</td>\n",
- " <td>False</td>\n",
- " <td>True</td>\n",
- " <td>False</td>\n",
- " <td>True</td>\n",
- " </tr>\n",
- " <tr>\n",
- " <th>NSC</th>\n",
- " <td>239.259995</td>\n",
- " <td>242.808199</td>\n",
- " <td>244.047299</td>\n",
- " <td>260.42445</td>\n",
- " <td>False</td>\n",
- " <td>True</td>\n",
- " <td>False</td>\n",
- " <td>False</td>\n",
- " <td>True</td>\n",
- " <td>True</td>\n",
- " <td>False</td>\n",
- " <td>True</td>\n",
- " <td>False</td>\n",
- " <td>True</td>\n",
- " </tr>\n",
- " <tr>\n",
- " <th>NVDA</th>\n",
- " <td>136.470001</td>\n",
- " <td>168.6804</td>\n",
- " <td>175.922</td>\n",
- " <td>221.70725</td>\n",
- " <td>False</td>\n",
- " <td>True</td>\n",
- " <td>False</td>\n",
- " <td>False</td>\n",
- " <td>True</td>\n",
- " <td>True</td>\n",
- " <td>False</td>\n",
- " <td>True</td>\n",
- " <td>False</td>\n",
- " <td>True</td>\n",
- " </tr>\n",
- " <tr>\n",
- " <th>NWL</th>\n",
- " <td>17.520000</td>\n",
- " <td>19.792</td>\n",
- " <td>20.5676</td>\n",
- " <td>21.64345</td>\n",
- " <td>False</td>\n",
- " <td>True</td>\n",
- " <td>False</td>\n",
- " <td>False</td>\n",
- " <td>True</td>\n",
- " <td>True</td>\n",
- " <td>False</td>\n",
- " <td>True</td>\n",
- " <td>False</td>\n",
- " <td>True</td>\n",
- " </tr>\n",
- " <tr>\n",
- " <th>PVH</th>\n",
- " <td>54.580002</td>\n",
- " <td>61.9398</td>\n",
- " <td>65.6222</td>\n",
- " <td>80.47085</td>\n",
- " <td>False</td>\n",
- " <td>True</td>\n",
- " <td>False</td>\n",
- " <td>False</td>\n",
- " <td>True</td>\n",
- " <td>True</td>\n",
- " <td>False</td>\n",
- " <td>True</td>\n",
- " <td>False</td>\n",
- " <td>True</td>\n",
- " </tr>\n",
- " <tr>\n",
- " <th>RL</th>\n",
- " <td>90.010002</td>\n",
- " <td>95.2326</td>\n",
- " <td>97.9254</td>\n",
- " <td>107.68015</td>\n",
- " <td>False</td>\n",
- " <td>True</td>\n",
- " <td>False</td>\n",
- " <td>False</td>\n",
- " <td>True</td>\n",
- " <td>True</td>\n",
- " <td>False</td>\n",
- " <td>True</td>\n",
- " <td>False</td>\n",
- " <td>True</td>\n",
- " </tr>\n",
- " <tr>\n",
- " <th>RTX</th>\n",
- " <td>87.589996</td>\n",
- " <td>93.15</td>\n",
- " <td>94.4544</td>\n",
- " <td>93.18995</td>\n",
- " <td>False</td>\n",
- " <td>True</td>\n",
- " <td>False</td>\n",
- " <td>False</td>\n",
- " <td>True</td>\n",
- " <td>True</td>\n",
- " <td>False</td>\n",
- " <td>True</td>\n",
- " <td>False</td>\n",
- " <td>True</td>\n",
- " </tr>\n",
- " <tr>\n",
- " <th>SEDG</th>\n",
- " <td>267.119995</td>\n",
- " <td>296.899196</td>\n",
- " <td>281.759498</td>\n",
- " <td>285.52135</td>\n",
- " <td>False</td>\n",
- " <td>True</td>\n",
- " <td>False</td>\n",
- " <td>False</td>\n",
- " <td>True</td>\n",
- " <td>True</td>\n",
- " <td>False</td>\n",
- " <td>True</td>\n",
- " <td>False</td>\n",
- " <td>True</td>\n",
- " </tr>\n",
- " <tr>\n",
- " <th>SWK</th>\n",
- " <td>85.769997</td>\n",
- " <td>102.1148</td>\n",
- " <td>112.0977</td>\n",
- " <td>141.003349</td>\n",
- " <td>False</td>\n",
- " <td>True</td>\n",
- " <td>False</td>\n",
- " <td>False</td>\n",
- " <td>True</td>\n",
- " <td>True</td>\n",
- " <td>False</td>\n",
- " <td>True</td>\n",
- " <td>False</td>\n",
- " <td>True</td>\n",
- " </tr>\n",
- " <tr>\n",
- " <th>T</th>\n",
- " <td>17.190001</td>\n",
- " <td>19.1376</td>\n",
- " <td>19.6063</td>\n",
- " <td>18.968898</td>\n",
- " <td>False</td>\n",
- " <td>True</td>\n",
- " <td>False</td>\n",
- " <td>False</td>\n",
- " <td>True</td>\n",
- " <td>True</td>\n",
- " <td>False</td>\n",
- " <td>True</td>\n",
- " <td>False</td>\n",
- " <td>True</td>\n",
- " </tr>\n",
- " <tr>\n",
- " <th>TTWO</th>\n",
- " <td>118.629997</td>\n",
- " <td>126.3804</td>\n",
- " <td>125.426001</td>\n",
- " <td>143.99845</td>\n",
- " <td>False</td>\n",
- " <td>True</td>\n",
- " <td>False</td>\n",
- " <td>False</td>\n",
- " <td>True</td>\n",
- " <td>True</td>\n",
- " <td>False</td>\n",
- " <td>True</td>\n",
- " <td>False</td>\n",
- " <td>True</td>\n",
- " </tr>\n",
- " <tr>\n",
- " <th>TWTR</th>\n",
- " <td>38.630001</td>\n",
- " <td>40.088</td>\n",
- " <td>41.3936</td>\n",
- " <td>40.6522</td>\n",
- " <td>False</td>\n",
- " <td>True</td>\n",
- " <td>False</td>\n",
- " <td>False</td>\n",
- " <td>True</td>\n",
- " <td>True</td>\n",
- " <td>False</td>\n",
- " <td>True</td>\n",
- " <td>False</td>\n",
- " <td>True</td>\n",
- " </tr>\n",
- " <tr>\n",
- " <th>VZ</th>\n",
- " <td>41.299999</td>\n",
- " <td>46.719</td>\n",
- " <td>48.4743</td>\n",
- " <td>50.5009</td>\n",
- " <td>False</td>\n",
- " <td>True</td>\n",
- " <td>False</td>\n",
- " <td>False</td>\n",
- " <td>True</td>\n",
- " <td>True</td>\n",
- " <td>False</td>\n",
- " <td>True</td>\n",
- " <td>False</td>\n",
- " <td>True</td>\n",
- " </tr>\n",
- " <tr>\n",
- " <th>XRAY</th>\n",
- " <td>31.799999</td>\n",
- " <td>35.5014</td>\n",
- " <td>37.6142</td>\n",
- " <td>45.09095</td>\n",
- " <td>False</td>\n",
- " <td>True</td>\n",
- " <td>False</td>\n",
- " <td>False</td>\n",
- " <td>True</td>\n",
- " <td>True</td>\n",
- " <td>False</td>\n",
- " <td>True</td>\n",
- " <td>False</td>\n",
- " <td>True</td>\n",
- " </tr>\n",
- " </tbody>\n",
- "</table>\n",
- "</div>\n",
- " <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-9637e530-e0a4-45bb-8b13-8abac86d7b02')\"\n",
- " title=\"Convert this dataframe to an interactive table.\"\n",
- " style=\"display:none;\">\n",
- " \n",
- " <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
- " width=\"24px\">\n",
- " <path d=\"M0 0h24v24H0V0z\" fill=\"none\"/>\n",
- " <path d=\"M18.56 5.44l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94zm-11 1L8.5 8.5l.94-2.06 2.06-.94-2.06-.94L8.5 2.5l-.94 2.06-2.06.94zm10 10l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94z\"/><path d=\"M17.41 7.96l-1.37-1.37c-.4-.4-.92-.59-1.43-.59-.52 0-1.04.2-1.43.59L10.3 9.45l-7.72 7.72c-.78.78-.78 2.05 0 2.83L4 21.41c.39.39.9.59 1.41.59.51 0 1.02-.2 1.41-.59l7.78-7.78 2.81-2.81c.8-.78.8-2.07 0-2.86zM5.41 20L4 18.59l7.72-7.72 1.47 1.35L5.41 20z\"/>\n",
- " </svg>\n",
- " </button>\n",
- " \n",
- " <style>\n",
- " .colab-df-container {\n",
- " display:flex;\n",
- " flex-wrap:wrap;\n",
- " gap: 12px;\n",
- " }\n",
- "\n",
- " .colab-df-convert {\n",
- " background-color: #E8F0FE;\n",
- " border: none;\n",
- " border-radius: 50%;\n",
- " cursor: pointer;\n",
- " display: none;\n",
- " fill: #1967D2;\n",
- " height: 32px;\n",
- " padding: 0 0 0 0;\n",
- " width: 32px;\n",
- " }\n",
- "\n",
- " .colab-df-convert:hover {\n",
- " background-color: #E2EBFA;\n",
- " box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
- " fill: #174EA6;\n",
- " }\n",
- "\n",
- " [theme=dark] .colab-df-convert {\n",
- " background-color: #3B4455;\n",
- " fill: #D2E3FC;\n",
- " }\n",
- "\n",
- " [theme=dark] .colab-df-convert:hover {\n",
- " background-color: #434B5C;\n",
- " box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
- " filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
- " fill: #FFFFFF;\n",
- " }\n",
- " </style>\n",
- "\n",
- " <script>\n",
- " const buttonEl =\n",
- " document.querySelector('#df-9637e530-e0a4-45bb-8b13-8abac86d7b02 button.colab-df-convert');\n",
- " buttonEl.style.display =\n",
- " google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
- "\n",
- " async function convertToInteractive(key) {\n",
- " const element = document.querySelector('#df-9637e530-e0a4-45bb-8b13-8abac86d7b02');\n",
- " const dataTable =\n",
- " await google.colab.kernel.invokeFunction('convertToInteractive',\n",
- " [key], {});\n",
- " if (!dataTable) return;\n",
- "\n",
- " const docLinkHtml = 'Like what you see? Visit the ' +\n",
- " '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
- " + ' to learn more about interactive tables.';\n",
- " element.innerHTML = '';\n",
- " dataTable['output_type'] = 'display_data';\n",
- " await google.colab.output.renderOutput(dataTable, element);\n",
- " const docLink = document.createElement('div');\n",
- " docLink.innerHTML = docLinkHtml;\n",
- " element.appendChild(docLink);\n",
- " }\n",
- " </script>\n",
- " </div>\n",
- " </div>\n",
- " "
- ]
- },
- "metadata": {},
- "execution_count": 56
- }
- ]
- }
- ]
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement