Files
Quant_Code/5.课程代码/4.Stock-Prediction-Models/使用文档/Stock-Prediction-Models-master/agent/3.signal-rolling-agent.ipynb
zhoujie2104231 2757a4d0d2 chore: 添加Stock-Prediction-Models项目文件
添加了Stock-Prediction-Models项目的多个文件,包括数据集、模型代码、README文档和CSS样式文件。这些文件用于股票预测模型的训练和展示,涵盖了LSTM、GRU等深度学习模型的应用。
2025-04-27 16:28:06 +08:00

338 lines
57 KiB
Plaintext

{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import numpy as np\n",
"import pandas as pd\n",
"import matplotlib.pyplot as plt\n",
"import seaborn as sns\n",
"sns.set()"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Date</th>\n",
" <th>Open</th>\n",
" <th>High</th>\n",
" <th>Low</th>\n",
" <th>Close</th>\n",
" <th>Adj Close</th>\n",
" <th>Volume</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>2016-11-02</td>\n",
" <td>778.200012</td>\n",
" <td>781.650024</td>\n",
" <td>763.450012</td>\n",
" <td>768.700012</td>\n",
" <td>768.700012</td>\n",
" <td>1872400</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>2016-11-03</td>\n",
" <td>767.250000</td>\n",
" <td>769.950012</td>\n",
" <td>759.030029</td>\n",
" <td>762.130005</td>\n",
" <td>762.130005</td>\n",
" <td>1943200</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>2016-11-04</td>\n",
" <td>750.659973</td>\n",
" <td>770.359985</td>\n",
" <td>750.560974</td>\n",
" <td>762.020020</td>\n",
" <td>762.020020</td>\n",
" <td>2134800</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>2016-11-07</td>\n",
" <td>774.500000</td>\n",
" <td>785.190002</td>\n",
" <td>772.549988</td>\n",
" <td>782.520020</td>\n",
" <td>782.520020</td>\n",
" <td>1585100</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>2016-11-08</td>\n",
" <td>783.400024</td>\n",
" <td>795.632996</td>\n",
" <td>780.190002</td>\n",
" <td>790.510010</td>\n",
" <td>790.510010</td>\n",
" <td>1350800</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Date Open High Low Close Adj Close \\\n",
"0 2016-11-02 778.200012 781.650024 763.450012 768.700012 768.700012 \n",
"1 2016-11-03 767.250000 769.950012 759.030029 762.130005 762.130005 \n",
"2 2016-11-04 750.659973 770.359985 750.560974 762.020020 762.020020 \n",
"3 2016-11-07 774.500000 785.190002 772.549988 782.520020 782.520020 \n",
"4 2016-11-08 783.400024 795.632996 780.190002 790.510010 790.510010 \n",
"\n",
" Volume \n",
"0 1872400 \n",
"1 1943200 \n",
"2 2134800 \n",
"3 1585100 \n",
"4 1350800 "
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df = pd.read_csv('../dataset/GOOG-year.csv')\n",
"df.head()"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"def buy_stock(\n",
" real_movement,\n",
" delay = 5,\n",
" initial_state = 1,\n",
" initial_money = 10000,\n",
" max_buy = 1,\n",
" max_sell = 1,\n",
"):\n",
" \"\"\"\n",
" real_movement = actual movement in the real world\n",
" delay = how much interval you want to delay to change our decision from buy to sell, vice versa\n",
" initial_state = 1 is buy, 0 is sell\n",
" initial_money = 1000, ignore what kind of currency\n",
" max_buy = max quantity for share to buy\n",
" max_sell = max quantity for share to sell\n",
" \"\"\"\n",
" starting_money = initial_money\n",
" delay_change_decision = delay\n",
" current_decision = 0\n",
" state = initial_state\n",
" current_val = real_movement[0]\n",
" states_sell = []\n",
" states_buy = []\n",
" current_inventory = 0\n",
"\n",
" def buy(i, initial_money, current_inventory):\n",
" shares = initial_money // real_movement[i]\n",
" if shares < 1:\n",
" print(\n",
" 'day %d: total balances %f, not enough money to buy a unit price %f'\n",
" % (i, initial_money, real_movement[i])\n",
" )\n",
" else:\n",
" if shares > max_buy:\n",
" buy_units = max_buy\n",
" else:\n",
" buy_units = shares\n",
" initial_money -= buy_units * real_movement[i]\n",
" current_inventory += buy_units\n",
" print(\n",
" 'day %d: buy %d units at price %f, total balance %f'\n",
" % (i, buy_units, buy_units * real_movement[i], initial_money)\n",
" )\n",
" states_buy.append(0)\n",
" return initial_money, current_inventory\n",
"\n",
" if state == 1:\n",
" initial_money, current_inventory = buy(\n",
" 0, initial_money, current_inventory\n",
" )\n",
"\n",
" for i in range(1, real_movement.shape[0], 1):\n",
" if real_movement[i] < current_val and state == 0:\n",
" if current_decision < delay_change_decision:\n",
" current_decision += 1\n",
" else:\n",
" state = 1\n",
" initial_money, current_inventory = buy(\n",
" i, initial_money, current_inventory\n",
" )\n",
" current_decision = 0\n",
" states_buy.append(i)\n",
" if real_movement[i] > current_val and state == 1:\n",
" if current_decision < delay_change_decision:\n",
" current_decision += 1\n",
" else:\n",
" state = 0\n",
"\n",
" if current_inventory == 0:\n",
" print('day %d: cannot sell anything, inventory 0' % (i))\n",
" else:\n",
" if current_inventory > max_sell:\n",
" sell_units = max_sell\n",
" else:\n",
" sell_units = current_inventory\n",
" current_inventory -= sell_units\n",
" total_sell = sell_units * real_movement[i]\n",
" initial_money += total_sell\n",
" try:\n",
" invest = (\n",
" (real_movement[i] - real_movement[states_buy[-1]])\n",
" / real_movement[states_buy[-1]]\n",
" ) * 100\n",
" except:\n",
" invest = 0\n",
" print(\n",
" 'day %d, sell %d units at price %f, investment %f %%, total balance %f,'\n",
" % (i, sell_units, total_sell, invest, initial_money)\n",
" )\n",
"\n",
" current_decision = 0\n",
" states_sell.append(i)\n",
" current_val = real_movement[i]\n",
" invest = ((initial_money - starting_money) / starting_money) * 100\n",
" total_gains = initial_money - starting_money\n",
" return states_buy, states_sell, total_gains, invest"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"day 0: buy 1 units at price 768.700012, total balance 9231.299988\n",
"day 11, sell 1 units at price 771.229980, investment 0.329123 %, total balance 10002.529968,\n",
"day 20: buy 1 units at price 747.919983, total balance 9254.609985\n",
"day 26, sell 1 units at price 789.289978, investment 5.531340 %, total balance 10043.899963,\n",
"day 36: buy 1 units at price 789.909973, total balance 9253.989990\n",
"day 44, sell 1 units at price 806.150024, investment 2.055937 %, total balance 10060.140014,\n",
"day 57: buy 1 units at price 832.150024, total balance 9227.989990\n",
"day 67, sell 1 units at price 809.559998, investment -2.714658 %, total balance 10037.549988,\n",
"day 81: buy 1 units at price 830.630005, total balance 9206.919983\n",
"day 88, sell 1 units at price 845.539978, investment 1.795020 %, total balance 10052.459961,\n",
"day 97: buy 1 units at price 814.429993, total balance 9238.029968\n",
"day 103, sell 1 units at price 838.549988, investment 2.961580 %, total balance 10076.579956,\n",
"day 109: buy 1 units at price 823.349976, total balance 9253.229980\n",
"day 116, sell 1 units at price 843.190002, investment 2.409671 %, total balance 10096.419982,\n",
"day 134: buy 1 units at price 919.619995, total balance 9176.799987\n",
"day 139, sell 1 units at price 954.960022, investment 3.842895 %, total balance 10131.760009,\n",
"day 153: buy 1 units at price 950.760010, total balance 9180.999999\n",
"day 167, sell 1 units at price 911.710022, investment -4.107239 %, total balance 10092.710021,\n",
"day 182: buy 1 units at price 947.799988, total balance 9144.910033\n",
"day 194, sell 1 units at price 914.390015, investment -3.525002 %, total balance 10059.300048,\n",
"day 203: buy 1 units at price 921.280029, total balance 9138.020019\n",
"day 214, sell 1 units at price 929.080017, investment 0.846647 %, total balance 10067.100036,\n",
"day 224: buy 1 units at price 920.969971, total balance 9146.130065\n",
"day 230, sell 1 units at price 957.789978, investment 3.997960 %, total balance 10103.920043,\n",
"day 242: buy 1 units at price 984.450012, total balance 9119.470031\n",
"day 251, sell 1 units at price 1025.500000, investment 4.169840 %, total balance 10144.970031,\n"
]
}
],
"source": [
"states_buy, states_sell, total_gains, invest = buy_stock(df.Close, initial_state = 1, \n",
" delay = 4, initial_money = 10000)"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 1080x360 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"close = df['Close']\n",
"fig = plt.figure(figsize = (15,5))\n",
"plt.plot(close, color='r', lw=2.)\n",
"plt.plot(close, '^', markersize=10, color='m', label = 'buying signal', markevery = states_buy)\n",
"plt.plot(close, 'v', markersize=10, color='k', label = 'selling signal', markevery = states_sell)\n",
"plt.title('total gains %f, total investment %f%%'%(total_gains, invest))\n",
"plt.legend()\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.6.8"
}
},
"nbformat": 4,
"nbformat_minor": 2
}