Advertisement
Guest User

Untitled

a guest
Sep 5th, 2022
1,126
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 104.13 KB | None | 0 0
  1. {
  2. "nbformat": 4,
  3. "nbformat_minor": 0,
  4. "metadata": {
  5. "colab": {
  6. "provenance": [],
  7. "collapsed_sections": []
  8. },
  9. "kernelspec": {
  10. "name": "python3",
  11. "display_name": "Python 3"
  12. },
  13. "language_info": {
  14. "name": "python"
  15. }
  16. },
  17. "cells": [
  18. {
  19. "cell_type": "markdown",
  20. "source": [
  21. "[Keeping it Really Simple](https://www.reddit.com/r/RealDayTrading/comments/svn70b/keeping_it_really_simple/)\n",
  22. "\n",
  23. "3. HA continuation of at least 2 days\n",
  24. "4. Above or below all major SMAs (50/100/200-day)\n",
  25. "\n",
  26. "[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",
  27. "\n",
  28. "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/)"
  29. ],
  30. "metadata": {
  31. "id": "3c-Udtwdecef"
  32. }
  33. },
  34. {
  35. "cell_type": "code",
  36. "execution_count": 2,
  37. "metadata": {
  38. "id": "c6GNIptFcXkQ",
  39. "colab": {
  40. "base_uri": "https://localhost:8080/"
  41. },
  42. "outputId": "f30c0050-ed4d-4aa6-ad8b-9b2b0d5a13b5"
  43. },
  44. "outputs": [
  45. {
  46. "output_type": "stream",
  47. "name": "stdout",
  48. "text": [
  49. "Looking in indexes: https://pypi.org/simple, https://us-python.pkg.dev/colab-wheels/public/simple/\n",
  50. "Collecting yfinance\n",
  51. " Downloading yfinance-0.1.74-py2.py3-none-any.whl (27 kB)\n",
  52. "Collecting requests>=2.26\n",
  53. " Downloading requests-2.28.1-py3-none-any.whl (62 kB)\n",
  54. "\u001b[K |████████████████████████████████| 62 kB 1.2 MB/s \n",
  55. "\u001b[?25hRequirement already satisfied: multitasking>=0.0.7 in /usr/local/lib/python3.7/dist-packages (from yfinance) (0.0.11)\n",
  56. "Requirement already satisfied: pandas>=0.24.0 in /usr/local/lib/python3.7/dist-packages (from yfinance) (1.3.5)\n",
  57. "Requirement already satisfied: lxml>=4.5.1 in /usr/local/lib/python3.7/dist-packages (from yfinance) (4.9.1)\n",
  58. "Requirement already satisfied: numpy>=1.15 in /usr/local/lib/python3.7/dist-packages (from yfinance) (1.21.6)\n",
  59. "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",
  60. "Requirement already satisfied: pytz>=2017.3 in /usr/local/lib/python3.7/dist-packages (from pandas>=0.24.0->yfinance) (2022.2.1)\n",
  61. "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",
  62. "Requirement already satisfied: charset-normalizer<3,>=2 in /usr/local/lib/python3.7/dist-packages (from requests>=2.26->yfinance) (2.1.1)\n",
  63. "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",
  64. "Requirement already satisfied: idna<4,>=2.5 in /usr/local/lib/python3.7/dist-packages (from requests>=2.26->yfinance) (2.10)\n",
  65. "Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.7/dist-packages (from requests>=2.26->yfinance) (2022.6.15)\n",
  66. "Installing collected packages: requests, yfinance\n",
  67. " Attempting uninstall: requests\n",
  68. " Found existing installation: requests 2.23.0\n",
  69. " Uninstalling requests-2.23.0:\n",
  70. " Successfully uninstalled requests-2.23.0\n",
  71. "Successfully installed requests-2.28.1 yfinance-0.1.74\n"
  72. ]
  73. }
  74. ],
  75. "source": [
  76. "#https://blog.quantinsti.com/stock-market-data-analysis-python/\n",
  77. "!pip install yfinance"
  78. ]
  79. },
  80. {
  81. "cell_type": "code",
  82. "source": [
  83. "# import packages\n",
  84. "import yfinance as yf\n",
  85. "import pandas as pd\n",
  86. "# import numpy as np\n",
  87. "# import datetime as dt"
  88. ],
  89. "metadata": {
  90. "id": "Zoa2ux9FcaeI"
  91. },
  92. "execution_count": 3,
  93. "outputs": []
  94. },
  95. {
  96. "cell_type": "code",
  97. "source": [
  98. "# get SPY and SPDR sector ETFs D1 data\n",
  99. "etfs = ['SPY','XLK','XLC','XLY','XLP','XLV','XLF','XLE','XLI','XLB','XLU','XLRE']\n",
  100. "# etfs\n",
  101. "\n",
  102. "start_date = '2021-9-3'\n",
  103. "end_date = '2022-9-3'\n",
  104. "\n",
  105. "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"
  106. ],
  107. "metadata": {
  108. "id": "YeXt3wjhcfg-",
  109. "colab": {
  110. "base_uri": "https://localhost:8080/"
  111. },
  112. "outputId": "716f0beb-409f-483b-fffe-8b044cd586e4"
  113. },
  114. "execution_count": 4,
  115. "outputs": [
  116. {
  117. "output_type": "stream",
  118. "name": "stdout",
  119. "text": [
  120. "[*********************100%***********************] 12 of 12 completed\n"
  121. ]
  122. }
  123. ]
  124. },
  125. {
  126. "cell_type": "code",
  127. "source": [
  128. "# etf_data.dtypes"
  129. ],
  130. "metadata": {
  131. "id": "tsmIvqSSN8Qe"
  132. },
  133. "execution_count": null,
  134. "outputs": []
  135. },
  136. {
  137. "cell_type": "code",
  138. "source": [
  139. "SPY_D1 = pd.DataFrame()\n",
  140. "\n",
  141. "SPY_D1['Close'] = etf_data['Close']['SPY']\n",
  142. "SPY_D1['sma50'] = SPY_D1['Close'].rolling(window = 50, min_periods = 1).mean()\n",
  143. "SPY_D1['sma100'] = SPY_D1['Close'].rolling(window = 100, min_periods = 1).mean()\n",
  144. "SPY_D1['sma200'] = SPY_D1['Close'].rolling(window = 200, min_periods = 1).mean()\n",
  145. "SPY_D1.tail()"
  146. ],
  147. "metadata": {
  148. "colab": {
  149. "base_uri": "https://localhost:8080/",
  150. "height": 238
  151. },
  152. "id": "Oo09C6mYLIM-",
  153. "outputId": "c18e1638-0459-4d89-e27e-f6227e4592b7"
  154. },
  155. "execution_count": null,
  156. "outputs": [
  157. {
  158. "output_type": "execute_result",
  159. "data": {
  160. "text/plain": [
  161. " Close sma50 sma100 sma200\n",
  162. "Date \n",
  163. "2022-08-29 402.630005 399.283201 405.922501 429.377851\n",
  164. "2022-08-30 398.209991 399.930201 405.439401 429.050051\n",
  165. "2022-08-31 395.179993 400.332401 404.903501 428.689601\n",
  166. "2022-09-01 396.420013 400.773000 404.392001 428.334552\n",
  167. "2022-09-02 392.239990 401.056600 403.915201 427.949352"
  168. ],
  169. "text/html": [
  170. "\n",
  171. " <div id=\"df-f4ef70aa-3092-4d55-a981-4d26634db27a\">\n",
  172. " <div class=\"colab-df-container\">\n",
  173. " <div>\n",
  174. "<style scoped>\n",
  175. " .dataframe tbody tr th:only-of-type {\n",
  176. " vertical-align: middle;\n",
  177. " }\n",
  178. "\n",
  179. " .dataframe tbody tr th {\n",
  180. " vertical-align: top;\n",
  181. " }\n",
  182. "\n",
  183. " .dataframe thead th {\n",
  184. " text-align: right;\n",
  185. " }\n",
  186. "</style>\n",
  187. "<table border=\"1\" class=\"dataframe\">\n",
  188. " <thead>\n",
  189. " <tr style=\"text-align: right;\">\n",
  190. " <th></th>\n",
  191. " <th>Close</th>\n",
  192. " <th>sma50</th>\n",
  193. " <th>sma100</th>\n",
  194. " <th>sma200</th>\n",
  195. " </tr>\n",
  196. " <tr>\n",
  197. " <th>Date</th>\n",
  198. " <th></th>\n",
  199. " <th></th>\n",
  200. " <th></th>\n",
  201. " <th></th>\n",
  202. " </tr>\n",
  203. " </thead>\n",
  204. " <tbody>\n",
  205. " <tr>\n",
  206. " <th>2022-08-29</th>\n",
  207. " <td>402.630005</td>\n",
  208. " <td>399.283201</td>\n",
  209. " <td>405.922501</td>\n",
  210. " <td>429.377851</td>\n",
  211. " </tr>\n",
  212. " <tr>\n",
  213. " <th>2022-08-30</th>\n",
  214. " <td>398.209991</td>\n",
  215. " <td>399.930201</td>\n",
  216. " <td>405.439401</td>\n",
  217. " <td>429.050051</td>\n",
  218. " </tr>\n",
  219. " <tr>\n",
  220. " <th>2022-08-31</th>\n",
  221. " <td>395.179993</td>\n",
  222. " <td>400.332401</td>\n",
  223. " <td>404.903501</td>\n",
  224. " <td>428.689601</td>\n",
  225. " </tr>\n",
  226. " <tr>\n",
  227. " <th>2022-09-01</th>\n",
  228. " <td>396.420013</td>\n",
  229. " <td>400.773000</td>\n",
  230. " <td>404.392001</td>\n",
  231. " <td>428.334552</td>\n",
  232. " </tr>\n",
  233. " <tr>\n",
  234. " <th>2022-09-02</th>\n",
  235. " <td>392.239990</td>\n",
  236. " <td>401.056600</td>\n",
  237. " <td>403.915201</td>\n",
  238. " <td>427.949352</td>\n",
  239. " </tr>\n",
  240. " </tbody>\n",
  241. "</table>\n",
  242. "</div>\n",
  243. " <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-f4ef70aa-3092-4d55-a981-4d26634db27a')\"\n",
  244. " title=\"Convert this dataframe to an interactive table.\"\n",
  245. " style=\"display:none;\">\n",
  246. " \n",
  247. " <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
  248. " width=\"24px\">\n",
  249. " <path d=\"M0 0h24v24H0V0z\" fill=\"none\"/>\n",
  250. " <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",
  251. " </svg>\n",
  252. " </button>\n",
  253. " \n",
  254. " <style>\n",
  255. " .colab-df-container {\n",
  256. " display:flex;\n",
  257. " flex-wrap:wrap;\n",
  258. " gap: 12px;\n",
  259. " }\n",
  260. "\n",
  261. " .colab-df-convert {\n",
  262. " background-color: #E8F0FE;\n",
  263. " border: none;\n",
  264. " border-radius: 50%;\n",
  265. " cursor: pointer;\n",
  266. " display: none;\n",
  267. " fill: #1967D2;\n",
  268. " height: 32px;\n",
  269. " padding: 0 0 0 0;\n",
  270. " width: 32px;\n",
  271. " }\n",
  272. "\n",
  273. " .colab-df-convert:hover {\n",
  274. " background-color: #E2EBFA;\n",
  275. " box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
  276. " fill: #174EA6;\n",
  277. " }\n",
  278. "\n",
  279. " [theme=dark] .colab-df-convert {\n",
  280. " background-color: #3B4455;\n",
  281. " fill: #D2E3FC;\n",
  282. " }\n",
  283. "\n",
  284. " [theme=dark] .colab-df-convert:hover {\n",
  285. " background-color: #434B5C;\n",
  286. " box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
  287. " filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
  288. " fill: #FFFFFF;\n",
  289. " }\n",
  290. " </style>\n",
  291. "\n",
  292. " <script>\n",
  293. " const buttonEl =\n",
  294. " document.querySelector('#df-f4ef70aa-3092-4d55-a981-4d26634db27a button.colab-df-convert');\n",
  295. " buttonEl.style.display =\n",
  296. " google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
  297. "\n",
  298. " async function convertToInteractive(key) {\n",
  299. " const element = document.querySelector('#df-f4ef70aa-3092-4d55-a981-4d26634db27a');\n",
  300. " const dataTable =\n",
  301. " await google.colab.kernel.invokeFunction('convertToInteractive',\n",
  302. " [key], {});\n",
  303. " if (!dataTable) return;\n",
  304. "\n",
  305. " const docLinkHtml = 'Like what you see? Visit the ' +\n",
  306. " '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
  307. " + ' to learn more about interactive tables.';\n",
  308. " element.innerHTML = '';\n",
  309. " dataTable['output_type'] = 'display_data';\n",
  310. " await google.colab.output.renderOutput(dataTable, element);\n",
  311. " const docLink = document.createElement('div');\n",
  312. " docLink.innerHTML = docLinkHtml;\n",
  313. " element.appendChild(docLink);\n",
  314. " }\n",
  315. " </script>\n",
  316. " </div>\n",
  317. " </div>\n",
  318. " "
  319. ]
  320. },
  321. "metadata": {},
  322. "execution_count": 40
  323. }
  324. ]
  325. },
  326. {
  327. "cell_type": "code",
  328. "source": [
  329. "SPY_D1.head()"
  330. ],
  331. "metadata": {
  332. "colab": {
  333. "base_uri": "https://localhost:8080/",
  334. "height": 238
  335. },
  336. "id": "-OGBIKtoXhGu",
  337. "outputId": "e539660b-5589-45e9-db57-74075ab33631"
  338. },
  339. "execution_count": null,
  340. "outputs": [
  341. {
  342. "output_type": "execute_result",
  343. "data": {
  344. "text/plain": [
  345. " Close sma50 sma100 sma200\n",
  346. "Date \n",
  347. "2021-09-03 453.079987 453.079987 453.079987 453.079987\n",
  348. "2021-09-07 451.459991 452.269989 452.269989 452.269989\n",
  349. "2021-09-08 450.910004 451.816661 451.816661 451.816661\n",
  350. "2021-09-09 448.980011 451.107498 451.107498 451.107498\n",
  351. "2021-09-10 445.440002 449.973999 449.973999 449.973999"
  352. ],
  353. "text/html": [
  354. "\n",
  355. " <div id=\"df-c6335dbd-71e3-49b0-8c3a-b3cb4d3a953a\">\n",
  356. " <div class=\"colab-df-container\">\n",
  357. " <div>\n",
  358. "<style scoped>\n",
  359. " .dataframe tbody tr th:only-of-type {\n",
  360. " vertical-align: middle;\n",
  361. " }\n",
  362. "\n",
  363. " .dataframe tbody tr th {\n",
  364. " vertical-align: top;\n",
  365. " }\n",
  366. "\n",
  367. " .dataframe thead th {\n",
  368. " text-align: right;\n",
  369. " }\n",
  370. "</style>\n",
  371. "<table border=\"1\" class=\"dataframe\">\n",
  372. " <thead>\n",
  373. " <tr style=\"text-align: right;\">\n",
  374. " <th></th>\n",
  375. " <th>Close</th>\n",
  376. " <th>sma50</th>\n",
  377. " <th>sma100</th>\n",
  378. " <th>sma200</th>\n",
  379. " </tr>\n",
  380. " <tr>\n",
  381. " <th>Date</th>\n",
  382. " <th></th>\n",
  383. " <th></th>\n",
  384. " <th></th>\n",
  385. " <th></th>\n",
  386. " </tr>\n",
  387. " </thead>\n",
  388. " <tbody>\n",
  389. " <tr>\n",
  390. " <th>2021-09-03</th>\n",
  391. " <td>453.079987</td>\n",
  392. " <td>453.079987</td>\n",
  393. " <td>453.079987</td>\n",
  394. " <td>453.079987</td>\n",
  395. " </tr>\n",
  396. " <tr>\n",
  397. " <th>2021-09-07</th>\n",
  398. " <td>451.459991</td>\n",
  399. " <td>452.269989</td>\n",
  400. " <td>452.269989</td>\n",
  401. " <td>452.269989</td>\n",
  402. " </tr>\n",
  403. " <tr>\n",
  404. " <th>2021-09-08</th>\n",
  405. " <td>450.910004</td>\n",
  406. " <td>451.816661</td>\n",
  407. " <td>451.816661</td>\n",
  408. " <td>451.816661</td>\n",
  409. " </tr>\n",
  410. " <tr>\n",
  411. " <th>2021-09-09</th>\n",
  412. " <td>448.980011</td>\n",
  413. " <td>451.107498</td>\n",
  414. " <td>451.107498</td>\n",
  415. " <td>451.107498</td>\n",
  416. " </tr>\n",
  417. " <tr>\n",
  418. " <th>2021-09-10</th>\n",
  419. " <td>445.440002</td>\n",
  420. " <td>449.973999</td>\n",
  421. " <td>449.973999</td>\n",
  422. " <td>449.973999</td>\n",
  423. " </tr>\n",
  424. " </tbody>\n",
  425. "</table>\n",
  426. "</div>\n",
  427. " <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-c6335dbd-71e3-49b0-8c3a-b3cb4d3a953a')\"\n",
  428. " title=\"Convert this dataframe to an interactive table.\"\n",
  429. " style=\"display:none;\">\n",
  430. " \n",
  431. " <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
  432. " width=\"24px\">\n",
  433. " <path d=\"M0 0h24v24H0V0z\" fill=\"none\"/>\n",
  434. " <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",
  435. " </svg>\n",
  436. " </button>\n",
  437. " \n",
  438. " <style>\n",
  439. " .colab-df-container {\n",
  440. " display:flex;\n",
  441. " flex-wrap:wrap;\n",
  442. " gap: 12px;\n",
  443. " }\n",
  444. "\n",
  445. " .colab-df-convert {\n",
  446. " background-color: #E8F0FE;\n",
  447. " border: none;\n",
  448. " border-radius: 50%;\n",
  449. " cursor: pointer;\n",
  450. " display: none;\n",
  451. " fill: #1967D2;\n",
  452. " height: 32px;\n",
  453. " padding: 0 0 0 0;\n",
  454. " width: 32px;\n",
  455. " }\n",
  456. "\n",
  457. " .colab-df-convert:hover {\n",
  458. " background-color: #E2EBFA;\n",
  459. " box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
  460. " fill: #174EA6;\n",
  461. " }\n",
  462. "\n",
  463. " [theme=dark] .colab-df-convert {\n",
  464. " background-color: #3B4455;\n",
  465. " fill: #D2E3FC;\n",
  466. " }\n",
  467. "\n",
  468. " [theme=dark] .colab-df-convert:hover {\n",
  469. " background-color: #434B5C;\n",
  470. " box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
  471. " filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
  472. " fill: #FFFFFF;\n",
  473. " }\n",
  474. " </style>\n",
  475. "\n",
  476. " <script>\n",
  477. " const buttonEl =\n",
  478. " document.querySelector('#df-c6335dbd-71e3-49b0-8c3a-b3cb4d3a953a button.colab-df-convert');\n",
  479. " buttonEl.style.display =\n",
  480. " google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
  481. "\n",
  482. " async function convertToInteractive(key) {\n",
  483. " const element = document.querySelector('#df-c6335dbd-71e3-49b0-8c3a-b3cb4d3a953a');\n",
  484. " const dataTable =\n",
  485. " await google.colab.kernel.invokeFunction('convertToInteractive',\n",
  486. " [key], {});\n",
  487. " if (!dataTable) return;\n",
  488. "\n",
  489. " const docLinkHtml = 'Like what you see? Visit the ' +\n",
  490. " '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
  491. " + ' to learn more about interactive tables.';\n",
  492. " element.innerHTML = '';\n",
  493. " dataTable['output_type'] = 'display_data';\n",
  494. " await google.colab.output.renderOutput(dataTable, element);\n",
  495. " const docLink = document.createElement('div');\n",
  496. " docLink.innerHTML = docLinkHtml;\n",
  497. " element.appendChild(docLink);\n",
  498. " }\n",
  499. " </script>\n",
  500. " </div>\n",
  501. " </div>\n",
  502. " "
  503. ]
  504. },
  505. "metadata": {},
  506. "execution_count": 61
  507. }
  508. ]
  509. },
  510. {
  511. "cell_type": "code",
  512. "source": [
  513. "# get the stock tickers that make up S&P500\n",
  514. "tickers = pd.read_html(\n",
  515. " 'https://en.wikipedia.org/wiki/List_of_S%26P_500_companies')[0]\n",
  516. "\n",
  517. "# pd.set_option('display.max_rows', None)\n",
  518. "# tickers"
  519. ],
  520. "metadata": {
  521. "id": "j09lEw9-cfeA"
  522. },
  523. "execution_count": 5,
  524. "outputs": []
  525. },
  526. {
  527. "cell_type": "code",
  528. "source": [
  529. "# scrub tickers\n",
  530. "tickers.at[64, 'Symbol'] = 'BRK-B'\n",
  531. "tickers.at[80, 'Symbol'] = 'BF-B'"
  532. ],
  533. "metadata": {
  534. "id": "JD0MBIOEEB4l"
  535. },
  536. "execution_count": 6,
  537. "outputs": []
  538. },
  539. {
  540. "cell_type": "code",
  541. "source": [
  542. "# get the data for these tickers from yahoo finance\n",
  543. "\n",
  544. "start_date = '2021-9-3'\n",
  545. "end_date = '2022-9-3'\n",
  546. "\n",
  547. "ticker_data = yf.download(tickers.Symbol.to_list(),start_date,end_date)\n",
  548. "print(ticker_data['Close'])"
  549. ],
  550. "metadata": {
  551. "id": "YK-G8mYtdhMu",
  552. "colab": {
  553. "base_uri": "https://localhost:8080/"
  554. },
  555. "outputId": "efc54b69-bae1-4c7b-f1e2-f4417d783ffa"
  556. },
  557. "execution_count": 29,
  558. "outputs": [
  559. {
  560. "output_type": "stream",
  561. "name": "stdout",
  562. "text": [
  563. "[*********************100%***********************] 503 of 503 completed\n",
  564. " A AAL AAP AAPL ABBV \\\n",
  565. "Date \n",
  566. "2021-09-02 NaN NaN NaN NaN NaN \n",
  567. "2021-09-03 179.279999 19.370001 199.440002 154.300003 111.620003 \n",
  568. "2021-09-07 177.720001 19.530001 199.809998 156.690002 109.029999 \n",
  569. "2021-09-08 178.729996 19.129999 200.179993 155.110001 110.360001 \n",
  570. "2021-09-09 177.229996 20.200001 201.220001 154.070007 107.269997 \n",
  571. "... ... ... ... ... ... \n",
  572. "2022-08-29 128.110001 13.510000 170.539993 161.380005 135.710007 \n",
  573. "2022-08-30 128.279999 13.330000 170.470001 158.910004 135.550003 \n",
  574. "2022-08-31 128.250000 12.990000 168.639999 157.220001 134.460007 \n",
  575. "2022-09-01 128.929993 12.930000 172.149994 157.960007 138.449997 \n",
  576. "2022-09-02 128.009995 12.990000 171.729996 155.809998 136.279999 \n",
  577. "\n",
  578. " ABC ABMD ABT ACN ADBE ... \\\n",
  579. "Date ... \n",
  580. "2021-09-02 NaN NaN NaN NaN NaN ... \n",
  581. "2021-09-03 125.139999 372.690002 128.940002 343.329987 666.590027 ... \n",
  582. "2021-09-07 124.209999 376.200012 128.389999 341.489990 661.390015 ... \n",
  583. "2021-09-08 124.309998 374.790009 129.059998 340.320007 663.219971 ... \n",
  584. "2021-09-09 123.599998 365.839996 127.980003 341.100006 661.679993 ... \n",
  585. "... ... ... ... ... ... ... \n",
  586. "2022-08-29 147.490005 256.980011 101.839996 295.140015 375.260010 ... \n",
  587. "2022-08-30 145.429993 258.649994 102.199997 292.500000 375.070007 ... \n",
  588. "2022-08-31 146.559998 259.279999 102.650002 288.459991 373.440002 ... \n",
  589. "2022-09-01 147.610001 259.529999 104.839996 288.790009 370.529999 ... \n",
  590. "2022-09-02 147.710007 261.239990 102.500000 284.070007 368.140015 ... \n",
  591. "\n",
  592. " WYNN XEL XOM XRAY XYL \\\n",
  593. "Date \n",
  594. "2021-09-02 NaN NaN NaN NaN NaN \n",
  595. "2021-09-03 100.300003 69.800003 54.869999 62.430000 137.250000 \n",
  596. "2021-09-07 105.930000 67.900002 54.549999 62.169998 135.649994 \n",
  597. "2021-09-08 104.620003 69.309998 54.049999 62.310001 135.110001 \n",
  598. "2021-09-09 103.930000 69.269997 54.090000 62.459999 133.940002 \n",
  599. "... ... ... ... ... ... \n",
  600. "2022-08-29 62.410000 75.620003 100.120003 33.080002 92.050003 \n",
  601. "2022-08-30 60.209999 74.690002 96.309998 32.939999 91.349998 \n",
  602. "2022-08-31 60.590000 74.250000 95.589996 32.770000 91.099998 \n",
  603. "2022-09-01 59.180000 75.419998 93.870003 32.169998 92.089996 \n",
  604. "2022-09-02 59.180000 74.410004 95.589996 31.799999 91.209999 \n",
  605. "\n",
  606. " YUM ZBH ZBRA ZION ZTS \n",
  607. "Date \n",
  608. "2021-09-02 NaN NaN NaN NaN NaN \n",
  609. "2021-09-03 130.919998 142.466019 590.599976 57.119999 209.690002 \n",
  610. "2021-09-07 128.830002 142.349518 581.140015 57.500000 207.809998 \n",
  611. "2021-09-08 130.190002 143.184464 579.750000 56.500000 209.330002 \n",
  612. "2021-09-09 129.250000 140.135925 577.469971 57.560001 206.020004 \n",
  613. "... ... ... ... ... ... \n",
  614. "2022-08-29 112.209999 107.620003 307.899994 55.750000 157.869995 \n",
  615. "2022-08-30 110.779999 107.370003 302.859985 55.400002 157.080002 \n",
  616. "2022-08-31 111.239998 106.320000 301.640015 55.029999 156.529999 \n",
  617. "2022-09-01 114.260002 106.800003 309.739990 55.110001 159.410004 \n",
  618. "2022-09-02 112.739998 105.570000 297.600006 55.040001 156.979996 \n",
  619. "\n",
  620. "[253 rows x 503 columns]\n"
  621. ]
  622. }
  623. ]
  624. },
  625. {
  626. "cell_type": "code",
  627. "source": [
  628. "ticker_data.drop(index=('2021-09-02'), inplace=True) # not sure why the first row is always NA"
  629. ],
  630. "metadata": {
  631. "id": "FZ3qI1BQJdlz"
  632. },
  633. "execution_count": 30,
  634. "outputs": []
  635. },
  636. {
  637. "cell_type": "code",
  638. "source": [
  639. "# get HA candles\n",
  640. "# https://tlc.thinkorswim.com/center/howToTos/thinkManual/charts/Chart-Modes/Chart-Types/heikinashi\n",
  641. "\n",
  642. "ha_ticker_data = ticker_data.copy()\n",
  643. "\n",
  644. "ha_ticker_data['Close'] = (ticker_data['Open'] + ticker_data['High'] + ticker_data['Low'] + ticker_data['Close'])/4\n",
  645. "\n",
  646. "ha_ticker_data['Open'].iloc[0] = ticker_data['Open'].iloc[0]\n",
  647. "\n",
  648. "for i in range(1, len(ticker_data.index)):\n",
  649. " ha_ticker_data['Open'].iloc[i] = (ha_ticker_data['Open'].iloc[i-1] + ha_ticker_data['Close'].iloc[i-1])/2\n",
  650. "\n",
  651. "ha_ticker_data['High'] = pd.concat([ticker_data['High'], ha_ticker_data['Open'], ha_ticker_data['Close']]).max(level=0)\n",
  652. "ha_ticker_data['Low'] = pd.concat([ticker_data['Low'], ha_ticker_data['Open'], ha_ticker_data['Close']]).min(level=0)"
  653. ],
  654. "metadata": {
  655. "colab": {
  656. "base_uri": "https://localhost:8080/"
  657. },
  658. "id": "N6I2TgJs7UlW",
  659. "outputId": "424fe035-deb4-4ed7-b3c7-a8c3ae346205"
  660. },
  661. "execution_count": 38,
  662. "outputs": [
  663. {
  664. "output_type": "stream",
  665. "name": "stderr",
  666. "text": [
  667. "/usr/local/lib/python3.7/dist-packages/pandas/core/indexing.py:1732: SettingWithCopyWarning: \n",
  668. "A value is trying to be set on a copy of a slice from a DataFrame\n",
  669. "\n",
  670. "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
  671. " self._setitem_single_block(indexer, value, name)\n",
  672. "/usr/local/lib/python3.7/dist-packages/pandas/core/indexing.py:723: SettingWithCopyWarning: \n",
  673. "A value is trying to be set on a copy of a slice from a DataFrame\n",
  674. "\n",
  675. "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
  676. " iloc._setitem_with_indexer(indexer, value, self.name)\n",
  677. "/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",
  678. " del sys.path[0]\n",
  679. "/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",
  680. " \n"
  681. ]
  682. }
  683. ]
  684. },
  685. {
  686. "cell_type": "code",
  687. "source": [],
  688. "metadata": {
  689. "id": "Aw6qbdU6X5gt"
  690. },
  691. "execution_count": 9,
  692. "outputs": []
  693. },
  694. {
  695. "cell_type": "code",
  696. "source": [
  697. "ticker_closes = ticker_data['Close']\n",
  698. "\n",
  699. "ticker_results = pd.DataFrame(index = ticker_closes.columns, \\\n",
  700. " columns = ['last_close', 'sma50', 'sma100', 'sma200', 'above_all', 'below_all', \\\n",
  701. " 'last_flat_bottom', 't1_flat_bottom', 'last_flat_top', 't1_flat_top', \\\n",
  702. " 'two_flat_bottom', 'two_flat_top', 'good_long', 'good_short'])\n",
  703. "\n",
  704. "ticker_results['last_close'] = ticker_closes.iloc[-1]\n",
  705. "\n",
  706. "ticker_results.head()"
  707. ],
  708. "metadata": {
  709. "colab": {
  710. "base_uri": "https://localhost:8080/",
  711. "height": 206
  712. },
  713. "id": "07yexkvAddJi",
  714. "outputId": "9476d0eb-11a9-40e6-8742-13a2f6c2a284"
  715. },
  716. "execution_count": 41,
  717. "outputs": [
  718. {
  719. "output_type": "execute_result",
  720. "data": {
  721. "text/plain": [
  722. " last_close sma50 sma100 sma200 above_all below_all last_flat_bottom \\\n",
  723. "A 128.009995 NaN NaN NaN NaN NaN NaN \n",
  724. "AAL 12.990000 NaN NaN NaN NaN NaN NaN \n",
  725. "AAP 171.729996 NaN NaN NaN NaN NaN NaN \n",
  726. "AAPL 155.809998 NaN NaN NaN NaN NaN NaN \n",
  727. "ABBV 136.279999 NaN NaN NaN NaN NaN NaN \n",
  728. "\n",
  729. " t1_flat_bottom last_flat_top t1_flat_top two_flat_bottom two_flat_top \\\n",
  730. "A NaN NaN NaN NaN NaN \n",
  731. "AAL NaN NaN NaN NaN NaN \n",
  732. "AAP NaN NaN NaN NaN NaN \n",
  733. "AAPL NaN NaN NaN NaN NaN \n",
  734. "ABBV NaN NaN NaN NaN NaN \n",
  735. "\n",
  736. " good_long good_short \n",
  737. "A NaN NaN \n",
  738. "AAL NaN NaN \n",
  739. "AAP NaN NaN \n",
  740. "AAPL NaN NaN \n",
  741. "ABBV NaN NaN "
  742. ],
  743. "text/html": [
  744. "\n",
  745. " <div id=\"df-735ccea8-9105-4c3a-bb04-114746405acf\">\n",
  746. " <div class=\"colab-df-container\">\n",
  747. " <div>\n",
  748. "<style scoped>\n",
  749. " .dataframe tbody tr th:only-of-type {\n",
  750. " vertical-align: middle;\n",
  751. " }\n",
  752. "\n",
  753. " .dataframe tbody tr th {\n",
  754. " vertical-align: top;\n",
  755. " }\n",
  756. "\n",
  757. " .dataframe thead th {\n",
  758. " text-align: right;\n",
  759. " }\n",
  760. "</style>\n",
  761. "<table border=\"1\" class=\"dataframe\">\n",
  762. " <thead>\n",
  763. " <tr style=\"text-align: right;\">\n",
  764. " <th></th>\n",
  765. " <th>last_close</th>\n",
  766. " <th>sma50</th>\n",
  767. " <th>sma100</th>\n",
  768. " <th>sma200</th>\n",
  769. " <th>above_all</th>\n",
  770. " <th>below_all</th>\n",
  771. " <th>last_flat_bottom</th>\n",
  772. " <th>t1_flat_bottom</th>\n",
  773. " <th>last_flat_top</th>\n",
  774. " <th>t1_flat_top</th>\n",
  775. " <th>two_flat_bottom</th>\n",
  776. " <th>two_flat_top</th>\n",
  777. " <th>good_long</th>\n",
  778. " <th>good_short</th>\n",
  779. " </tr>\n",
  780. " </thead>\n",
  781. " <tbody>\n",
  782. " <tr>\n",
  783. " <th>A</th>\n",
  784. " <td>128.009995</td>\n",
  785. " <td>NaN</td>\n",
  786. " <td>NaN</td>\n",
  787. " <td>NaN</td>\n",
  788. " <td>NaN</td>\n",
  789. " <td>NaN</td>\n",
  790. " <td>NaN</td>\n",
  791. " <td>NaN</td>\n",
  792. " <td>NaN</td>\n",
  793. " <td>NaN</td>\n",
  794. " <td>NaN</td>\n",
  795. " <td>NaN</td>\n",
  796. " <td>NaN</td>\n",
  797. " <td>NaN</td>\n",
  798. " </tr>\n",
  799. " <tr>\n",
  800. " <th>AAL</th>\n",
  801. " <td>12.990000</td>\n",
  802. " <td>NaN</td>\n",
  803. " <td>NaN</td>\n",
  804. " <td>NaN</td>\n",
  805. " <td>NaN</td>\n",
  806. " <td>NaN</td>\n",
  807. " <td>NaN</td>\n",
  808. " <td>NaN</td>\n",
  809. " <td>NaN</td>\n",
  810. " <td>NaN</td>\n",
  811. " <td>NaN</td>\n",
  812. " <td>NaN</td>\n",
  813. " <td>NaN</td>\n",
  814. " <td>NaN</td>\n",
  815. " </tr>\n",
  816. " <tr>\n",
  817. " <th>AAP</th>\n",
  818. " <td>171.729996</td>\n",
  819. " <td>NaN</td>\n",
  820. " <td>NaN</td>\n",
  821. " <td>NaN</td>\n",
  822. " <td>NaN</td>\n",
  823. " <td>NaN</td>\n",
  824. " <td>NaN</td>\n",
  825. " <td>NaN</td>\n",
  826. " <td>NaN</td>\n",
  827. " <td>NaN</td>\n",
  828. " <td>NaN</td>\n",
  829. " <td>NaN</td>\n",
  830. " <td>NaN</td>\n",
  831. " <td>NaN</td>\n",
  832. " </tr>\n",
  833. " <tr>\n",
  834. " <th>AAPL</th>\n",
  835. " <td>155.809998</td>\n",
  836. " <td>NaN</td>\n",
  837. " <td>NaN</td>\n",
  838. " <td>NaN</td>\n",
  839. " <td>NaN</td>\n",
  840. " <td>NaN</td>\n",
  841. " <td>NaN</td>\n",
  842. " <td>NaN</td>\n",
  843. " <td>NaN</td>\n",
  844. " <td>NaN</td>\n",
  845. " <td>NaN</td>\n",
  846. " <td>NaN</td>\n",
  847. " <td>NaN</td>\n",
  848. " <td>NaN</td>\n",
  849. " </tr>\n",
  850. " <tr>\n",
  851. " <th>ABBV</th>\n",
  852. " <td>136.279999</td>\n",
  853. " <td>NaN</td>\n",
  854. " <td>NaN</td>\n",
  855. " <td>NaN</td>\n",
  856. " <td>NaN</td>\n",
  857. " <td>NaN</td>\n",
  858. " <td>NaN</td>\n",
  859. " <td>NaN</td>\n",
  860. " <td>NaN</td>\n",
  861. " <td>NaN</td>\n",
  862. " <td>NaN</td>\n",
  863. " <td>NaN</td>\n",
  864. " <td>NaN</td>\n",
  865. " <td>NaN</td>\n",
  866. " </tr>\n",
  867. " </tbody>\n",
  868. "</table>\n",
  869. "</div>\n",
  870. " <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-735ccea8-9105-4c3a-bb04-114746405acf')\"\n",
  871. " title=\"Convert this dataframe to an interactive table.\"\n",
  872. " style=\"display:none;\">\n",
  873. " \n",
  874. " <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
  875. " width=\"24px\">\n",
  876. " <path d=\"M0 0h24v24H0V0z\" fill=\"none\"/>\n",
  877. " <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",
  878. " </svg>\n",
  879. " </button>\n",
  880. " \n",
  881. " <style>\n",
  882. " .colab-df-container {\n",
  883. " display:flex;\n",
  884. " flex-wrap:wrap;\n",
  885. " gap: 12px;\n",
  886. " }\n",
  887. "\n",
  888. " .colab-df-convert {\n",
  889. " background-color: #E8F0FE;\n",
  890. " border: none;\n",
  891. " border-radius: 50%;\n",
  892. " cursor: pointer;\n",
  893. " display: none;\n",
  894. " fill: #1967D2;\n",
  895. " height: 32px;\n",
  896. " padding: 0 0 0 0;\n",
  897. " width: 32px;\n",
  898. " }\n",
  899. "\n",
  900. " .colab-df-convert:hover {\n",
  901. " background-color: #E2EBFA;\n",
  902. " box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
  903. " fill: #174EA6;\n",
  904. " }\n",
  905. "\n",
  906. " [theme=dark] .colab-df-convert {\n",
  907. " background-color: #3B4455;\n",
  908. " fill: #D2E3FC;\n",
  909. " }\n",
  910. "\n",
  911. " [theme=dark] .colab-df-convert:hover {\n",
  912. " background-color: #434B5C;\n",
  913. " box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
  914. " filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
  915. " fill: #FFFFFF;\n",
  916. " }\n",
  917. " </style>\n",
  918. "\n",
  919. " <script>\n",
  920. " const buttonEl =\n",
  921. " document.querySelector('#df-735ccea8-9105-4c3a-bb04-114746405acf button.colab-df-convert');\n",
  922. " buttonEl.style.display =\n",
  923. " google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
  924. "\n",
  925. " async function convertToInteractive(key) {\n",
  926. " const element = document.querySelector('#df-735ccea8-9105-4c3a-bb04-114746405acf');\n",
  927. " const dataTable =\n",
  928. " await google.colab.kernel.invokeFunction('convertToInteractive',\n",
  929. " [key], {});\n",
  930. " if (!dataTable) return;\n",
  931. "\n",
  932. " const docLinkHtml = 'Like what you see? Visit the ' +\n",
  933. " '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
  934. " + ' to learn more about interactive tables.';\n",
  935. " element.innerHTML = '';\n",
  936. " dataTable['output_type'] = 'display_data';\n",
  937. " await google.colab.output.renderOutput(dataTable, element);\n",
  938. " const docLink = document.createElement('div');\n",
  939. " docLink.innerHTML = docLinkHtml;\n",
  940. " element.appendChild(docLink);\n",
  941. " }\n",
  942. " </script>\n",
  943. " </div>\n",
  944. " </div>\n",
  945. " "
  946. ]
  947. },
  948. "metadata": {},
  949. "execution_count": 41
  950. }
  951. ]
  952. },
  953. {
  954. "cell_type": "code",
  955. "source": [
  956. "ticker = 'A'\n",
  957. "ha_ticker_data['Low'][ticker][-1]"
  958. ],
  959. "metadata": {
  960. "colab": {
  961. "base_uri": "https://localhost:8080/"
  962. },
  963. "id": "Ek6PrinpHR-Z",
  964. "outputId": "2480ebea-de0e-4e85-8f90-a9e6c3683bd4"
  965. },
  966. "execution_count": 47,
  967. "outputs": [
  968. {
  969. "output_type": "execute_result",
  970. "data": {
  971. "text/plain": [
  972. "127.12000274658203"
  973. ]
  974. },
  975. "metadata": {},
  976. "execution_count": 47
  977. }
  978. ]
  979. },
  980. {
  981. "cell_type": "code",
  982. "source": [
  983. "for ticker in ticker_closes.columns:\n",
  984. "\n",
  985. " ticker_results.loc[ticker, 'sma50'] = ticker_closes[ticker].rolling(window = 50, min_periods = 1).mean().tail(1)[0]\n",
  986. " ticker_results.loc[ticker, 'sma100'] = ticker_closes[ticker].rolling(window = 100, min_periods = 1).mean().tail(1)[0]\n",
  987. " ticker_results.loc[ticker, 'sma200'] = ticker_closes[ticker].rolling(window = 200, min_periods = 1).mean().tail(1)[0]\n",
  988. " ticker_results.loc[ticker, 'above_all'] = ticker_results.loc[ticker, 'last_close'] > ticker_results.loc[ticker, 'sma50'] and \\\n",
  989. " ticker_results.loc[ticker, 'last_close'] > ticker_results.loc[ticker, 'sma100'] and \\\n",
  990. " ticker_results.loc[ticker, 'last_close'] > ticker_results.loc[ticker, 'sma200']\n",
  991. " ticker_results.loc[ticker, 'below_all'] = ticker_results.loc[ticker, 'last_close'] < ticker_results.loc[ticker, 'sma50'] and \\\n",
  992. " ticker_results.loc[ticker, 'last_close'] < ticker_results.loc[ticker, 'sma100'] and \\\n",
  993. " ticker_results.loc[ticker, 'last_close'] < ticker_results.loc[ticker, 'sma200']\n",
  994. "\n",
  995. " ticker_results.loc[ticker, 'last_flat_bottom'] = ha_ticker_data['Low'][ticker][-1] == ha_ticker_data['Open'][ticker][-1]\n",
  996. " ticker_results.loc[ticker, 'last_flat_top'] = ha_ticker_data['High'][ticker][-1] == ha_ticker_data['Open'][ticker][-1]\n",
  997. "\n",
  998. " ticker_results.loc[ticker, 't1_flat_bottom'] = ha_ticker_data['Low'][ticker][-2] == ha_ticker_data['Open'][ticker][-2]\n",
  999. " ticker_results.loc[ticker, 't1_flat_top'] = ha_ticker_data['High'][ticker][-2] == ha_ticker_data['Open'][ticker][-2]\n",
  1000. "\n",
  1001. " ticker_results.loc[ticker, 'two_flat_bottom'] = ticker_results.loc[ticker, 't1_flat_bottom'] and ticker_results.loc[ticker, 'last_flat_bottom']\n",
  1002. " ticker_results.loc[ticker, 'two_flat_top'] = ticker_results.loc[ticker, 'last_flat_top'] and ticker_results.loc[ticker, 't1_flat_top']\n",
  1003. "\n",
  1004. " ticker_results.loc[ticker, 'good_long'] = ticker_results.loc[ticker, 'above_all'] and ticker_results.loc[ticker, 'two_flat_bottom']\n",
  1005. " ticker_results.loc[ticker, 'good_short'] = ticker_results.loc[ticker, 'below_all'] and ticker_results.loc[ticker, 'two_flat_top']"
  1006. ],
  1007. "metadata": {
  1008. "id": "trBorl18ZHBw"
  1009. },
  1010. "execution_count": 53,
  1011. "outputs": []
  1012. },
  1013. {
  1014. "cell_type": "code",
  1015. "source": [
  1016. "ticker_results"
  1017. ],
  1018. "metadata": {
  1019. "id": "CoDRholqsSVK",
  1020. "colab": {
  1021. "base_uri": "https://localhost:8080/",
  1022. "height": 424
  1023. },
  1024. "outputId": "fde710bf-32f1-4829-b789-e1120b96edf2"
  1025. },
  1026. "execution_count": 54,
  1027. "outputs": [
  1028. {
  1029. "output_type": "execute_result",
  1030. "data": {
  1031. "text/plain": [
  1032. " last_close sma50 sma100 sma200 above_all below_all \\\n",
  1033. "A 128.009995 127.3384 124.5744 133.724999 False False \n",
  1034. "AAL 12.990000 14.1182 15.4952 16.4178 False True \n",
  1035. "AAP 171.729996 187.9036 192.8611 208.2079 False True \n",
  1036. "AAPL 155.809998 156.845 153.2715 161.0885 False False \n",
  1037. "ABBV 136.279999 145.376 148.0243 144.24435 False True \n",
  1038. "... ... ... ... ... ... ... \n",
  1039. "YUM 112.739998 117.2044 116.6597 120.96335 False True \n",
  1040. "ZBH 105.570000 109.213401 113.8394 117.647967 False True \n",
  1041. "ZBRA 297.600006 318.251199 330.535999 414.611649 False True \n",
  1042. "ZION 55.040001 53.9468 55.1171 60.8519 False False \n",
  1043. "ZTS 156.979996 172.122399 171.1468 189.399199 False True \n",
  1044. "\n",
  1045. " last_flat_bottom t1_flat_bottom last_flat_top t1_flat_top \\\n",
  1046. "A False False False True \n",
  1047. "AAL False False False True \n",
  1048. "AAP False False False False \n",
  1049. "AAPL False False False True \n",
  1050. "ABBV False False False False \n",
  1051. "... ... ... ... ... \n",
  1052. "YUM True False False False \n",
  1053. "ZBH False False False True \n",
  1054. "ZBRA False False False False \n",
  1055. "ZION False False False True \n",
  1056. "ZTS False False False False \n",
  1057. "\n",
  1058. " two_flat_bottom two_flat_top good_long good_short \n",
  1059. "A False False False False \n",
  1060. "AAL False False False False \n",
  1061. "AAP False False False False \n",
  1062. "AAPL False False False False \n",
  1063. "ABBV False False False False \n",
  1064. "... ... ... ... ... \n",
  1065. "YUM False False False False \n",
  1066. "ZBH False False False False \n",
  1067. "ZBRA False False False False \n",
  1068. "ZION False False False False \n",
  1069. "ZTS False False False False \n",
  1070. "\n",
  1071. "[503 rows x 14 columns]"
  1072. ],
  1073. "text/html": [
  1074. "\n",
  1075. " <div id=\"df-f778fc03-ad9e-4ec3-98de-4b3a4289fd87\">\n",
  1076. " <div class=\"colab-df-container\">\n",
  1077. " <div>\n",
  1078. "<style scoped>\n",
  1079. " .dataframe tbody tr th:only-of-type {\n",
  1080. " vertical-align: middle;\n",
  1081. " }\n",
  1082. "\n",
  1083. " .dataframe tbody tr th {\n",
  1084. " vertical-align: top;\n",
  1085. " }\n",
  1086. "\n",
  1087. " .dataframe thead th {\n",
  1088. " text-align: right;\n",
  1089. " }\n",
  1090. "</style>\n",
  1091. "<table border=\"1\" class=\"dataframe\">\n",
  1092. " <thead>\n",
  1093. " <tr style=\"text-align: right;\">\n",
  1094. " <th></th>\n",
  1095. " <th>last_close</th>\n",
  1096. " <th>sma50</th>\n",
  1097. " <th>sma100</th>\n",
  1098. " <th>sma200</th>\n",
  1099. " <th>above_all</th>\n",
  1100. " <th>below_all</th>\n",
  1101. " <th>last_flat_bottom</th>\n",
  1102. " <th>t1_flat_bottom</th>\n",
  1103. " <th>last_flat_top</th>\n",
  1104. " <th>t1_flat_top</th>\n",
  1105. " <th>two_flat_bottom</th>\n",
  1106. " <th>two_flat_top</th>\n",
  1107. " <th>good_long</th>\n",
  1108. " <th>good_short</th>\n",
  1109. " </tr>\n",
  1110. " </thead>\n",
  1111. " <tbody>\n",
  1112. " <tr>\n",
  1113. " <th>A</th>\n",
  1114. " <td>128.009995</td>\n",
  1115. " <td>127.3384</td>\n",
  1116. " <td>124.5744</td>\n",
  1117. " <td>133.724999</td>\n",
  1118. " <td>False</td>\n",
  1119. " <td>False</td>\n",
  1120. " <td>False</td>\n",
  1121. " <td>False</td>\n",
  1122. " <td>False</td>\n",
  1123. " <td>True</td>\n",
  1124. " <td>False</td>\n",
  1125. " <td>False</td>\n",
  1126. " <td>False</td>\n",
  1127. " <td>False</td>\n",
  1128. " </tr>\n",
  1129. " <tr>\n",
  1130. " <th>AAL</th>\n",
  1131. " <td>12.990000</td>\n",
  1132. " <td>14.1182</td>\n",
  1133. " <td>15.4952</td>\n",
  1134. " <td>16.4178</td>\n",
  1135. " <td>False</td>\n",
  1136. " <td>True</td>\n",
  1137. " <td>False</td>\n",
  1138. " <td>False</td>\n",
  1139. " <td>False</td>\n",
  1140. " <td>True</td>\n",
  1141. " <td>False</td>\n",
  1142. " <td>False</td>\n",
  1143. " <td>False</td>\n",
  1144. " <td>False</td>\n",
  1145. " </tr>\n",
  1146. " <tr>\n",
  1147. " <th>AAP</th>\n",
  1148. " <td>171.729996</td>\n",
  1149. " <td>187.9036</td>\n",
  1150. " <td>192.8611</td>\n",
  1151. " <td>208.2079</td>\n",
  1152. " <td>False</td>\n",
  1153. " <td>True</td>\n",
  1154. " <td>False</td>\n",
  1155. " <td>False</td>\n",
  1156. " <td>False</td>\n",
  1157. " <td>False</td>\n",
  1158. " <td>False</td>\n",
  1159. " <td>False</td>\n",
  1160. " <td>False</td>\n",
  1161. " <td>False</td>\n",
  1162. " </tr>\n",
  1163. " <tr>\n",
  1164. " <th>AAPL</th>\n",
  1165. " <td>155.809998</td>\n",
  1166. " <td>156.845</td>\n",
  1167. " <td>153.2715</td>\n",
  1168. " <td>161.0885</td>\n",
  1169. " <td>False</td>\n",
  1170. " <td>False</td>\n",
  1171. " <td>False</td>\n",
  1172. " <td>False</td>\n",
  1173. " <td>False</td>\n",
  1174. " <td>True</td>\n",
  1175. " <td>False</td>\n",
  1176. " <td>False</td>\n",
  1177. " <td>False</td>\n",
  1178. " <td>False</td>\n",
  1179. " </tr>\n",
  1180. " <tr>\n",
  1181. " <th>ABBV</th>\n",
  1182. " <td>136.279999</td>\n",
  1183. " <td>145.376</td>\n",
  1184. " <td>148.0243</td>\n",
  1185. " <td>144.24435</td>\n",
  1186. " <td>False</td>\n",
  1187. " <td>True</td>\n",
  1188. " <td>False</td>\n",
  1189. " <td>False</td>\n",
  1190. " <td>False</td>\n",
  1191. " <td>False</td>\n",
  1192. " <td>False</td>\n",
  1193. " <td>False</td>\n",
  1194. " <td>False</td>\n",
  1195. " <td>False</td>\n",
  1196. " </tr>\n",
  1197. " <tr>\n",
  1198. " <th>...</th>\n",
  1199. " <td>...</td>\n",
  1200. " <td>...</td>\n",
  1201. " <td>...</td>\n",
  1202. " <td>...</td>\n",
  1203. " <td>...</td>\n",
  1204. " <td>...</td>\n",
  1205. " <td>...</td>\n",
  1206. " <td>...</td>\n",
  1207. " <td>...</td>\n",
  1208. " <td>...</td>\n",
  1209. " <td>...</td>\n",
  1210. " <td>...</td>\n",
  1211. " <td>...</td>\n",
  1212. " <td>...</td>\n",
  1213. " </tr>\n",
  1214. " <tr>\n",
  1215. " <th>YUM</th>\n",
  1216. " <td>112.739998</td>\n",
  1217. " <td>117.2044</td>\n",
  1218. " <td>116.6597</td>\n",
  1219. " <td>120.96335</td>\n",
  1220. " <td>False</td>\n",
  1221. " <td>True</td>\n",
  1222. " <td>True</td>\n",
  1223. " <td>False</td>\n",
  1224. " <td>False</td>\n",
  1225. " <td>False</td>\n",
  1226. " <td>False</td>\n",
  1227. " <td>False</td>\n",
  1228. " <td>False</td>\n",
  1229. " <td>False</td>\n",
  1230. " </tr>\n",
  1231. " <tr>\n",
  1232. " <th>ZBH</th>\n",
  1233. " <td>105.570000</td>\n",
  1234. " <td>109.213401</td>\n",
  1235. " <td>113.8394</td>\n",
  1236. " <td>117.647967</td>\n",
  1237. " <td>False</td>\n",
  1238. " <td>True</td>\n",
  1239. " <td>False</td>\n",
  1240. " <td>False</td>\n",
  1241. " <td>False</td>\n",
  1242. " <td>True</td>\n",
  1243. " <td>False</td>\n",
  1244. " <td>False</td>\n",
  1245. " <td>False</td>\n",
  1246. " <td>False</td>\n",
  1247. " </tr>\n",
  1248. " <tr>\n",
  1249. " <th>ZBRA</th>\n",
  1250. " <td>297.600006</td>\n",
  1251. " <td>318.251199</td>\n",
  1252. " <td>330.535999</td>\n",
  1253. " <td>414.611649</td>\n",
  1254. " <td>False</td>\n",
  1255. " <td>True</td>\n",
  1256. " <td>False</td>\n",
  1257. " <td>False</td>\n",
  1258. " <td>False</td>\n",
  1259. " <td>False</td>\n",
  1260. " <td>False</td>\n",
  1261. " <td>False</td>\n",
  1262. " <td>False</td>\n",
  1263. " <td>False</td>\n",
  1264. " </tr>\n",
  1265. " <tr>\n",
  1266. " <th>ZION</th>\n",
  1267. " <td>55.040001</td>\n",
  1268. " <td>53.9468</td>\n",
  1269. " <td>55.1171</td>\n",
  1270. " <td>60.8519</td>\n",
  1271. " <td>False</td>\n",
  1272. " <td>False</td>\n",
  1273. " <td>False</td>\n",
  1274. " <td>False</td>\n",
  1275. " <td>False</td>\n",
  1276. " <td>True</td>\n",
  1277. " <td>False</td>\n",
  1278. " <td>False</td>\n",
  1279. " <td>False</td>\n",
  1280. " <td>False</td>\n",
  1281. " </tr>\n",
  1282. " <tr>\n",
  1283. " <th>ZTS</th>\n",
  1284. " <td>156.979996</td>\n",
  1285. " <td>172.122399</td>\n",
  1286. " <td>171.1468</td>\n",
  1287. " <td>189.399199</td>\n",
  1288. " <td>False</td>\n",
  1289. " <td>True</td>\n",
  1290. " <td>False</td>\n",
  1291. " <td>False</td>\n",
  1292. " <td>False</td>\n",
  1293. " <td>False</td>\n",
  1294. " <td>False</td>\n",
  1295. " <td>False</td>\n",
  1296. " <td>False</td>\n",
  1297. " <td>False</td>\n",
  1298. " </tr>\n",
  1299. " </tbody>\n",
  1300. "</table>\n",
  1301. "<p>503 rows × 14 columns</p>\n",
  1302. "</div>\n",
  1303. " <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-f778fc03-ad9e-4ec3-98de-4b3a4289fd87')\"\n",
  1304. " title=\"Convert this dataframe to an interactive table.\"\n",
  1305. " style=\"display:none;\">\n",
  1306. " \n",
  1307. " <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
  1308. " width=\"24px\">\n",
  1309. " <path d=\"M0 0h24v24H0V0z\" fill=\"none\"/>\n",
  1310. " <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",
  1311. " </svg>\n",
  1312. " </button>\n",
  1313. " \n",
  1314. " <style>\n",
  1315. " .colab-df-container {\n",
  1316. " display:flex;\n",
  1317. " flex-wrap:wrap;\n",
  1318. " gap: 12px;\n",
  1319. " }\n",
  1320. "\n",
  1321. " .colab-df-convert {\n",
  1322. " background-color: #E8F0FE;\n",
  1323. " border: none;\n",
  1324. " border-radius: 50%;\n",
  1325. " cursor: pointer;\n",
  1326. " display: none;\n",
  1327. " fill: #1967D2;\n",
  1328. " height: 32px;\n",
  1329. " padding: 0 0 0 0;\n",
  1330. " width: 32px;\n",
  1331. " }\n",
  1332. "\n",
  1333. " .colab-df-convert:hover {\n",
  1334. " background-color: #E2EBFA;\n",
  1335. " box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
  1336. " fill: #174EA6;\n",
  1337. " }\n",
  1338. "\n",
  1339. " [theme=dark] .colab-df-convert {\n",
  1340. " background-color: #3B4455;\n",
  1341. " fill: #D2E3FC;\n",
  1342. " }\n",
  1343. "\n",
  1344. " [theme=dark] .colab-df-convert:hover {\n",
  1345. " background-color: #434B5C;\n",
  1346. " box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
  1347. " filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
  1348. " fill: #FFFFFF;\n",
  1349. " }\n",
  1350. " </style>\n",
  1351. "\n",
  1352. " <script>\n",
  1353. " const buttonEl =\n",
  1354. " document.querySelector('#df-f778fc03-ad9e-4ec3-98de-4b3a4289fd87 button.colab-df-convert');\n",
  1355. " buttonEl.style.display =\n",
  1356. " google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
  1357. "\n",
  1358. " async function convertToInteractive(key) {\n",
  1359. " const element = document.querySelector('#df-f778fc03-ad9e-4ec3-98de-4b3a4289fd87');\n",
  1360. " const dataTable =\n",
  1361. " await google.colab.kernel.invokeFunction('convertToInteractive',\n",
  1362. " [key], {});\n",
  1363. " if (!dataTable) return;\n",
  1364. "\n",
  1365. " const docLinkHtml = 'Like what you see? Visit the ' +\n",
  1366. " '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
  1367. " + ' to learn more about interactive tables.';\n",
  1368. " element.innerHTML = '';\n",
  1369. " dataTable['output_type'] = 'display_data';\n",
  1370. " await google.colab.output.renderOutput(dataTable, element);\n",
  1371. " const docLink = document.createElement('div');\n",
  1372. " docLink.innerHTML = docLinkHtml;\n",
  1373. " element.appendChild(docLink);\n",
  1374. " }\n",
  1375. " </script>\n",
  1376. " </div>\n",
  1377. " </div>\n",
  1378. " "
  1379. ]
  1380. },
  1381. "metadata": {},
  1382. "execution_count": 54
  1383. }
  1384. ]
  1385. },
  1386. {
  1387. "cell_type": "code",
  1388. "source": [
  1389. "ticker_results.loc[ticker_results['good_long'] == True]"
  1390. ],
  1391. "metadata": {
  1392. "colab": {
  1393. "base_uri": "https://localhost:8080/",
  1394. "height": 81
  1395. },
  1396. "id": "VMc8L3LKSWNy",
  1397. "outputId": "a27bf05a-6357-4322-9276-1d0949749083"
  1398. },
  1399. "execution_count": 55,
  1400. "outputs": [
  1401. {
  1402. "output_type": "execute_result",
  1403. "data": {
  1404. "text/plain": [
  1405. " last_close sma50 sma100 sma200 above_all below_all \\\n",
  1406. "CAH 70.989998 60.7288 58.7987 55.65735 True False \n",
  1407. "\n",
  1408. " last_flat_bottom t1_flat_bottom last_flat_top t1_flat_top two_flat_bottom \\\n",
  1409. "CAH True True False False True \n",
  1410. "\n",
  1411. " two_flat_top good_long good_short \n",
  1412. "CAH False True False "
  1413. ],
  1414. "text/html": [
  1415. "\n",
  1416. " <div id=\"df-e3723fc5-4322-45b0-ad6d-55f8f8e4e7ab\">\n",
  1417. " <div class=\"colab-df-container\">\n",
  1418. " <div>\n",
  1419. "<style scoped>\n",
  1420. " .dataframe tbody tr th:only-of-type {\n",
  1421. " vertical-align: middle;\n",
  1422. " }\n",
  1423. "\n",
  1424. " .dataframe tbody tr th {\n",
  1425. " vertical-align: top;\n",
  1426. " }\n",
  1427. "\n",
  1428. " .dataframe thead th {\n",
  1429. " text-align: right;\n",
  1430. " }\n",
  1431. "</style>\n",
  1432. "<table border=\"1\" class=\"dataframe\">\n",
  1433. " <thead>\n",
  1434. " <tr style=\"text-align: right;\">\n",
  1435. " <th></th>\n",
  1436. " <th>last_close</th>\n",
  1437. " <th>sma50</th>\n",
  1438. " <th>sma100</th>\n",
  1439. " <th>sma200</th>\n",
  1440. " <th>above_all</th>\n",
  1441. " <th>below_all</th>\n",
  1442. " <th>last_flat_bottom</th>\n",
  1443. " <th>t1_flat_bottom</th>\n",
  1444. " <th>last_flat_top</th>\n",
  1445. " <th>t1_flat_top</th>\n",
  1446. " <th>two_flat_bottom</th>\n",
  1447. " <th>two_flat_top</th>\n",
  1448. " <th>good_long</th>\n",
  1449. " <th>good_short</th>\n",
  1450. " </tr>\n",
  1451. " </thead>\n",
  1452. " <tbody>\n",
  1453. " <tr>\n",
  1454. " <th>CAH</th>\n",
  1455. " <td>70.989998</td>\n",
  1456. " <td>60.7288</td>\n",
  1457. " <td>58.7987</td>\n",
  1458. " <td>55.65735</td>\n",
  1459. " <td>True</td>\n",
  1460. " <td>False</td>\n",
  1461. " <td>True</td>\n",
  1462. " <td>True</td>\n",
  1463. " <td>False</td>\n",
  1464. " <td>False</td>\n",
  1465. " <td>True</td>\n",
  1466. " <td>False</td>\n",
  1467. " <td>True</td>\n",
  1468. " <td>False</td>\n",
  1469. " </tr>\n",
  1470. " </tbody>\n",
  1471. "</table>\n",
  1472. "</div>\n",
  1473. " <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-e3723fc5-4322-45b0-ad6d-55f8f8e4e7ab')\"\n",
  1474. " title=\"Convert this dataframe to an interactive table.\"\n",
  1475. " style=\"display:none;\">\n",
  1476. " \n",
  1477. " <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
  1478. " width=\"24px\">\n",
  1479. " <path d=\"M0 0h24v24H0V0z\" fill=\"none\"/>\n",
  1480. " <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",
  1481. " </svg>\n",
  1482. " </button>\n",
  1483. " \n",
  1484. " <style>\n",
  1485. " .colab-df-container {\n",
  1486. " display:flex;\n",
  1487. " flex-wrap:wrap;\n",
  1488. " gap: 12px;\n",
  1489. " }\n",
  1490. "\n",
  1491. " .colab-df-convert {\n",
  1492. " background-color: #E8F0FE;\n",
  1493. " border: none;\n",
  1494. " border-radius: 50%;\n",
  1495. " cursor: pointer;\n",
  1496. " display: none;\n",
  1497. " fill: #1967D2;\n",
  1498. " height: 32px;\n",
  1499. " padding: 0 0 0 0;\n",
  1500. " width: 32px;\n",
  1501. " }\n",
  1502. "\n",
  1503. " .colab-df-convert:hover {\n",
  1504. " background-color: #E2EBFA;\n",
  1505. " box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
  1506. " fill: #174EA6;\n",
  1507. " }\n",
  1508. "\n",
  1509. " [theme=dark] .colab-df-convert {\n",
  1510. " background-color: #3B4455;\n",
  1511. " fill: #D2E3FC;\n",
  1512. " }\n",
  1513. "\n",
  1514. " [theme=dark] .colab-df-convert:hover {\n",
  1515. " background-color: #434B5C;\n",
  1516. " box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
  1517. " filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
  1518. " fill: #FFFFFF;\n",
  1519. " }\n",
  1520. " </style>\n",
  1521. "\n",
  1522. " <script>\n",
  1523. " const buttonEl =\n",
  1524. " document.querySelector('#df-e3723fc5-4322-45b0-ad6d-55f8f8e4e7ab button.colab-df-convert');\n",
  1525. " buttonEl.style.display =\n",
  1526. " google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
  1527. "\n",
  1528. " async function convertToInteractive(key) {\n",
  1529. " const element = document.querySelector('#df-e3723fc5-4322-45b0-ad6d-55f8f8e4e7ab');\n",
  1530. " const dataTable =\n",
  1531. " await google.colab.kernel.invokeFunction('convertToInteractive',\n",
  1532. " [key], {});\n",
  1533. " if (!dataTable) return;\n",
  1534. "\n",
  1535. " const docLinkHtml = 'Like what you see? Visit the ' +\n",
  1536. " '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
  1537. " + ' to learn more about interactive tables.';\n",
  1538. " element.innerHTML = '';\n",
  1539. " dataTable['output_type'] = 'display_data';\n",
  1540. " await google.colab.output.renderOutput(dataTable, element);\n",
  1541. " const docLink = document.createElement('div');\n",
  1542. " docLink.innerHTML = docLinkHtml;\n",
  1543. " element.appendChild(docLink);\n",
  1544. " }\n",
  1545. " </script>\n",
  1546. " </div>\n",
  1547. " </div>\n",
  1548. " "
  1549. ]
  1550. },
  1551. "metadata": {},
  1552. "execution_count": 55
  1553. }
  1554. ]
  1555. },
  1556. {
  1557. "cell_type": "code",
  1558. "source": [
  1559. "ticker_results.loc[ticker_results['good_short'] == True]"
  1560. ],
  1561. "metadata": {
  1562. "colab": {
  1563. "base_uri": "https://localhost:8080/",
  1564. "height": 896
  1565. },
  1566. "id": "vxdDxR0TKgNd",
  1567. "outputId": "ec7e05af-a2d2-4df8-fe7b-7fbd1cdc4b2e"
  1568. },
  1569. "execution_count": 56,
  1570. "outputs": [
  1571. {
  1572. "output_type": "execute_result",
  1573. "data": {
  1574. "text/plain": [
  1575. " last_close sma50 sma100 sma200 above_all below_all \\\n",
  1576. "AMD 80.239998 88.9144 91.095 108.9809 False True \n",
  1577. "BKNG 1837.910034 1895.030005 2019.870403 2164.28429 False True \n",
  1578. "DOW 49.310001 52.457 58.938 58.96615 False True \n",
  1579. "DPZ 365.799988 396.393997 380.270899 422.06545 False True \n",
  1580. "EQIX 631.159973 669.7076 677.4155 714.115452 False True \n",
  1581. "FCX 28.299999 29.4772 34.5892 38.75215 False True \n",
  1582. "FIS 89.970001 96.906 98.1052 101.71945 False True \n",
  1583. "FLT 209.119995 220.1844 229.4393 231.01195 False True \n",
  1584. "HPQ 27.639999 32.6776 34.7818 35.70045 False True \n",
  1585. "HRL 46.389999 48.9204 49.3459 48.72335 False True \n",
  1586. "HSIC 71.260002 76.1284 79.9454 79.9241 False True \n",
  1587. "IQV 207.259995 225.362001 219.561001 233.43535 False True \n",
  1588. "LYB 80.779999 87.351 96.7496 96.72625 False True \n",
  1589. "MPWR 424.420013 455.526601 439.029101 450.458952 False True \n",
  1590. "NSC 239.259995 242.808199 244.047299 260.42445 False True \n",
  1591. "NVDA 136.470001 168.6804 175.922 221.70725 False True \n",
  1592. "NWL 17.520000 19.792 20.5676 21.64345 False True \n",
  1593. "PVH 54.580002 61.9398 65.6222 80.47085 False True \n",
  1594. "RL 90.010002 95.2326 97.9254 107.68015 False True \n",
  1595. "RTX 87.589996 93.15 94.4544 93.18995 False True \n",
  1596. "SEDG 267.119995 296.899196 281.759498 285.52135 False True \n",
  1597. "SWK 85.769997 102.1148 112.0977 141.003349 False True \n",
  1598. "T 17.190001 19.1376 19.6063 18.968898 False True \n",
  1599. "TTWO 118.629997 126.3804 125.426001 143.99845 False True \n",
  1600. "TWTR 38.630001 40.088 41.3936 40.6522 False True \n",
  1601. "VZ 41.299999 46.719 48.4743 50.5009 False True \n",
  1602. "XRAY 31.799999 35.5014 37.6142 45.09095 False True \n",
  1603. "\n",
  1604. " last_flat_bottom t1_flat_bottom last_flat_top t1_flat_top \\\n",
  1605. "AMD False False True True \n",
  1606. "BKNG False False True True \n",
  1607. "DOW False False True True \n",
  1608. "DPZ False False True True \n",
  1609. "EQIX False False True True \n",
  1610. "FCX False False True True \n",
  1611. "FIS False False True True \n",
  1612. "FLT False False True True \n",
  1613. "HPQ False False True True \n",
  1614. "HRL False False True True \n",
  1615. "HSIC False False True True \n",
  1616. "IQV False False True True \n",
  1617. "LYB False False True True \n",
  1618. "MPWR False False True True \n",
  1619. "NSC False False True True \n",
  1620. "NVDA False False True True \n",
  1621. "NWL False False True True \n",
  1622. "PVH False False True True \n",
  1623. "RL False False True True \n",
  1624. "RTX False False True True \n",
  1625. "SEDG False False True True \n",
  1626. "SWK False False True True \n",
  1627. "T False False True True \n",
  1628. "TTWO False False True True \n",
  1629. "TWTR False False True True \n",
  1630. "VZ False False True True \n",
  1631. "XRAY False False True True \n",
  1632. "\n",
  1633. " two_flat_bottom two_flat_top good_long good_short \n",
  1634. "AMD False True False True \n",
  1635. "BKNG False True False True \n",
  1636. "DOW False True False True \n",
  1637. "DPZ False True False True \n",
  1638. "EQIX False True False True \n",
  1639. "FCX False True False True \n",
  1640. "FIS False True False True \n",
  1641. "FLT False True False True \n",
  1642. "HPQ False True False True \n",
  1643. "HRL False True False True \n",
  1644. "HSIC False True False True \n",
  1645. "IQV False True False True \n",
  1646. "LYB False True False True \n",
  1647. "MPWR False True False True \n",
  1648. "NSC False True False True \n",
  1649. "NVDA False True False True \n",
  1650. "NWL False True False True \n",
  1651. "PVH False True False True \n",
  1652. "RL False True False True \n",
  1653. "RTX False True False True \n",
  1654. "SEDG False True False True \n",
  1655. "SWK False True False True \n",
  1656. "T False True False True \n",
  1657. "TTWO False True False True \n",
  1658. "TWTR False True False True \n",
  1659. "VZ False True False True \n",
  1660. "XRAY False True False True "
  1661. ],
  1662. "text/html": [
  1663. "\n",
  1664. " <div id=\"df-9637e530-e0a4-45bb-8b13-8abac86d7b02\">\n",
  1665. " <div class=\"colab-df-container\">\n",
  1666. " <div>\n",
  1667. "<style scoped>\n",
  1668. " .dataframe tbody tr th:only-of-type {\n",
  1669. " vertical-align: middle;\n",
  1670. " }\n",
  1671. "\n",
  1672. " .dataframe tbody tr th {\n",
  1673. " vertical-align: top;\n",
  1674. " }\n",
  1675. "\n",
  1676. " .dataframe thead th {\n",
  1677. " text-align: right;\n",
  1678. " }\n",
  1679. "</style>\n",
  1680. "<table border=\"1\" class=\"dataframe\">\n",
  1681. " <thead>\n",
  1682. " <tr style=\"text-align: right;\">\n",
  1683. " <th></th>\n",
  1684. " <th>last_close</th>\n",
  1685. " <th>sma50</th>\n",
  1686. " <th>sma100</th>\n",
  1687. " <th>sma200</th>\n",
  1688. " <th>above_all</th>\n",
  1689. " <th>below_all</th>\n",
  1690. " <th>last_flat_bottom</th>\n",
  1691. " <th>t1_flat_bottom</th>\n",
  1692. " <th>last_flat_top</th>\n",
  1693. " <th>t1_flat_top</th>\n",
  1694. " <th>two_flat_bottom</th>\n",
  1695. " <th>two_flat_top</th>\n",
  1696. " <th>good_long</th>\n",
  1697. " <th>good_short</th>\n",
  1698. " </tr>\n",
  1699. " </thead>\n",
  1700. " <tbody>\n",
  1701. " <tr>\n",
  1702. " <th>AMD</th>\n",
  1703. " <td>80.239998</td>\n",
  1704. " <td>88.9144</td>\n",
  1705. " <td>91.095</td>\n",
  1706. " <td>108.9809</td>\n",
  1707. " <td>False</td>\n",
  1708. " <td>True</td>\n",
  1709. " <td>False</td>\n",
  1710. " <td>False</td>\n",
  1711. " <td>True</td>\n",
  1712. " <td>True</td>\n",
  1713. " <td>False</td>\n",
  1714. " <td>True</td>\n",
  1715. " <td>False</td>\n",
  1716. " <td>True</td>\n",
  1717. " </tr>\n",
  1718. " <tr>\n",
  1719. " <th>BKNG</th>\n",
  1720. " <td>1837.910034</td>\n",
  1721. " <td>1895.030005</td>\n",
  1722. " <td>2019.870403</td>\n",
  1723. " <td>2164.28429</td>\n",
  1724. " <td>False</td>\n",
  1725. " <td>True</td>\n",
  1726. " <td>False</td>\n",
  1727. " <td>False</td>\n",
  1728. " <td>True</td>\n",
  1729. " <td>True</td>\n",
  1730. " <td>False</td>\n",
  1731. " <td>True</td>\n",
  1732. " <td>False</td>\n",
  1733. " <td>True</td>\n",
  1734. " </tr>\n",
  1735. " <tr>\n",
  1736. " <th>DOW</th>\n",
  1737. " <td>49.310001</td>\n",
  1738. " <td>52.457</td>\n",
  1739. " <td>58.938</td>\n",
  1740. " <td>58.96615</td>\n",
  1741. " <td>False</td>\n",
  1742. " <td>True</td>\n",
  1743. " <td>False</td>\n",
  1744. " <td>False</td>\n",
  1745. " <td>True</td>\n",
  1746. " <td>True</td>\n",
  1747. " <td>False</td>\n",
  1748. " <td>True</td>\n",
  1749. " <td>False</td>\n",
  1750. " <td>True</td>\n",
  1751. " </tr>\n",
  1752. " <tr>\n",
  1753. " <th>DPZ</th>\n",
  1754. " <td>365.799988</td>\n",
  1755. " <td>396.393997</td>\n",
  1756. " <td>380.270899</td>\n",
  1757. " <td>422.06545</td>\n",
  1758. " <td>False</td>\n",
  1759. " <td>True</td>\n",
  1760. " <td>False</td>\n",
  1761. " <td>False</td>\n",
  1762. " <td>True</td>\n",
  1763. " <td>True</td>\n",
  1764. " <td>False</td>\n",
  1765. " <td>True</td>\n",
  1766. " <td>False</td>\n",
  1767. " <td>True</td>\n",
  1768. " </tr>\n",
  1769. " <tr>\n",
  1770. " <th>EQIX</th>\n",
  1771. " <td>631.159973</td>\n",
  1772. " <td>669.7076</td>\n",
  1773. " <td>677.4155</td>\n",
  1774. " <td>714.115452</td>\n",
  1775. " <td>False</td>\n",
  1776. " <td>True</td>\n",
  1777. " <td>False</td>\n",
  1778. " <td>False</td>\n",
  1779. " <td>True</td>\n",
  1780. " <td>True</td>\n",
  1781. " <td>False</td>\n",
  1782. " <td>True</td>\n",
  1783. " <td>False</td>\n",
  1784. " <td>True</td>\n",
  1785. " </tr>\n",
  1786. " <tr>\n",
  1787. " <th>FCX</th>\n",
  1788. " <td>28.299999</td>\n",
  1789. " <td>29.4772</td>\n",
  1790. " <td>34.5892</td>\n",
  1791. " <td>38.75215</td>\n",
  1792. " <td>False</td>\n",
  1793. " <td>True</td>\n",
  1794. " <td>False</td>\n",
  1795. " <td>False</td>\n",
  1796. " <td>True</td>\n",
  1797. " <td>True</td>\n",
  1798. " <td>False</td>\n",
  1799. " <td>True</td>\n",
  1800. " <td>False</td>\n",
  1801. " <td>True</td>\n",
  1802. " </tr>\n",
  1803. " <tr>\n",
  1804. " <th>FIS</th>\n",
  1805. " <td>89.970001</td>\n",
  1806. " <td>96.906</td>\n",
  1807. " <td>98.1052</td>\n",
  1808. " <td>101.71945</td>\n",
  1809. " <td>False</td>\n",
  1810. " <td>True</td>\n",
  1811. " <td>False</td>\n",
  1812. " <td>False</td>\n",
  1813. " <td>True</td>\n",
  1814. " <td>True</td>\n",
  1815. " <td>False</td>\n",
  1816. " <td>True</td>\n",
  1817. " <td>False</td>\n",
  1818. " <td>True</td>\n",
  1819. " </tr>\n",
  1820. " <tr>\n",
  1821. " <th>FLT</th>\n",
  1822. " <td>209.119995</td>\n",
  1823. " <td>220.1844</td>\n",
  1824. " <td>229.4393</td>\n",
  1825. " <td>231.01195</td>\n",
  1826. " <td>False</td>\n",
  1827. " <td>True</td>\n",
  1828. " <td>False</td>\n",
  1829. " <td>False</td>\n",
  1830. " <td>True</td>\n",
  1831. " <td>True</td>\n",
  1832. " <td>False</td>\n",
  1833. " <td>True</td>\n",
  1834. " <td>False</td>\n",
  1835. " <td>True</td>\n",
  1836. " </tr>\n",
  1837. " <tr>\n",
  1838. " <th>HPQ</th>\n",
  1839. " <td>27.639999</td>\n",
  1840. " <td>32.6776</td>\n",
  1841. " <td>34.7818</td>\n",
  1842. " <td>35.70045</td>\n",
  1843. " <td>False</td>\n",
  1844. " <td>True</td>\n",
  1845. " <td>False</td>\n",
  1846. " <td>False</td>\n",
  1847. " <td>True</td>\n",
  1848. " <td>True</td>\n",
  1849. " <td>False</td>\n",
  1850. " <td>True</td>\n",
  1851. " <td>False</td>\n",
  1852. " <td>True</td>\n",
  1853. " </tr>\n",
  1854. " <tr>\n",
  1855. " <th>HRL</th>\n",
  1856. " <td>46.389999</td>\n",
  1857. " <td>48.9204</td>\n",
  1858. " <td>49.3459</td>\n",
  1859. " <td>48.72335</td>\n",
  1860. " <td>False</td>\n",
  1861. " <td>True</td>\n",
  1862. " <td>False</td>\n",
  1863. " <td>False</td>\n",
  1864. " <td>True</td>\n",
  1865. " <td>True</td>\n",
  1866. " <td>False</td>\n",
  1867. " <td>True</td>\n",
  1868. " <td>False</td>\n",
  1869. " <td>True</td>\n",
  1870. " </tr>\n",
  1871. " <tr>\n",
  1872. " <th>HSIC</th>\n",
  1873. " <td>71.260002</td>\n",
  1874. " <td>76.1284</td>\n",
  1875. " <td>79.9454</td>\n",
  1876. " <td>79.9241</td>\n",
  1877. " <td>False</td>\n",
  1878. " <td>True</td>\n",
  1879. " <td>False</td>\n",
  1880. " <td>False</td>\n",
  1881. " <td>True</td>\n",
  1882. " <td>True</td>\n",
  1883. " <td>False</td>\n",
  1884. " <td>True</td>\n",
  1885. " <td>False</td>\n",
  1886. " <td>True</td>\n",
  1887. " </tr>\n",
  1888. " <tr>\n",
  1889. " <th>IQV</th>\n",
  1890. " <td>207.259995</td>\n",
  1891. " <td>225.362001</td>\n",
  1892. " <td>219.561001</td>\n",
  1893. " <td>233.43535</td>\n",
  1894. " <td>False</td>\n",
  1895. " <td>True</td>\n",
  1896. " <td>False</td>\n",
  1897. " <td>False</td>\n",
  1898. " <td>True</td>\n",
  1899. " <td>True</td>\n",
  1900. " <td>False</td>\n",
  1901. " <td>True</td>\n",
  1902. " <td>False</td>\n",
  1903. " <td>True</td>\n",
  1904. " </tr>\n",
  1905. " <tr>\n",
  1906. " <th>LYB</th>\n",
  1907. " <td>80.779999</td>\n",
  1908. " <td>87.351</td>\n",
  1909. " <td>96.7496</td>\n",
  1910. " <td>96.72625</td>\n",
  1911. " <td>False</td>\n",
  1912. " <td>True</td>\n",
  1913. " <td>False</td>\n",
  1914. " <td>False</td>\n",
  1915. " <td>True</td>\n",
  1916. " <td>True</td>\n",
  1917. " <td>False</td>\n",
  1918. " <td>True</td>\n",
  1919. " <td>False</td>\n",
  1920. " <td>True</td>\n",
  1921. " </tr>\n",
  1922. " <tr>\n",
  1923. " <th>MPWR</th>\n",
  1924. " <td>424.420013</td>\n",
  1925. " <td>455.526601</td>\n",
  1926. " <td>439.029101</td>\n",
  1927. " <td>450.458952</td>\n",
  1928. " <td>False</td>\n",
  1929. " <td>True</td>\n",
  1930. " <td>False</td>\n",
  1931. " <td>False</td>\n",
  1932. " <td>True</td>\n",
  1933. " <td>True</td>\n",
  1934. " <td>False</td>\n",
  1935. " <td>True</td>\n",
  1936. " <td>False</td>\n",
  1937. " <td>True</td>\n",
  1938. " </tr>\n",
  1939. " <tr>\n",
  1940. " <th>NSC</th>\n",
  1941. " <td>239.259995</td>\n",
  1942. " <td>242.808199</td>\n",
  1943. " <td>244.047299</td>\n",
  1944. " <td>260.42445</td>\n",
  1945. " <td>False</td>\n",
  1946. " <td>True</td>\n",
  1947. " <td>False</td>\n",
  1948. " <td>False</td>\n",
  1949. " <td>True</td>\n",
  1950. " <td>True</td>\n",
  1951. " <td>False</td>\n",
  1952. " <td>True</td>\n",
  1953. " <td>False</td>\n",
  1954. " <td>True</td>\n",
  1955. " </tr>\n",
  1956. " <tr>\n",
  1957. " <th>NVDA</th>\n",
  1958. " <td>136.470001</td>\n",
  1959. " <td>168.6804</td>\n",
  1960. " <td>175.922</td>\n",
  1961. " <td>221.70725</td>\n",
  1962. " <td>False</td>\n",
  1963. " <td>True</td>\n",
  1964. " <td>False</td>\n",
  1965. " <td>False</td>\n",
  1966. " <td>True</td>\n",
  1967. " <td>True</td>\n",
  1968. " <td>False</td>\n",
  1969. " <td>True</td>\n",
  1970. " <td>False</td>\n",
  1971. " <td>True</td>\n",
  1972. " </tr>\n",
  1973. " <tr>\n",
  1974. " <th>NWL</th>\n",
  1975. " <td>17.520000</td>\n",
  1976. " <td>19.792</td>\n",
  1977. " <td>20.5676</td>\n",
  1978. " <td>21.64345</td>\n",
  1979. " <td>False</td>\n",
  1980. " <td>True</td>\n",
  1981. " <td>False</td>\n",
  1982. " <td>False</td>\n",
  1983. " <td>True</td>\n",
  1984. " <td>True</td>\n",
  1985. " <td>False</td>\n",
  1986. " <td>True</td>\n",
  1987. " <td>False</td>\n",
  1988. " <td>True</td>\n",
  1989. " </tr>\n",
  1990. " <tr>\n",
  1991. " <th>PVH</th>\n",
  1992. " <td>54.580002</td>\n",
  1993. " <td>61.9398</td>\n",
  1994. " <td>65.6222</td>\n",
  1995. " <td>80.47085</td>\n",
  1996. " <td>False</td>\n",
  1997. " <td>True</td>\n",
  1998. " <td>False</td>\n",
  1999. " <td>False</td>\n",
  2000. " <td>True</td>\n",
  2001. " <td>True</td>\n",
  2002. " <td>False</td>\n",
  2003. " <td>True</td>\n",
  2004. " <td>False</td>\n",
  2005. " <td>True</td>\n",
  2006. " </tr>\n",
  2007. " <tr>\n",
  2008. " <th>RL</th>\n",
  2009. " <td>90.010002</td>\n",
  2010. " <td>95.2326</td>\n",
  2011. " <td>97.9254</td>\n",
  2012. " <td>107.68015</td>\n",
  2013. " <td>False</td>\n",
  2014. " <td>True</td>\n",
  2015. " <td>False</td>\n",
  2016. " <td>False</td>\n",
  2017. " <td>True</td>\n",
  2018. " <td>True</td>\n",
  2019. " <td>False</td>\n",
  2020. " <td>True</td>\n",
  2021. " <td>False</td>\n",
  2022. " <td>True</td>\n",
  2023. " </tr>\n",
  2024. " <tr>\n",
  2025. " <th>RTX</th>\n",
  2026. " <td>87.589996</td>\n",
  2027. " <td>93.15</td>\n",
  2028. " <td>94.4544</td>\n",
  2029. " <td>93.18995</td>\n",
  2030. " <td>False</td>\n",
  2031. " <td>True</td>\n",
  2032. " <td>False</td>\n",
  2033. " <td>False</td>\n",
  2034. " <td>True</td>\n",
  2035. " <td>True</td>\n",
  2036. " <td>False</td>\n",
  2037. " <td>True</td>\n",
  2038. " <td>False</td>\n",
  2039. " <td>True</td>\n",
  2040. " </tr>\n",
  2041. " <tr>\n",
  2042. " <th>SEDG</th>\n",
  2043. " <td>267.119995</td>\n",
  2044. " <td>296.899196</td>\n",
  2045. " <td>281.759498</td>\n",
  2046. " <td>285.52135</td>\n",
  2047. " <td>False</td>\n",
  2048. " <td>True</td>\n",
  2049. " <td>False</td>\n",
  2050. " <td>False</td>\n",
  2051. " <td>True</td>\n",
  2052. " <td>True</td>\n",
  2053. " <td>False</td>\n",
  2054. " <td>True</td>\n",
  2055. " <td>False</td>\n",
  2056. " <td>True</td>\n",
  2057. " </tr>\n",
  2058. " <tr>\n",
  2059. " <th>SWK</th>\n",
  2060. " <td>85.769997</td>\n",
  2061. " <td>102.1148</td>\n",
  2062. " <td>112.0977</td>\n",
  2063. " <td>141.003349</td>\n",
  2064. " <td>False</td>\n",
  2065. " <td>True</td>\n",
  2066. " <td>False</td>\n",
  2067. " <td>False</td>\n",
  2068. " <td>True</td>\n",
  2069. " <td>True</td>\n",
  2070. " <td>False</td>\n",
  2071. " <td>True</td>\n",
  2072. " <td>False</td>\n",
  2073. " <td>True</td>\n",
  2074. " </tr>\n",
  2075. " <tr>\n",
  2076. " <th>T</th>\n",
  2077. " <td>17.190001</td>\n",
  2078. " <td>19.1376</td>\n",
  2079. " <td>19.6063</td>\n",
  2080. " <td>18.968898</td>\n",
  2081. " <td>False</td>\n",
  2082. " <td>True</td>\n",
  2083. " <td>False</td>\n",
  2084. " <td>False</td>\n",
  2085. " <td>True</td>\n",
  2086. " <td>True</td>\n",
  2087. " <td>False</td>\n",
  2088. " <td>True</td>\n",
  2089. " <td>False</td>\n",
  2090. " <td>True</td>\n",
  2091. " </tr>\n",
  2092. " <tr>\n",
  2093. " <th>TTWO</th>\n",
  2094. " <td>118.629997</td>\n",
  2095. " <td>126.3804</td>\n",
  2096. " <td>125.426001</td>\n",
  2097. " <td>143.99845</td>\n",
  2098. " <td>False</td>\n",
  2099. " <td>True</td>\n",
  2100. " <td>False</td>\n",
  2101. " <td>False</td>\n",
  2102. " <td>True</td>\n",
  2103. " <td>True</td>\n",
  2104. " <td>False</td>\n",
  2105. " <td>True</td>\n",
  2106. " <td>False</td>\n",
  2107. " <td>True</td>\n",
  2108. " </tr>\n",
  2109. " <tr>\n",
  2110. " <th>TWTR</th>\n",
  2111. " <td>38.630001</td>\n",
  2112. " <td>40.088</td>\n",
  2113. " <td>41.3936</td>\n",
  2114. " <td>40.6522</td>\n",
  2115. " <td>False</td>\n",
  2116. " <td>True</td>\n",
  2117. " <td>False</td>\n",
  2118. " <td>False</td>\n",
  2119. " <td>True</td>\n",
  2120. " <td>True</td>\n",
  2121. " <td>False</td>\n",
  2122. " <td>True</td>\n",
  2123. " <td>False</td>\n",
  2124. " <td>True</td>\n",
  2125. " </tr>\n",
  2126. " <tr>\n",
  2127. " <th>VZ</th>\n",
  2128. " <td>41.299999</td>\n",
  2129. " <td>46.719</td>\n",
  2130. " <td>48.4743</td>\n",
  2131. " <td>50.5009</td>\n",
  2132. " <td>False</td>\n",
  2133. " <td>True</td>\n",
  2134. " <td>False</td>\n",
  2135. " <td>False</td>\n",
  2136. " <td>True</td>\n",
  2137. " <td>True</td>\n",
  2138. " <td>False</td>\n",
  2139. " <td>True</td>\n",
  2140. " <td>False</td>\n",
  2141. " <td>True</td>\n",
  2142. " </tr>\n",
  2143. " <tr>\n",
  2144. " <th>XRAY</th>\n",
  2145. " <td>31.799999</td>\n",
  2146. " <td>35.5014</td>\n",
  2147. " <td>37.6142</td>\n",
  2148. " <td>45.09095</td>\n",
  2149. " <td>False</td>\n",
  2150. " <td>True</td>\n",
  2151. " <td>False</td>\n",
  2152. " <td>False</td>\n",
  2153. " <td>True</td>\n",
  2154. " <td>True</td>\n",
  2155. " <td>False</td>\n",
  2156. " <td>True</td>\n",
  2157. " <td>False</td>\n",
  2158. " <td>True</td>\n",
  2159. " </tr>\n",
  2160. " </tbody>\n",
  2161. "</table>\n",
  2162. "</div>\n",
  2163. " <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-9637e530-e0a4-45bb-8b13-8abac86d7b02')\"\n",
  2164. " title=\"Convert this dataframe to an interactive table.\"\n",
  2165. " style=\"display:none;\">\n",
  2166. " \n",
  2167. " <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
  2168. " width=\"24px\">\n",
  2169. " <path d=\"M0 0h24v24H0V0z\" fill=\"none\"/>\n",
  2170. " <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",
  2171. " </svg>\n",
  2172. " </button>\n",
  2173. " \n",
  2174. " <style>\n",
  2175. " .colab-df-container {\n",
  2176. " display:flex;\n",
  2177. " flex-wrap:wrap;\n",
  2178. " gap: 12px;\n",
  2179. " }\n",
  2180. "\n",
  2181. " .colab-df-convert {\n",
  2182. " background-color: #E8F0FE;\n",
  2183. " border: none;\n",
  2184. " border-radius: 50%;\n",
  2185. " cursor: pointer;\n",
  2186. " display: none;\n",
  2187. " fill: #1967D2;\n",
  2188. " height: 32px;\n",
  2189. " padding: 0 0 0 0;\n",
  2190. " width: 32px;\n",
  2191. " }\n",
  2192. "\n",
  2193. " .colab-df-convert:hover {\n",
  2194. " background-color: #E2EBFA;\n",
  2195. " box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
  2196. " fill: #174EA6;\n",
  2197. " }\n",
  2198. "\n",
  2199. " [theme=dark] .colab-df-convert {\n",
  2200. " background-color: #3B4455;\n",
  2201. " fill: #D2E3FC;\n",
  2202. " }\n",
  2203. "\n",
  2204. " [theme=dark] .colab-df-convert:hover {\n",
  2205. " background-color: #434B5C;\n",
  2206. " box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
  2207. " filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
  2208. " fill: #FFFFFF;\n",
  2209. " }\n",
  2210. " </style>\n",
  2211. "\n",
  2212. " <script>\n",
  2213. " const buttonEl =\n",
  2214. " document.querySelector('#df-9637e530-e0a4-45bb-8b13-8abac86d7b02 button.colab-df-convert');\n",
  2215. " buttonEl.style.display =\n",
  2216. " google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
  2217. "\n",
  2218. " async function convertToInteractive(key) {\n",
  2219. " const element = document.querySelector('#df-9637e530-e0a4-45bb-8b13-8abac86d7b02');\n",
  2220. " const dataTable =\n",
  2221. " await google.colab.kernel.invokeFunction('convertToInteractive',\n",
  2222. " [key], {});\n",
  2223. " if (!dataTable) return;\n",
  2224. "\n",
  2225. " const docLinkHtml = 'Like what you see? Visit the ' +\n",
  2226. " '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
  2227. " + ' to learn more about interactive tables.';\n",
  2228. " element.innerHTML = '';\n",
  2229. " dataTable['output_type'] = 'display_data';\n",
  2230. " await google.colab.output.renderOutput(dataTable, element);\n",
  2231. " const docLink = document.createElement('div');\n",
  2232. " docLink.innerHTML = docLinkHtml;\n",
  2233. " element.appendChild(docLink);\n",
  2234. " }\n",
  2235. " </script>\n",
  2236. " </div>\n",
  2237. " </div>\n",
  2238. " "
  2239. ]
  2240. },
  2241. "metadata": {},
  2242. "execution_count": 56
  2243. }
  2244. ]
  2245. }
  2246. ]
  2247. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement