{ "cells": [ { "cell_type": "markdown", "metadata": { "id": "1VVIL-rnbSER" }, "source": [ "# Pythonによる米国株テクニカル分析と検証: \n", "# -どのテクニカル指標が良い結果を出すのか過去データを検証しよう\n", "\n", "
\n", "Pythonによる米国株テクニカル分析と検証: -どのテクニカル指標が良い結果を出すのか過去データを検証しよう\n", "Satoshi (著) 形式: Kindle版\n", "ASIN: B092LX6D25\n", "発売日: 2021/4/14\n", "\n", "\n", "\n", "本のソースコード: \n", "https://vrquest.org/index.php/technical-indicator-and-anomaly\n", "\n", "\n", "Google Colab:\n", "\n", "https://colab.research.google.com/introp.ipython\n", "\n", "\n", "筆者のTwitter: \n", "\n", "https://twitter.com/beavis28\n", "\n", "\n", "筆者の Youtube:\n", "\n", "https://www.youtube.com/channel/UChXU9b0QMF24hw1Au-VAS0g\n", "" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "is_colab = 'google.colab' in str(get_ipython()) # for Google Colab" ] }, { "cell_type": "markdown", "metadata": { "id": "a0LMdAogcIrI" }, "source": [ "## Alpha Vantage データを取り込む\n", "\n", "データを取り込むライブラリとして Alpha Vantage を無料で利用する。\n", "\n", "API Key を入手: \n", "\n", "https://www.alphavantage.co/suppoert/#api-key\n", "\n", "Alpha Vantage API Documentation: \n", "\n", "https://www.alphavantage.co/documentation/\n", "\n", "pypi Alpha Vantage API Documentation:\n", "\n", "https://pypi.org/project/alpha-vantage/\n" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "executionInfo": { "elapsed": 3818, "status": "ok", "timestamp": 1649917344457, "user": { "displayName": "Yoshihisa Nitta", "userId": "15888006800030996813" }, "user_tz": -540 }, "id": "Ae4axhmmbJ6b" }, "outputs": [], "source": [ "! pip -q install alpha_vantage" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "if not is_colab:\n", " ! pip -q install numpy matplotlib seaborn" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "if not is_colab:\n", " ! pip -q install scikit-learn\n", " ! pip -q install pandas" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [], "source": [ "if not is_colab:\n", " ! pip -q install plotly\n" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "executionInfo": { "elapsed": 419, "status": "ok", "timestamp": 1649917349769, "user": { "displayName": "Yoshihisa Nitta", "userId": "15888006800030996813" }, "user_tz": -540 }, "id": "nCZ8wkAfgh7U" }, "outputs": [], "source": [ "import pandas as pd\n", "import matplotlib.pyplot as plt\n", "from sklearn.model_selection import train_test_split\n", "from sklearn.tree import DecisionTreeClassifier\n", "from datetime import date\n", "from dateutil.relativedelta import relativedelta\n", "from dateutil import parser\n", "import numpy as np\n", "import math\n", "from alpha_vantage.techindicators import TechIndicators\n", "\n", "import plotly.express as px\n", "import plotly.figure_factory as ff\n", "import plotly.graph_objects as go\n", "import seaborn as sns" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "executionInfo": { "elapsed": 255, "status": "ok", "timestamp": 1649917352445, "user": { "displayName": "Yoshihisa Nitta", "userId": "15888006800030996813" }, "user_tz": -540 }, "id": "_FTR90QmhrM-" }, "outputs": [], "source": [ "plt.style.use('fivethirtyeight')\n", "plt.rcParams['figure.figsize'] = [24, 8]\n", "API_KEY = 'Your API Key' # YOU MUST CHANGE THIS." ] }, { "cell_type": "markdown", "metadata": { "id": "C4HybDjfzlK_" }, "source": [ "### Alpha Vantage から取得したデータから DataFrame を作る\n", "\n", "
\n", " | 1. open | \n", "2. high | \n", "3. low | \n", "4. close | \n", "5. volume | \n", "Price_Up_From_PreviousDay | \n", "Today_Price_Up | \n", "Tomorrow_Price_Up | \n", "Percentage | \n", "SomeDaysAfterClosingPrice | \n", "
---|---|---|---|---|---|---|---|---|---|---|
date | \n", "\n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " |
2022-04-13 | \n", "33.66 | \n", "34.92 | \n", "33.3401 | \n", "34.68 | \n", "17181342.0 | \n", "1 | \n", "1 | \n", "0 | \n", "0.033065 | \n", "NaN | \n", "
2022-04-12 | \n", "34.72 | \n", "35.95 | \n", "33.1900 | \n", "33.57 | \n", "19538493.0 | \n", "0 | \n", "0 | \n", "1 | \n", "-0.024128 | \n", "NaN | \n", "
2022-04-11 | \n", "34.65 | \n", "35.75 | \n", "34.0530 | \n", "34.40 | \n", "20890421.0 | \n", "0 | \n", "0 | \n", "0 | \n", "-0.035604 | \n", "NaN | \n", "
2022-04-08 | \n", "35.88 | \n", "36.83 | \n", "35.4100 | \n", "35.67 | \n", "21718400.0 | \n", "0 | \n", "0 | \n", "0 | \n", "-0.016000 | \n", "NaN | \n", "
2022-04-07 | \n", "36.39 | \n", "37.30 | \n", "34.5800 | \n", "36.25 | \n", "21490374.0 | \n", "0 | \n", "0 | \n", "0 | \n", "-0.006032 | \n", "NaN | \n", "
... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "
2017-03-08 | \n", "22.03 | \n", "23.43 | \n", "21.3100 | \n", "22.81 | \n", "49834423.0 | \n", "1 | \n", "1 | \n", "0 | \n", "0.063899 | \n", "21.82 | \n", "
2017-03-07 | \n", "22.21 | \n", "22.50 | \n", "20.6400 | \n", "21.44 | \n", "71899652.0 | \n", "0 | \n", "0 | \n", "1 | \n", "-0.098023 | \n", "20.38 | \n", "
2017-03-06 | \n", "28.17 | \n", "28.25 | \n", "23.7700 | \n", "23.77 | \n", "72938848.0 | \n", "0 | \n", "0 | \n", "0 | \n", "-0.122554 | \n", "19.93 | \n", "
2017-03-03 | \n", "26.39 | \n", "29.44 | \n", "26.0600 | \n", "27.09 | \n", "148227379.0 | \n", "1 | \n", "1 | \n", "0 | \n", "0.106618 | \n", "19.54 | \n", "
2017-03-02 | \n", "24.00 | \n", "26.05 | \n", "23.5000 | \n", "24.48 | \n", "217109769.0 | \n", "0 | \n", "1 | \n", "1 | \n", "NaN | \n", "19.89 | \n", "
1290 rows × 10 columns
\n", "