Stock/test.ipynb

740 lines
59 KiB
Plaintext
Raw Normal View History

2022-05-25 03:16:39 +09:00
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import sqlite3\n",
"from typing import Dict\n",
"from render import * \n",
"import db as database\n",
"from jinja2 import Environment, PackageLoader, select_autoescape\n",
"import pandas as pd"
]
},
{
"cell_type": "code",
2022-06-06 10:55:12 +09:00
"execution_count": 2,
2022-05-25 03:16:39 +09:00
"metadata": {},
"outputs": [],
"source": [
"import importlib"
]
},
{
"cell_type": "code",
2022-06-06 10:55:12 +09:00
"execution_count": 3,
2022-05-25 03:16:39 +09:00
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
2022-06-06 10:55:12 +09:00
"<module 'db' from '/data/sss/f/tt/Stock/db.py'>"
2022-05-25 03:16:39 +09:00
]
},
2022-06-06 10:55:12 +09:00
"execution_count": 3,
2022-05-25 03:16:39 +09:00
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"importlib.reload(database)"
]
},
{
"cell_type": "code",
2022-06-06 10:55:12 +09:00
"execution_count": 4,
2022-05-25 03:16:39 +09:00
"metadata": {},
"outputs": [],
"source": [
"db = sqlite3.connect(\"stock.db\")\n"
]
},
2022-06-19 17:58:08 +09:00
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"False"
]
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"db.in_transaction"
]
},
2022-05-25 03:16:39 +09:00
{
"cell_type": "code",
2022-06-06 10:55:12 +09:00
"execution_count": 5,
2022-05-25 03:16:39 +09:00
"metadata": {},
"outputs": [],
"source": [
"krx = database.GetAllKRXCorp(db)"
]
},
{
"cell_type": "code",
2022-06-06 10:55:12 +09:00
"execution_count": 6,
2022-05-25 03:16:39 +09:00
"metadata": {},
"outputs": [],
"source": [
"krxDf = pd.DataFrame([corp.toDict() for corp in krx])"
]
},
{
"cell_type": "code",
2022-06-19 17:58:08 +09:00
"execution_count": 7,
2022-05-25 03:16:39 +09:00
"metadata": {},
"outputs": [],
"source": [
2022-06-19 17:58:08 +09:00
"data = GetStockPriceFrom(db,\"042670\", 61)\n"
2022-05-25 03:16:39 +09:00
]
},
{
"cell_type": "code",
2022-06-19 17:58:08 +09:00
"execution_count": 8,
2022-05-25 03:16:39 +09:00
"metadata": {},
"outputs": [],
"source": [
"s = pd.DataFrame(data, columns=[s for s in database.STOCK_INDEX.__members__.keys()])"
]
},
{
"cell_type": "code",
2022-06-19 17:58:08 +09:00
"execution_count": 9,
2022-05-25 03:16:39 +09:00
"metadata": {},
"outputs": [],
"source": [
"s.set_index(\"DATE\", inplace=True)"
]
},
{
"cell_type": "code",
2022-06-19 17:58:08 +09:00
"execution_count": 10,
2022-05-25 03:16:39 +09:00
"metadata": {},
"outputs": [],
"source": [
"stock = s"
]
},
{
"cell_type": "code",
2022-06-19 17:58:08 +09:00
"execution_count": 11,
2022-05-25 03:16:39 +09:00
"metadata": {},
2022-06-06 10:55:12 +09:00
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>CODE</th>\n",
" <th>CLOSE</th>\n",
" <th>DIFF</th>\n",
" <th>OPEN</th>\n",
" <th>HIGH</th>\n",
" <th>LOW</th>\n",
" <th>VOLUME</th>\n",
" </tr>\n",
" <tr>\n",
" <th>DATE</th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
2022-06-19 17:58:08 +09:00
" <th>2022-06-10</th>\n",
" <td>042670</td>\n",
" <td>6490</td>\n",
" <td>210</td>\n",
" <td>6670</td>\n",
" <td>6680</td>\n",
" <td>6470</td>\n",
" <td>1817916</td>\n",
2022-06-06 10:55:12 +09:00
" </tr>\n",
" <tr>\n",
2022-06-19 17:58:08 +09:00
" <th>2022-06-09</th>\n",
" <td>042670</td>\n",
" <td>6700</td>\n",
" <td>110</td>\n",
" <td>6620</td>\n",
" <td>6750</td>\n",
" <td>6440</td>\n",
" <td>2623890</td>\n",
2022-06-06 10:55:12 +09:00
" </tr>\n",
" <tr>\n",
2022-06-19 17:58:08 +09:00
" <th>2022-06-08</th>\n",
" <td>042670</td>\n",
" <td>6590</td>\n",
" <td>160</td>\n",
" <td>6820</td>\n",
" <td>6860</td>\n",
" <td>6580</td>\n",
" <td>2026670</td>\n",
2022-06-06 10:55:12 +09:00
" </tr>\n",
" <tr>\n",
2022-06-19 17:58:08 +09:00
" <th>2022-06-07</th>\n",
" <td>042670</td>\n",
" <td>6750</td>\n",
" <td>150</td>\n",
" <td>6870</td>\n",
" <td>6990</td>\n",
" <td>6720</td>\n",
" <td>3234237</td>\n",
2022-06-06 10:55:12 +09:00
" </tr>\n",
" <tr>\n",
2022-06-19 17:58:08 +09:00
" <th>2022-06-03</th>\n",
" <td>042670</td>\n",
" <td>6900</td>\n",
" <td>440</td>\n",
" <td>6550</td>\n",
" <td>6940</td>\n",
" <td>6510</td>\n",
" <td>9983571</td>\n",
2022-06-06 10:55:12 +09:00
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
2022-06-19 17:58:08 +09:00
" <th>2022-03-21</th>\n",
" <td>042670</td>\n",
" <td>6770</td>\n",
" <td>120</td>\n",
" <td>6910</td>\n",
" <td>7030</td>\n",
" <td>6770</td>\n",
" <td>1314044</td>\n",
2022-06-06 10:55:12 +09:00
" </tr>\n",
" <tr>\n",
2022-06-19 17:58:08 +09:00
" <th>2022-03-18</th>\n",
" <td>042670</td>\n",
" <td>6890</td>\n",
" <td>200</td>\n",
" <td>6750</td>\n",
" <td>6890</td>\n",
" <td>6650</td>\n",
" <td>1207925</td>\n",
2022-06-06 10:55:12 +09:00
" </tr>\n",
" <tr>\n",
2022-06-19 17:58:08 +09:00
" <th>2022-03-17</th>\n",
" <td>042670</td>\n",
" <td>6690</td>\n",
" <td>50</td>\n",
" <td>6790</td>\n",
" <td>6790</td>\n",
" <td>6670</td>\n",
" <td>1003575</td>\n",
2022-06-06 10:55:12 +09:00
" </tr>\n",
" <tr>\n",
2022-06-19 17:58:08 +09:00
" <th>2022-03-16</th>\n",
" <td>042670</td>\n",
" <td>6640</td>\n",
" <td>60</td>\n",
" <td>6610</td>\n",
" <td>6680</td>\n",
" <td>6570</td>\n",
" <td>642939</td>\n",
2022-06-06 10:55:12 +09:00
" </tr>\n",
" <tr>\n",
2022-06-19 17:58:08 +09:00
" <th>2022-03-15</th>\n",
" <td>042670</td>\n",
" <td>6580</td>\n",
" <td>260</td>\n",
" <td>6830</td>\n",
" <td>6840</td>\n",
" <td>6550</td>\n",
" <td>1776057</td>\n",
2022-06-06 10:55:12 +09:00
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>61 rows × 7 columns</p>\n",
"</div>"
],
"text/plain": [
2022-06-19 17:58:08 +09:00
" CODE CLOSE DIFF OPEN HIGH LOW VOLUME\n",
"DATE \n",
"2022-06-10 042670 6490 210 6670 6680 6470 1817916\n",
"2022-06-09 042670 6700 110 6620 6750 6440 2623890\n",
"2022-06-08 042670 6590 160 6820 6860 6580 2026670\n",
"2022-06-07 042670 6750 150 6870 6990 6720 3234237\n",
"2022-06-03 042670 6900 440 6550 6940 6510 9983571\n",
"... ... ... ... ... ... ... ...\n",
"2022-03-21 042670 6770 120 6910 7030 6770 1314044\n",
"2022-03-18 042670 6890 200 6750 6890 6650 1207925\n",
"2022-03-17 042670 6690 50 6790 6790 6670 1003575\n",
"2022-03-16 042670 6640 60 6610 6680 6570 642939\n",
"2022-03-15 042670 6580 260 6830 6840 6550 1776057\n",
2022-06-06 10:55:12 +09:00
"\n",
"[61 rows x 7 columns]"
]
},
2022-06-19 17:58:08 +09:00
"execution_count": 11,
2022-06-06 10:55:12 +09:00
"metadata": {},
"output_type": "execute_result"
}
],
2022-05-25 03:16:39 +09:00
"source": [
2022-06-06 10:55:12 +09:00
"stock"
]
},
{
"cell_type": "code",
"execution_count": 52,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"DATE\n",
"2022-06-03 175508\n",
"2022-06-02 350113\n",
"2022-05-31 276819\n",
"2022-05-30 191087\n",
"2022-05-27 392051\n",
" ... \n",
"2022-03-15 2701677\n",
"2022-03-14 4436719\n",
"2022-03-11 997048\n",
"2022-03-10 1754702\n",
"2022-03-08 878964\n",
"Name: VOLUME, Length: 61, dtype: int64"
]
},
"execution_count": 52,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"volume = stock[\"VOLUME\"]\n",
"volume"
2022-05-25 03:16:39 +09:00
]
},
{
"cell_type": "code",
2022-06-06 10:55:12 +09:00
"execution_count": 62,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"DATE\n",
"2022-06-03 True\n",
"2022-06-02 False\n",
"2022-05-31 True\n",
"2022-05-30 True\n",
"2022-05-27 False\n",
" ... \n",
"2022-03-15 False\n",
"2022-03-14 False\n",
"2022-03-11 True\n",
"2022-03-10 True\n",
"2022-03-08 False\n",
"Name: CLOSE, Length: 61, dtype: bool"
]
},
"execution_count": 62,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"biggerThanYesterday = stock[\"CLOSE\"].shift(-1) < stock[\"CLOSE\"]\n",
"biggerThanYesterday"
]
},
{
"cell_type": "code",
"execution_count": 63,
2022-05-25 03:16:39 +09:00
"metadata": {},
"outputs": [],
"source": [
2022-06-06 10:55:12 +09:00
"ObvWeight = biggerThanYesterday.map(lambda x: 1 if x else -1)\n",
"ObvWeight"
2022-05-25 03:16:39 +09:00
]
},
{
"cell_type": "code",
2022-06-06 10:55:12 +09:00
"execution_count": 66,
2022-05-25 03:16:39 +09:00
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"DATE\n",
2022-06-06 10:55:12 +09:00
"2022-06-03 175508\n",
"2022-06-02 -350113\n",
"2022-05-31 276819\n",
"2022-05-30 191087\n",
"2022-05-27 -392051\n",
" ... \n",
"2022-03-15 -2701677\n",
"2022-03-14 -4436719\n",
"2022-03-11 997048\n",
"2022-03-10 1754702\n",
"2022-03-08 -878964\n",
"Length: 61, dtype: int64"
2022-05-25 03:16:39 +09:00
]
},
2022-06-06 10:55:12 +09:00
"execution_count": 66,
2022-05-25 03:16:39 +09:00
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
2022-06-06 10:55:12 +09:00
"factor = volume * ObvWeight\n",
"factor"
2022-05-25 03:16:39 +09:00
]
},
{
"cell_type": "code",
2022-06-06 10:55:12 +09:00
"execution_count": 71,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"DATE\n",
"2022-06-03 -1804451\n",
"2022-06-02 -1979959\n",
"2022-05-31 -1629846\n",
"2022-05-30 -1906665\n",
"2022-05-27 -2097752\n",
" ... \n",
"2022-03-15 -5265610\n",
"2022-03-14 -2563933\n",
"2022-03-11 1872786\n",
"2022-03-10 875738\n",
"2022-03-08 -878964\n",
"Length: 61, dtype: int64"
]
},
"execution_count": 71,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"obv = factor.iloc[::-1].cumsum().iloc[::-1]\n",
"obv"
]
},
2022-06-19 17:58:08 +09:00
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [],
"source": [
"close = stock[\"CLOSE\"]\n",
"d5 = stock[\"CLOSE\"].loc[::-1].rolling(window=5\n",
" ).mean().dropna().loc[::-1]\n",
"d10 = stock[\"CLOSE\"].loc[::-1].rolling(window=10\n",
" ).mean().dropna().loc[::-1]\n",
"d20 = stock[\"CLOSE\"].loc[::-1].rolling(window=20\n",
" ).mean().dropna().loc[::-1]\n",
"d30 = stock[\"CLOSE\"].loc[::-1].rolling(window=30\n",
" ).mean().dropna().loc[::-1]\n",
"d60 = stock[\"CLOSE\"].loc[::-1].rolling(window=60\n",
" ).mean().dropna().loc[::-1]"
]
},
2022-06-06 10:55:12 +09:00
{
"cell_type": "code",
"execution_count": null,
2022-05-25 03:16:39 +09:00
"metadata": {},
"outputs": [],
"source": []
},
2022-06-19 17:58:08 +09:00
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"a = [d5, d10, d20, d30, d60]\n",
"if every(lambda i: isRelativeDiffLessThan(i,close,0.05,nday), a):\n",
" print(\"evert\")"
]
},
2022-05-25 03:16:39 +09:00
{
"cell_type": "code",
2022-06-06 10:55:12 +09:00
"execution_count": 73,
2022-05-25 03:16:39 +09:00
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
2022-06-06 10:55:12 +09:00
"([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19],\n",
" [Text(0, 0, ''),\n",
" Text(0, 0, ''),\n",
" Text(0, 0, ''),\n",
" Text(0, 0, ''),\n",
" Text(0, 0, ''),\n",
" Text(0, 0, ''),\n",
" Text(0, 0, ''),\n",
" Text(0, 0, ''),\n",
" Text(0, 0, ''),\n",
" Text(0, 0, ''),\n",
" Text(0, 0, ''),\n",
" Text(0, 0, ''),\n",
" Text(0, 0, ''),\n",
" Text(0, 0, ''),\n",
" Text(0, 0, ''),\n",
" Text(0, 0, ''),\n",
" Text(0, 0, ''),\n",
" Text(0, 0, ''),\n",
" Text(0, 0, ''),\n",
" Text(0, 0, '')])"
2022-05-25 03:16:39 +09:00
]
},
2022-06-06 10:55:12 +09:00
"execution_count": 73,
2022-05-25 03:16:39 +09:00
"metadata": {},
"output_type": "execute_result"
2022-06-06 10:55:12 +09:00
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
2022-05-25 03:16:39 +09:00
}
],
2022-06-06 10:55:12 +09:00
"source": [
"plt.plot(obv.iloc[:20].iloc[::-1])\n",
"plt.xticks(rotation = 45)"
]
},
{
"cell_type": "code",
"execution_count": 32,
"metadata": {},
"outputs": [],
"source": [
"d5 = stock[\"CLOSE\"].loc[::-1].rolling(window=5\n",
" ).mean().dropna().loc[::-1]\n",
"d20 = stock[\"CLOSE\"].loc[::-1].rolling(window=20\n",
" ).mean().dropna().loc[::-1]\n",
"d60 = stock[\"CLOSE\"].loc[::-1].rolling(window=60\n",
" ).mean().dropna().loc[::-1]"
]
},
{
"cell_type": "code",
"execution_count": 41,
"metadata": {},
"outputs": [],
"source": [
"ewm5 = stock[\"CLOSE\"].loc[::-1].ewm(span=5).mean().loc[::-1]\n",
"ewm10 = stock[\"CLOSE\"].loc[::-1].ewm(span=10).mean().loc[::-1]\n",
"macd = (ewm5 - ewm10)\n",
"signal = macd.loc[::-1].ewm(span=4).mean().loc[::-1]"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
2022-05-25 03:16:39 +09:00
"source": []
},
{
"cell_type": "code",
2022-06-06 10:55:12 +09:00
"execution_count": 48,
"metadata": {},
"outputs": [],
"source": [
"import matplotlib.pyplot as plt"
]
},
{
"cell_type": "code",
"execution_count": 51,
2022-05-25 03:16:39 +09:00
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
2022-06-06 10:55:12 +09:00
"([0, 1, 2, 3, 4, 5, 6, 7, 8, 9],\n",
" [Text(0, 0, ''),\n",
" Text(0, 0, ''),\n",
" Text(0, 0, ''),\n",
" Text(0, 0, ''),\n",
" Text(0, 0, ''),\n",
" Text(0, 0, ''),\n",
" Text(0, 0, ''),\n",
" Text(0, 0, ''),\n",
" Text(0, 0, ''),\n",
" Text(0, 0, '')])"
2022-05-25 03:16:39 +09:00
]
},
2022-06-06 10:55:12 +09:00
"execution_count": 51,
2022-05-25 03:16:39 +09:00
"metadata": {},
"output_type": "execute_result"
2022-06-06 10:55:12 +09:00
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
2022-05-25 03:16:39 +09:00
}
],
2022-06-06 10:55:12 +09:00
"source": [
"plt.plot(macd.iloc[0:10].iloc[::-1],label=\"macd\")\n",
"plt.legend()\n",
"plt.plot(signal.iloc[0:10].iloc[::-1],label=\"signal\")\n",
"plt.legend()\n",
"plt.xticks(rotation=45)"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [],
"source": [
"from gen import *"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [],
"source": [
"dataStore = DataStore()\n",
"krx_corps = dataStore.getAllKRXCorp()"
]
2022-05-25 03:16:39 +09:00
},
{
"cell_type": "code",
2022-06-06 10:55:12 +09:00
"execution_count": 18,
"metadata": {},
"outputs": [],
"source": [
"collector = OutputCollector()\n",
"prepareCollector(collector)"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"100%|██████████| 2564/2564 [01:10<00:00, 36.62it/s] \n"
]
}
],
"source": [
"for corp in tqdm.tqdm(krx_corps):\n",
" for nday in range(0, 5):\n",
" collect(dataStore, collector, corp, nday)\n",
" dataStore.clearCache()"
]
},
{
"cell_type": "code",
"execution_count": 26,
2022-05-25 03:16:39 +09:00
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
2022-06-06 10:55:12 +09:00
"['2022-05-27',\n",
" '2022-06-02',\n",
" '2022-05-31',\n",
" '2022-05-30',\n",
" '2021-04-14',\n",
" '2022-05-04',\n",
" '2022-01-28',\n",
" '2022-05-16',\n",
" '2021-07-05',\n",
" '2022-02-10']"
2022-05-25 03:16:39 +09:00
]
},
2022-06-06 10:55:12 +09:00
"execution_count": 26,
2022-05-25 03:16:39 +09:00
"metadata": {},
"output_type": "execute_result"
}
],
"source": []
}
],
"metadata": {
"interpreter": {
2022-06-06 10:55:12 +09:00
"hash": "315ddbd22344660769d1dae43a6a5e914850a7ce75ac77a9d658327898fcf0d6"
2022-05-25 03:16:39 +09:00
},
"kernelspec": {
2022-06-06 10:55:12 +09:00
"display_name": "Python 3.9.2 ('stock': venv)",
2022-05-25 03:16:39 +09:00
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
2022-06-06 10:55:12 +09:00
"version": "3.9.2"
2022-05-25 03:16:39 +09:00
},
"orig_nbformat": 4
},
"nbformat": 4,
"nbformat_minor": 2
}