From 5b89607aeb428a3c104637140095c2fb582a305c Mon Sep 17 00:00:00 2001 From: mac Date: Wed, 24 Jan 2024 22:17:14 -0500 Subject: [PATCH] Add a notebook for A-share stock news data preparation --- .../A-share_data_preparation.ipynb | 1189 +++++++++++++++++ 1 file changed, 1189 insertions(+) create mode 100644 fingpt/FinGPT_Forecaster/A-share_data_preparation.ipynb diff --git a/fingpt/FinGPT_Forecaster/A-share_data_preparation.ipynb b/fingpt/FinGPT_Forecaster/A-share_data_preparation.ipynb new file mode 100644 index 0000000..46b2793 --- /dev/null +++ b/fingpt/FinGPT_Forecaster/A-share_data_preparation.ipynb @@ -0,0 +1,1189 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "pip install akshare --upgrade" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'/Users/mac/Desktop/FinGPT_Forecasting_Project'" + ] + }, + "execution_count": 1, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import os\n", + "os.getcwd()" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "HS300_stock = pd.read_csv(\"HS300Index.csv\", header=None)\n", + "HS_index = HS300_stock[0].tolist()\n", + "HS_index = [\"0\"*(6-len(str(i)))+str(i) for i in HS_index]" + ] + }, + { + "cell_type": "code", + "execution_count": 53, + "metadata": {}, + "outputs": [], + "source": [ + "# with open(\"HS300_Index.txt\", 'w') as f:\n", + "# write_item = \"\\n\".join(HS_index)\n", + "# f.write(write_item)\n", + "# f.close()" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "11pages obtained for symbol: 000063\n", + "================== symbol000063completed! ==================\n", + "6pages obtained for symbol: 000069\n", + "================== symbol000069completed! ==================\n", + "9pages obtained for symbol: 000100\n", + "================== symbol000100completed! ==================\n", + "4pages obtained for symbol: 000157\n", + "================== symbol000157completed! ==================\n", + "6pages obtained for symbol: 000166\n", + "================== symbol000166completed! ==================\n", + "7pages obtained for symbol: 000301\n", + "================== symbol000301completed! ==================\n", + "10pages obtained for symbol: 000333\n", + "================== symbol000333completed! ==================\n", + "5pages obtained for symbol: 000338\n", + "================== symbol000338completed! ==================\n", + "5pages obtained for symbol: 000408\n", + "================== symbol000408completed! ==================\n", + "4pages obtained for symbol: 000425\n", + "================== symbol000425completed! ==================\n", + "5pages obtained for symbol: 000538\n", + "================== symbol000538completed! ==================\n", + "10pages obtained for symbol: 000568\n", + "================== symbol000568completed! ==================\n", + "6pages obtained for symbol: 000596\n", + "================== symbol000596completed! ==================\n", + "3pages obtained for symbol: 000617\n", + "================== symbol000617completed! ==================\n", + "11pages obtained for symbol: 000625\n", + "================== symbol000625completed! ==================\n", + "9pages obtained for symbol: 000651\n", + "================== symbol000651completed! ==================\n", + "9pages obtained for symbol: 000661\n", + "================== symbol000661completed! ==================\n", + "3pages obtained for symbol: 000708\n", + "================== symbol000708completed! ==================\n", + "3pages obtained for symbol: 000723\n", + "================== symbol000723completed! ==================\n", + "8pages obtained for symbol: 000725\n", + "================== symbol000725completed! ==================\n", + "3pages obtained for symbol: 000733\n", + "================== symbol000733completed! ==================\n", + "3pages obtained for symbol: 000768\n", + "================== symbol000768completed! ==================\n", + "5pages obtained for symbol: 000776\n", + "================== symbol000776completed! ==================\n", + "3pages obtained for symbol: 000786\n", + "================== symbol000786completed! ==================\n", + "6pages obtained for symbol: 000792\n", + "================== symbol000792completed! ==================\n", + "6pages obtained for symbol: 000800\n", + "================== symbol000800completed! ==================\n", + "11pages obtained for symbol: 000858\n", + "================== symbol000858completed! ==================\n", + "8pages obtained for symbol: 000876\n", + "================== symbol000876completed! ==================\n", + "3pages obtained for symbol: 000877\n", + "================== symbol000877completed! ==================\n", + "5pages obtained for symbol: 000895\n", + "================== symbol000895completed! ==================\n", + "5pages obtained for symbol: 000938\n", + "================== symbol000938completed! ==================\n", + "8pages obtained for symbol: 000963\n", + "================== symbol000963completed! ==================\n", + "10pages obtained for symbol: 000977\n", + "================== symbol000977completed! ==================\n", + "5pages obtained for symbol: 000983\n", + "================== symbol000983completed! ==================\n", + "3pages obtained for symbol: 001289\n", + "================== symbol001289completed! ==================\n", + "7pages obtained for symbol: 001979\n", + "================== symbol001979completed! ==================\n", + "3pages obtained for symbol: 002001\n", + "================== symbol002001completed! ==================\n", + "3pages obtained for symbol: 002007\n", + "================== symbol002007completed! ==================\n", + "4pages obtained for symbol: 002027\n", + "================== symbol002027completed! ==================\n", + "5pages obtained for symbol: 002049\n", + "================== symbol002049completed! ==================\n", + "5pages obtained for symbol: 002050\n", + "================== symbol002050completed! ==================\n", + "2pages obtained for symbol: 002064\n", + "================== symbol002064completed! ==================\n", + "7pages obtained for symbol: 002074\n", + "================== symbol002074completed! ==================\n", + "5pages obtained for symbol: 002120\n", + "================== symbol002120completed! ==================\n", + "8pages obtained for symbol: 002129\n", + "================== symbol002129completed! ==================\n", + "5pages obtained for symbol: 002142\n", + "================== symbol002142completed! ==================\n", + "3pages obtained for symbol: 002179\n", + "================== symbol002179completed! ==================\n", + "3pages obtained for symbol: 002180\n", + "================== symbol002180completed! ==================\n", + "4pages obtained for symbol: 002202\n", + "================== symbol002202completed! ==================\n", + "11pages obtained for symbol: 002230\n", + "================== symbol002230completed! ==================\n", + "6pages obtained for symbol: 002236\n", + "================== symbol002236completed! ==================\n", + "7pages obtained for symbol: 002241\n", + "================== symbol002241completed! ==================\n", + "4pages obtained for symbol: 002252\n", + "================== symbol002252completed! ==================\n", + "6pages obtained for symbol: 002271\n", + "================== symbol002271completed! ==================\n", + "7pages obtained for symbol: 002304\n", + "================== symbol002304completed! ==================\n", + "4pages obtained for symbol: 002311\n", + "================== symbol002311completed! ==================\n", + "9pages obtained for symbol: 002352\n", + "================== symbol002352completed! ==================\n", + "8pages obtained for symbol: 002371\n", + "================== symbol002371completed! ==================\n", + "4pages obtained for symbol: 002410\n", + "================== symbol002410completed! ==================\n", + "2pages obtained for symbol: 002414\n", + "================== symbol002414completed! ==================\n", + "6pages obtained for symbol: 002415\n", + "================== symbol002415completed! ==================\n", + "9pages obtained for symbol: 002459\n", + "================== symbol002459completed! ==================\n", + "8pages obtained for symbol: 002460\n", + "================== symbol002460completed! ==================\n", + "8pages obtained for symbol: 002466\n", + "================== symbol002466completed! ==================\n", + "8pages obtained for symbol: 002475\n", + "================== symbol002475completed! ==================\n", + "6pages obtained for symbol: 002493\n", + "================== symbol002493completed! ==================\n", + "7pages obtained for symbol: 002555\n", + "================== symbol002555completed! ==================\n", + "11pages obtained for symbol: 002594\n", + "================== symbol002594completed! ==================\n", + "4pages obtained for symbol: 002601\n", + "================== symbol002601completed! ==================\n", + "4pages obtained for symbol: 002648\n", + "================== symbol002648completed! ==================\n", + "5pages obtained for symbol: 002709\n", + "================== symbol002709completed! ==================\n", + "11pages obtained for symbol: 002714\n", + "================== symbol002714completed! ==================\n", + "3pages obtained for symbol: 002736\n", + "================== symbol002736completed! ==================\n", + "4pages obtained for symbol: 002756\n", + "================== symbol002756completed! ==================\n", + "8pages obtained for symbol: 002812\n", + "================== symbol002812completed! ==================\n", + "5pages obtained for symbol: 002821\n", + "================== symbol002821completed! ==================\n", + "3pages obtained for symbol: 002841\n", + "================== symbol002841completed! ==================\n", + "4pages obtained for symbol: 002916\n", + "================== symbol002916completed! ==================\n", + "7pages obtained for symbol: 002920\n", + "================== symbol002920completed! ==================\n", + "4pages obtained for symbol: 002938\n", + "================== symbol002938completed! ==================\n", + "4pages obtained for symbol: 003816\n", + "================== symbol003816completed! ==================\n", + "9pages obtained for symbol: 300014\n", + "================== symbol300014completed! ==================\n", + "5pages obtained for symbol: 300015\n", + "================== symbol300015completed! ==================\n", + "7pages obtained for symbol: 300033\n", + "================== symbol300033completed! ==================\n", + "8pages obtained for symbol: 300059\n", + "================== symbol300059completed! ==================\n", + "7pages obtained for symbol: 300122\n", + "================== symbol300122completed! ==================\n", + "7pages obtained for symbol: 300124\n", + "================== symbol300124completed! ==================\n", + "6pages obtained for symbol: 300142\n", + "================== symbol300142completed! ==================\n", + "6pages obtained for symbol: 300207\n", + "================== symbol300207completed! ==================\n", + "6pages obtained for symbol: 300223\n", + "================== symbol300223completed! ==================\n", + "9pages obtained for symbol: 300274\n", + "================== symbol300274completed! ==================\n", + "5pages obtained for symbol: 300316\n", + "================== symbol300316completed! ==================\n", + "3pages obtained for symbol: 300347\n", + "================== symbol300347completed! ==================\n", + "2pages obtained for symbol: 300408\n", + "================== symbol300408completed! ==================\n", + "4pages obtained for symbol: 300413\n", + "================== symbol300413completed! ==================\n", + "4pages obtained for symbol: 300433\n", + "================== symbol300433completed! ==================\n", + "3pages obtained for symbol: 300450\n", + "================== symbol300450completed! ==================\n", + "4pages obtained for symbol: 300454\n", + "================== symbol300454completed! ==================\n", + "5pages obtained for symbol: 300496\n", + "================== symbol300496completed! ==================\n", + "8pages obtained for symbol: 300498\n", + "================== symbol300498completed! ==================\n", + "4pages obtained for symbol: 300601\n", + "================== symbol300601completed! ==================\n", + "3pages obtained for symbol: 300628\n", + "================== symbol300628completed! ==================\n", + "3pages obtained for symbol: 300661\n", + "================== symbol300661completed! ==================\n", + "11pages obtained for symbol: 300750\n", + "================== symbol300750completed! ==================\n", + "5pages obtained for symbol: 300751\n", + "================== symbol300751completed! ==================\n", + "4pages obtained for symbol: 300759\n", + "================== symbol300759completed! ==================\n", + "10pages obtained for symbol: 300760\n", + "================== symbol300760completed! ==================\n", + "6pages obtained for symbol: 300763\n", + "================== symbol300763completed! ==================\n", + "5pages obtained for symbol: 300769\n", + "================== symbol300769completed! ==================\n", + "7pages obtained for symbol: 300782\n", + "================== symbol300782completed! ==================\n", + "9pages obtained for symbol: 300896\n", + "================== symbol300896completed! ==================\n", + "3pages obtained for symbol: 300919\n", + "================== symbol300919completed! ==================\n", + "6pages obtained for symbol: 300957\n", + "================== symbol300957completed! ==================\n", + "4pages obtained for symbol: 300979\n", + "================== symbol300979completed! ==================\n", + "5pages obtained for symbol: 300999\n", + "================== symbol300999completed! ==================\n", + "5pages obtained for symbol: 600000\n", + "================== symbol600000completed! ==================\n", + "5pages obtained for symbol: 600009\n", + "================== symbol600009completed! ==================\n", + "5pages obtained for symbol: 600010\n", + "================== symbol600010completed! ==================\n", + "3pages obtained for symbol: 600011\n", + "================== symbol600011completed! ==================\n", + "4pages obtained for symbol: 600015\n", + "================== symbol600015completed! ==================\n", + "5pages obtained for symbol: 600016\n", + "================== symbol600016completed! ==================\n", + "2pages obtained for symbol: 600018\n", + "================== symbol600018completed! ==================\n", + "5pages obtained for symbol: 600019\n", + "================== symbol600019completed! ==================\n", + "3pages obtained for symbol: 600025\n", + "================== symbol600025completed! ==================\n", + "9pages obtained for symbol: 600028\n", + "================== symbol600028completed! ==================\n", + "7pages obtained for symbol: 600029\n", + "================== symbol600029completed! ==================\n", + "8pages obtained for symbol: 600030\n", + "================== symbol600030completed! ==================\n", + "5pages obtained for symbol: 600031\n", + "================== symbol600031completed! ==================\n", + "8pages obtained for symbol: 600036\n", + "================== symbol600036completed! ==================\n", + "5pages obtained for symbol: 600039\n", + "================== symbol600039completed! ==================\n", + "7pages obtained for symbol: 600048\n", + "================== symbol600048completed! ==================\n", + "9pages obtained for symbol: 600050\n", + "================== symbol600050completed! ==================\n", + "2pages obtained for symbol: 600061\n", + "================== symbol600061completed! ==================\n", + "3pages obtained for symbol: 600085\n", + "================== symbol600085completed! ==================\n", + "5pages obtained for symbol: 600089\n", + "================== symbol600089completed! ==================\n", + "10pages obtained for symbol: 600104\n", + "================== symbol600104completed! ==================\n", + "4pages obtained for symbol: 600111\n", + "================== symbol600111completed! ==================\n", + "9pages obtained for symbol: 600115\n", + "================== symbol600115completed! ==================\n", + "4pages obtained for symbol: 600132\n", + "================== symbol600132completed! ==================\n", + "5pages obtained for symbol: 600150\n", + "================== symbol600150completed! ==================\n", + "4pages obtained for symbol: 600176\n", + "================== symbol600176completed! ==================\n", + "3pages obtained for symbol: 600183\n", + "================== symbol600183completed! ==================\n", + "5pages obtained for symbol: 600188\n", + "================== symbol600188completed! ==================\n", + "7pages obtained for symbol: 600196\n", + "================== symbol600196completed! ==================\n", + "3pages obtained for symbol: 600219\n", + "================== symbol600219completed! ==================\n", + "5pages obtained for symbol: 600233\n", + "================== symbol600233completed! ==================\n", + "11pages obtained for symbol: 600276\n", + "================== symbol600276completed! ==================\n", + "6pages obtained for symbol: 600309\n", + "================== symbol600309completed! ==================\n", + "4pages obtained for symbol: 600332\n", + "================== symbol600332completed! ==================\n", + "4pages obtained for symbol: 600346\n", + "================== symbol600346completed! ==================\n", + "2pages obtained for symbol: 600362\n", + "================== symbol600362completed! ==================\n", + "5pages obtained for symbol: 600383\n", + "================== symbol600383completed! ==================\n", + "3pages obtained for symbol: 600406\n", + "================== symbol600406completed! ==================\n", + "3pages obtained for symbol: 600426\n", + "================== symbol600426completed! ==================\n", + "7pages obtained for symbol: 600436\n", + "================== symbol600436completed! ==================\n", + "10pages obtained for symbol: 600438\n", + "================== symbol600438completed! ==================\n", + "3pages obtained for symbol: 600460\n", + "================== symbol600460completed! ==================\n", + "11pages obtained for symbol: 600519\n", + "================== symbol600519completed! ==================\n", + "5pages obtained for symbol: 600547\n", + "================== symbol600547completed! ==================\n", + "5pages obtained for symbol: 600570\n", + "================== symbol600570completed! ==================\n", + "3pages obtained for symbol: 600584\n", + "================== symbol600584completed! ==================\n", + "3pages obtained for symbol: 600585\n", + "================== symbol600585completed! ==================\n", + "4pages obtained for symbol: 600588\n", + "================== symbol600588completed! ==================\n", + "6pages obtained for symbol: 600600\n", + "================== symbol600600completed! ==================\n", + "3pages obtained for symbol: 600606\n", + "================== symbol600606completed! ==================\n", + "3pages obtained for symbol: 600660\n", + "================== symbol600660completed! ==================\n", + "3pages obtained for symbol: 600674\n", + "================== symbol600674completed! ==================\n", + "5pages obtained for symbol: 600690\n", + "================== symbol600690completed! ==================\n", + "6pages obtained for symbol: 600732\n", + "================== symbol600732completed! ==================\n", + "2pages obtained for symbol: 600741\n", + "================== symbol600741completed! ==================\n", + "4pages obtained for symbol: 600745\n", + "================== symbol600745completed! ==================\n", + "4pages obtained for symbol: 600754\n", + "================== symbol600754completed! ==================\n", + "3pages obtained for symbol: 600760\n", + "================== symbol600760completed! ==================\n", + "5pages obtained for symbol: 600763\n", + "================== symbol600763completed! ==================\n", + "3pages obtained for symbol: 600795\n", + "================== symbol600795completed! ==================\n", + "4pages obtained for symbol: 600803\n", + "================== symbol600803completed! ==================\n", + "9pages obtained for symbol: 600809\n", + "================== symbol600809completed! ==================\n", + "5pages obtained for symbol: 600837\n", + "================== symbol600837completed! ==================\n", + "3pages obtained for symbol: 600845\n", + "================== symbol600845completed! ==================\n", + "3pages obtained for symbol: 600875\n", + "================== symbol600875completed! ==================\n", + "5pages obtained for symbol: 600884\n", + "================== symbol600884completed! ==================\n", + "3pages obtained for symbol: 600886\n", + "================== symbol600886completed! ==================\n", + "5pages obtained for symbol: 600887\n", + "================== symbol600887completed! ==================\n", + "2pages obtained for symbol: 600893\n", + "================== symbol600893completed! ==================\n", + "6pages obtained for symbol: 600900\n", + "================== symbol600900completed! ==================\n", + "4pages obtained for symbol: 600905\n", + "================== symbol600905completed! ==================\n", + "4pages obtained for symbol: 600918\n", + "================== symbol600918completed! ==================\n", + "6pages obtained for symbol: 600919\n", + "================== symbol600919completed! ==================\n", + "5pages obtained for symbol: 600926\n", + "================== symbol600926completed! ==================\n", + "11pages obtained for symbol: 600941\n", + "================== symbol600941completed! ==================\n", + "5pages obtained for symbol: 600958\n", + "================== symbol600958completed! ==================\n", + "4pages obtained for symbol: 600989\n", + "================== symbol600989completed! ==================\n", + "3pages obtained for symbol: 600999\n", + "================== symbol600999completed! ==================\n", + "3pages obtained for symbol: 601006\n", + "================== symbol601006completed! ==================\n", + "3pages obtained for symbol: 601009\n", + "================== symbol601009completed! ==================\n", + "11pages obtained for symbol: 601012\n", + "================== symbol601012completed! ==================\n", + "5pages obtained for symbol: 601021\n", + "================== symbol601021completed! ==================\n", + "4pages obtained for symbol: 601066\n", + "================== symbol601066completed! ==================\n", + "6pages obtained for symbol: 601088\n", + "================== symbol601088completed! ==================\n", + "2pages obtained for symbol: 601100\n", + "================== symbol601100completed! ==================\n", + "7pages obtained for symbol: 601111\n", + "================== symbol601111completed! ==================\n", + "4pages obtained for symbol: 601117\n", + "================== symbol601117completed! ==================\n", + "11pages obtained for symbol: 601138\n", + "================== symbol601138completed! ==================\n", + "4pages obtained for symbol: 601155\n", + "================== symbol601155completed! ==================\n", + "8pages obtained for symbol: 601166\n", + "================== symbol601166completed! ==================\n", + "4pages obtained for symbol: 601169\n", + "================== symbol601169completed! ==================\n", + "4pages obtained for symbol: 601186\n", + "================== symbol601186completed! ==================\n", + "5pages obtained for symbol: 601211\n", + "================== symbol601211completed! ==================\n", + "2pages obtained for symbol: 601216\n", + "================== symbol601216completed! ==================\n", + "4pages obtained for symbol: 601225\n", + "================== symbol601225completed! ==================\n", + "4pages obtained for symbol: 601229\n", + "================== symbol601229completed! ==================\n", + "3pages obtained for symbol: 601236\n", + "================== symbol601236completed! ==================\n", + "11pages obtained for symbol: 601238\n", + "================== symbol601238completed! ==================\n", + "9pages obtained for symbol: 601288\n", + "================== symbol601288completed! ==================\n", + "11pages obtained for symbol: 601318\n", + "================== symbol601318completed! ==================\n", + "6pages obtained for symbol: 601319\n", + "================== symbol601319completed! ==================\n", + "5pages obtained for symbol: 601328\n", + "================== symbol601328completed! ==================\n", + "7pages obtained for symbol: 601336\n", + "================== symbol601336completed! ==================\n", + "10pages obtained for symbol: 601360\n", + "================== symbol601360completed! ==================\n", + "3pages obtained for symbol: 601377\n", + "================== symbol601377completed! ==================\n", + "4pages obtained for symbol: 601390\n", + "================== symbol601390completed! ==================\n", + "8pages obtained for symbol: 601398\n", + "================== symbol601398completed! ==================\n", + "3pages obtained for symbol: 601600\n", + "================== symbol601600completed! ==================\n", + "7pages obtained for symbol: 601601\n", + "================== symbol601601completed! ==================\n", + "5pages obtained for symbol: 601607\n", + "================== symbol601607completed! ==================\n", + "4pages obtained for symbol: 601615\n", + "================== symbol601615completed! ==================\n", + "3pages obtained for symbol: 601618\n", + "================== symbol601618completed! ==================\n", + "10pages obtained for symbol: 601628\n", + "================== symbol601628completed! ==================\n", + "10pages obtained for symbol: 601633\n", + "================== symbol601633completed! ==================\n", + "8pages obtained for symbol: 601658\n", + "================== symbol601658completed! ==================\n", + "6pages obtained for symbol: 601668\n", + "================== symbol601668completed! ==================\n", + "6pages obtained for symbol: 601669\n", + "================== symbol601669completed! ==================\n", + "4pages obtained for symbol: 601688\n", + "================== symbol601688completed! ==================\n", + "4pages obtained for symbol: 601689\n", + "================== symbol601689completed! ==================\n", + "3pages obtained for symbol: 601698\n", + "================== symbol601698completed! ==================\n", + "4pages obtained for symbol: 601699\n", + "================== symbol601699completed! ==================\n", + "8pages obtained for symbol: 601728\n", + "================== symbol601728completed! ==================\n", + "5pages obtained for symbol: 601766\n", + "================== symbol601766completed! ==================\n", + "4pages obtained for symbol: 601788\n", + "================== symbol601788completed! ==================\n", + "5pages obtained for symbol: 601799\n", + "================== symbol601799completed! ==================\n", + "4pages obtained for symbol: 601800\n", + "================== symbol601800completed! ==================\n", + "3pages obtained for symbol: 601808\n", + "================== symbol601808completed! ==================\n", + "3pages obtained for symbol: 601816\n", + "================== symbol601816completed! ==================\n", + "5pages obtained for symbol: 601818\n", + "================== symbol601818completed! ==================\n", + "3pages obtained for symbol: 601838\n", + "================== symbol601838completed! ==================\n", + "7pages obtained for symbol: 601857\n", + "================== symbol601857completed! ==================\n", + "4pages obtained for symbol: 601865\n", + "================== symbol601865completed! ==================\n", + "4pages obtained for symbol: 601868\n", + "================== symbol601868completed! ==================\n", + "3pages obtained for symbol: 601872\n", + "================== symbol601872completed! ==================\n", + "3pages obtained for symbol: 601877\n", + "================== symbol601877completed! ==================\n", + "5pages obtained for symbol: 601878\n", + "================== symbol601878completed! ==================\n", + "5pages obtained for symbol: 601881\n", + "================== symbol601881completed! ==================\n", + "9pages obtained for symbol: 601888\n", + "================== symbol601888completed! ==================\n", + "3pages obtained for symbol: 601898\n", + "================== symbol601898completed! ==================\n", + "7pages obtained for symbol: 601899\n", + "================== symbol601899completed! ==================\n", + "5pages obtained for symbol: 601901\n", + "================== symbol601901completed! ==================\n", + "5pages obtained for symbol: 601919\n", + "================== symbol601919completed! ==================\n", + "8pages obtained for symbol: 601939\n", + "================== symbol601939completed! ==================\n", + "4pages obtained for symbol: 601985\n", + "================== symbol601985completed! ==================\n", + "8pages obtained for symbol: 601988\n", + "================== symbol601988completed! ==================\n", + "2pages obtained for symbol: 601989\n", + "================== symbol601989completed! ==================\n", + "6pages obtained for symbol: 601995\n", + "================== symbol601995completed! ==================\n", + "6pages obtained for symbol: 601998\n", + "================== symbol601998completed! ==================\n", + "6pages obtained for symbol: 603019\n", + "================== symbol603019completed! ==================\n", + "4pages obtained for symbol: 603185\n", + "================== symbol603185completed! ==================\n", + "5pages obtained for symbol: 603195\n", + "================== symbol603195completed! ==================\n", + "7pages obtained for symbol: 603259\n", + "================== symbol603259completed! ==================\n", + "5pages obtained for symbol: 603260\n", + "================== symbol603260completed! ==================\n", + "4pages obtained for symbol: 603288\n", + "================== symbol603288completed! ==================\n", + "4pages obtained for symbol: 603290\n", + "================== symbol603290completed! ==================\n", + "4pages obtained for symbol: 603369\n", + "================== symbol603369completed! ==================\n", + "6pages obtained for symbol: 603392\n", + "================== symbol603392completed! ==================\n", + "3pages obtained for symbol: 603486\n", + "================== symbol603486completed! ==================\n", + "6pages obtained for symbol: 603501\n", + "================== symbol603501completed! ==================\n", + "4pages obtained for symbol: 603659\n", + "================== symbol603659completed! ==================\n", + "5pages obtained for symbol: 603799\n", + "================== symbol603799completed! ==================\n", + "3pages obtained for symbol: 603806\n", + "================== symbol603806completed! ==================\n", + "5pages obtained for symbol: 603833\n", + "================== symbol603833completed! ==================\n", + "2pages obtained for symbol: 603899\n", + "================== symbol603899completed! ==================\n", + "5pages obtained for symbol: 603986\n", + "================== symbol603986completed! ==================\n", + "4pages obtained for symbol: 603993\n", + "================== symbol603993completed! ==================\n", + "5pages obtained for symbol: 605117\n", + "================== symbol605117completed! ==================\n", + "7pages obtained for symbol: 605499\n", + "================== symbol605499completed! ==================\n", + "6pages obtained for symbol: 688005\n", + "================== symbol688005completed! ==================\n", + "5pages obtained for symbol: 688008\n", + "================== symbol688008completed! ==================\n", + "9pages obtained for symbol: 688012\n", + "================== symbol688012completed! ==================\n", + "8pages obtained for symbol: 688036\n", + "================== symbol688036completed! ==================\n", + "3pages obtained for symbol: 688065\n", + "================== symbol688065completed! ==================\n", + "11pages obtained for symbol: 688111\n", + "================== symbol688111completed! ==================\n", + "4pages obtained for symbol: 688126\n", + "================== symbol688126completed! ==================\n", + "3pages obtained for symbol: 688187\n", + "================== symbol688187completed! ==================\n", + "10pages obtained for symbol: 688223\n", + "================== symbol688223completed! ==================\n", + "6pages obtained for symbol: 688303\n", + "================== symbol688303completed! ==================\n", + "6pages obtained for symbol: 688363\n", + "================== symbol688363completed! ==================\n", + "3pages obtained for symbol: 688396\n", + "================== symbol688396completed! ==================\n", + "5pages obtained for symbol: 688561\n", + "================== symbol688561completed! ==================\n", + "10pages obtained for symbol: 688599\n", + "================== symbol688599completed! ==================\n", + "8pages obtained for symbol: 688981\n", + "================== symbol688981completed! ==================\n" + ] + } + ], + "source": [ + "# Data Aquisition Pipeline\n", + "from datetime import date\n", + "import akshare as ak\n", + "name_dir = \"HS300_news_data\" + str(date.today().strftime(\"%Y%m%d\"))\n", + "# os.makedirs(name_dir, exist_ok=True)\n", + "os.chdir(name_dir)\n", + "for i in HS_index[2:]:\n", + " file_name = \"news_data\" + i + \".csv\"\n", + " df_list = []\n", + " for j in range(1, 20):\n", + " try:\n", + " df_list.append(ak.stock_news_em(symbol=i, page=j))\n", + " except KeyError:\n", + " print(str(j) + \"pages obtained for symbol: \" + i)\n", + " break\n", + " news_df_i = pd.concat(df_list, ignore_index=True)\n", + " news_df_i.to_csv(file_name)\n", + " print(\"================== symbol\"+i+\"completed! ==================\")" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Data Aquisition" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import akshare as ak\n", + "import pandas as pd\n", + "import time\n", + "import math\n", + "import json\n", + "import random\n", + "start_date = \"20230406\"\n", + "end_date = \"20230502\"" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "def return_transform(ret):\n", + " \n", + " up_down = '涨' if ret >= 0 else '跌'\n", + " integer = math.ceil(abs(100 * ret))\n", + " \n", + " return up_down + (str(integer) if integer <= 5 else '5+')\n", + "\n", + "def get_return(symbol, start_date = start_date, end_date = end_date, adjust=\"hfq\"):\n", + " \"\"\"\n", + " Get stock return data.\n", + "\n", + " Args:\n", + " symbol: str\n", + " A-share market stock symbol\n", + " start_date, end_date: str\n", + " format: yyyymmdd\n", + " adjust: str (\"qfq\", \"hfq\")\n", + " price ajustment\n", + " default = \"hfq\" 后复权\n", + " \n", + " Return:\n", + " weekly forward filled return data\n", + " \"\"\"\n", + " \n", + " # load data\n", + " return_data = ak.stock_zh_a_hist(symbol=symbol, period=\"daily\", start_date=start_date, end_date=end_date, adjust=adjust)\n", + " \n", + " # process timestamp\n", + " return_data[\"日期\"] = pd.to_datetime(return_data[\"日期\"])\n", + " return_data.set_index(\"日期\", inplace=True)\n", + "\n", + " # resample and filled with forward data\n", + " weekly_data = return_data[\"收盘\"].resample(\"W\").ffill()\n", + " weekly_returns = weekly_data.pct_change()[1:]\n", + " weekly_start_prices = weekly_data[:-1]\n", + " weekly_end_prices = weekly_data[1:]\n", + " weekly_data = pd.DataFrame({\n", + " '起始日期': weekly_start_prices.index,\n", + " '起始价': weekly_start_prices.values,\n", + " '结算日期': weekly_end_prices.index,\n", + " '结算价': weekly_end_prices.values,\n", + " '周收益': weekly_returns.values\n", + " })\n", + " weekly_data[\"简化周收益\"] = weekly_data[\"周收益\"].map(return_transform)\n", + " \n", + " return weekly_data\n", + "\n", + "# get basics\n", + "def get_basic(symbol, data, no_validrange = False):\n", + " \"\"\"\n", + " Get and match basic data to news dataframe.\n", + "\n", + " Args:\n", + " symbol: str\n", + " A-share market stock symbol\n", + " data: DataFrame\n", + " dated news data\n", + " no_validrange: bool\n", + " False to set range for the valid basic_info.\n", + " default valid range is 3 weeks after the basic_info reported\n", + " \n", + " Return:\n", + " financial news dataframe with matched basic_financial info\n", + " \"\"\"\n", + "\n", + " # load quarterly basic data\n", + " basic_quarter_financials = ak.stock_financial_abstract_ths(symbol = symbol, indicator=\"按单季度\")\n", + "\n", + " basic_fin_dict = basic_quarter_financials.to_dict(\"index\")\n", + " basic_fin_list = [dict([(key, val) for key, val in basic_fin_dict[i].items() if val]) for i in range(len(basic_fin_dict))]\n", + "\n", + " # match basic financial data to news dataframe\n", + " matched_basic_fin = []\n", + " for i, row in data.iterrows():\n", + "\n", + " newsweek_enddate = row['结算日期'].strftime(\"%Y-%m-%d\")\n", + " \n", + " # set 3 weeks for the valid time of quarterly basic_financial info \n", + " check_date = start_date if i<2 else data.loc[i-2, '起始日期'].strftime(\"%Y-%m-%d\")\n", + "\n", + " matched_basic = {}\n", + " for basic in basic_fin_list:\n", + " if (no_validrange and basic[\"报告期\"] < newsweek_enddate) or (check_date <= basic[\"报告期\"] < newsweek_enddate):\n", + " matched_basic = basic\n", + " break\n", + " matched_basic_fin.append(json.dumps(matched_basic, ensure_ascii=False))\n", + "\n", + " data['基本面'] = matched_basic_fin\n", + "\n", + " return data\n", + "\n", + "def raw_financial_data(symbol, with_basics = True):\n", + " \n", + " # get return data from API\n", + " data = get_return(symbol=symbol)\n", + " \n", + " # get news data from local\n", + " file_name = \"news_data\" + symbol + \".csv\"\n", + " news_df = pd.read_csv(\"HS300_news_data20240118/\"+file_name, index_col=0)\n", + " news_df[\"发布时间\"] = pd.to_datetime(news_df[\"发布时间\"], exact=False, format=\"%Y-%m-%d\")\n", + " news_df.sort_values(by=[\"发布时间\"], inplace=True)\n", + " \n", + " # match weekly news for return data\n", + " news_list = []\n", + " for a, row in data.iterrows():\n", + " start_date = row['起始日期'].strftime('%Y-%m-%d')\n", + " end_date = row['结算日期'].strftime('%Y-%m-%d')\n", + " print(symbol, ': ', start_date, ' - ', end_date)\n", + " \n", + " weekly_news = news_df.loc[(news_df[\"发布时间\"]>start_date) & (news_df[\"发布时间\"] row['起始价'] else '下跌'\n", + " head = \"自{}至{},{}的股票价格由{:.2f}{}至{:.2f}。在此期间的公司新闻如下所列:\\n\\n\".format(\n", + " start_date, end_date, symbol, row['起始价'], term, row['结算价'])\n", + "\n", + " news = json.loads(row[\"新闻\"])\n", + " news = [\"[新闻标题]:{}\\n[新闻内容]:{}\\n\".format(\n", + " n['新闻标题'], n['新闻内容']) for n in news if n['发布时间'][:8] <= end_date.replace('-', '')]\n", + "\n", + " basics = json.loads(row['基本面'])\n", + " if basics:\n", + " basics = \"如下所列为{}近期的一些金融基本面信息,记录时间为{}:\\n\\n[金融基本面]:\\n\\n\".format(\n", + " symbol, basics['报告期']) + \"\\n\".join(f\"{k}: {v}\" for k, v in basics.items() if k != 'period')\n", + " else:\n", + " basics = \"[金融基本面]:\\n\\n 无金融基本面记录\"\n", + "\n", + " return head, news, basics\n", + "\n", + "def sample_news(news, k=5):\n", + " \"\"\"\n", + " Ramdomly select past news.\n", + "\n", + " Args:\n", + " news:\n", + " newslist in the timerange\n", + " k: int\n", + " the number of selected news\n", + " \"\"\"\n", + " return [news[i] for i in sorted(random.sample(range(len(news)), k))]\n", + "\n", + "def get_all_prompts(symbol, min_past_week=1, max_past_weeks=3, with_basics=True):\n", + " \"\"\"\n", + " Generate prompt\n", + " Args:\n", + " symbol: str\n", + " stock ticker\n", + " min_past_week: int\n", + " max_past_week: int\n", + " with_basics: bool\n", + " If true, add basic infomation to the prompt\n", + " Return:\n", + " Prompts for the daterange\n", + " \"\"\"\n", + "\n", + " # Load Data\n", + " df = raw_financial_data(symbol, with_basics)\n", + " \n", + " company_prompt = get_company_prompt(symbol)\n", + "\n", + " prev_rows = []\n", + " all_prompts = []\n", + "\n", + " for row_idx, row in df.iterrows():\n", + "\n", + " prompt = \"\"\n", + "\n", + " # judge for available history news \n", + " if len(prev_rows) >= min_past_week:\n", + "\n", + " # randomly set retrieve weeks\n", + " idx = min(random.choice(range(min_past_week, max_past_weeks+1)), len(prev_rows))\n", + " for i in range(-idx, 0):\n", + " # Add Head\n", + " prompt += \"\\n\" + prev_rows[i][0]\n", + " # Add History News (with numbers constraint)\n", + " sampled_news = sample_news(\n", + " prev_rows[i][1],\n", + " min(5, len(prev_rows[i][1]))\n", + " )\n", + " if sampled_news:\n", + " prompt += \"\\n\".join(sampled_news)\n", + " else:\n", + " prompt += \"无有关新闻报告\"\n", + " \n", + " head, news, basics = get_prompt_by_row(symbol, row)\n", + " \n", + " prev_rows.append((head, news, basics))\n", + "\n", + " if len(prev_rows) > max_past_weeks:\n", + " prev_rows.pop(0)\n", + " \n", + " # set this to make sure there is history news for each considered date\n", + " if not prompt:\n", + " continue\n", + "\n", + " prediction = map_return_label(row['简化周收益'])\n", + "\n", + " prompt = company_prompt + '\\n' + prompt + '\\n' + basics\n", + " prompt += f\"\\n\\n基于在{row['起始日期']}之前的所有信息,让我们首先分析{symbol}的积极发展和潜在担忧。保持陈述的简洁,分别提出2-4个最重要的因素。大部分所提及的因素应该从公司的相关新闻中推断出来。\" \\\n", + " f\"那么让我们假设你对于下一周({row['起始日期']}至{row['结算日期']})的预测是{prediction}。提供一个总结分析来支持你的预测。预测结果需要从你最后的分析中推断出来,因此不作为你分析的基础因素。\"\n", + "\n", + " all_prompts.append(prompt.strip())\n", + "\n", + " return all_prompts" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "000001 : 2023-04-09 - 2023-04-16\n", + "000001 : 2023-04-16 - 2023-04-23\n", + "000001 : 2023-04-23 - 2023-04-30\n" + ] + }, + { + "data": { + "text/plain": [ + "['[公司介绍]:\\n\\n平安银行是一家在银行行业的领先实体。自1970年01月01日成立并公开交易以来,该公司已确立其作为市场主要参与者之一的声誉。截止今天,平安银行的总市值为178534447421.59998人民币,总股本数为19405918198.0,流通市值为178531031940.0人民币,流通股数为19405546950.0。\\n\\n平安银行主要在中国运营,以股票代码000001在交易所进行交易。作为在银行行业的一个主导力量,该公司持续创新,不断推动行业进步。\\n\\n自2023-04-09至2023-04-16,000001的股票价格由2257.00上涨至2268.38。在此期间的公司新闻如下所列:\\n\\n[新闻标题]:金融业高薪招聘AI训练师 有AI产品负责人年薪超百万\\n[新闻内容]:优先考虑具有拥有虚拟偶像、数字人相关产品工作经验者等。 BOSS直聘官网截图 也有一些相对“平易近人”的工作岗位。 如平安银行000001.SZ)网金及财富管理事业部招聘AI业务策略训练师,薪资待遇为1万-1.5万元/月。 平安银行介绍称,该岗位负责业务策略训练,将业务策略在智慧经营平台做落地实施,将策略与各触达方式做串联部署\\n\\n[新闻标题]:平安银行王蓉晖:矩阵式产品服务实现“真小微 真信用 真普惠”\\n[新闻内容]:就业多则经济活。 今年3月,在平安银行开放日上,平安银行董事长谢永林表示,全新的开放银行不仅是支持零售转型战略的新打法,而且通过服务平台上的海量小微客户,平安银行在服务小微,践行普惠金融方面也探索出了新举措。 平安银行财报显示,截至2022年末,平安银行普惠型小微企业贷款累计户数105\\n\\n[新闻标题]:20股特大单净流入资金超2亿元\\n[新闻内容]:491.562.30建筑装饰300120经纬辉开8.7819.952.28电子002051中工国际12.5010.042.25建筑装饰000001平安银行12.691.042.24银行601138工业富联18.072.322.09电子300014亿纬锂能68.904.242.07电力设备 特大单净流出资金排名\\n\\n如下所列为000001近期的一些金融基本面信息,记录时间为2023-03-31:\\n\\n[金融基本面]:\\n\\n报告期: 2023-03-31\\n净利润: 146.02亿\\n净利润同比增长率: 13.63%\\n扣非净利润: 144.69亿\\n扣非净利润同比增长率: 12.40%\\n营业总收入: 450.98亿\\n营业总收入同比增长率: -2.40%\\n基本每股收益: 0.6500\\n每股净资产: 19.42\\n每股资本公积金: 4.16\\n每股未分配利润: 10.25\\n每股经营现金流: 5.62\\n销售净利率: 32.38%\\n净资产收益率: 3.39%\\n净资产收益率-摊薄: 3.27%\\n产权比率: 11.21\\n资产负债率: 91.81%\\n\\n基于在2023-04-16 00:00:00之前的所有信息,让我们首先分析000001的积极发展和潜在担忧。保持陈述的简洁,分别提出2-4个最重要的因素。大部分所提及的因素应该从公司的相关新闻中推断出来。那么让我们假设你对于下一周(2023-04-16 00:00:00至2023-04-23 00:00:00)的预测是下跌1-2%。提供一个总结分析来支持你的预测。预测结果需要从你最后的分析中推断出来,因此不作为你分析的基础因素。',\n", + " '[公司介绍]:\\n\\n平安银行是一家在银行行业的领先实体。自1970年01月01日成立并公开交易以来,该公司已确立其作为市场主要参与者之一的声誉。截止今天,平安银行的总市值为178534447421.59998人民币,总股本数为19405918198.0,流通市值为178531031940.0人民币,流通股数为19405546950.0。\\n\\n平安银行主要在中国运营,以股票代码000001在交易所进行交易。作为在银行行业的一个主导力量,该公司持续创新,不断推动行业进步。\\n\\n自2023-04-16至2023-04-23,000001的股票价格由2268.38下跌至2237.50。在此期间的公司新闻如下所列:\\n\\n[新闻标题]:北向资金昨日净买入22.64亿元,光伏设备增持超10亿元(名单)\\n[新闻内容]:北向资金净卖出昆仑万维(300418.SZ)、金山办公(688111.SH)、平安银行000001.SZ)、华友钴业(603799.SH)、天齐锂业(002466.SZ)居前,其中,昆仑万维被净卖出4.30亿元,金山办公被净卖出3.65亿元,平安银行被净卖出3.60亿元,华友钴业被净卖出2.76亿元,天齐锂业被净卖出2\\n\\n如下所列为000001近期的一些金融基本面信息,记录时间为2023-03-31:\\n\\n[金融基本面]:\\n\\n报告期: 2023-03-31\\n净利润: 146.02亿\\n净利润同比增长率: 13.63%\\n扣非净利润: 144.69亿\\n扣非净利润同比增长率: 12.40%\\n营业总收入: 450.98亿\\n营业总收入同比增长率: -2.40%\\n基本每股收益: 0.6500\\n每股净资产: 19.42\\n每股资本公积金: 4.16\\n每股未分配利润: 10.25\\n每股经营现金流: 5.62\\n销售净利率: 32.38%\\n净资产收益率: 3.39%\\n净资产收益率-摊薄: 3.27%\\n产权比率: 11.21\\n资产负债率: 91.81%\\n\\n基于在2023-04-23 00:00:00之前的所有信息,让我们首先分析000001的积极发展和潜在担忧。保持陈述的简洁,分别提出2-4个最重要的因素。大部分所提及的因素应该从公司的相关新闻中推断出来。那么让我们假设你对于下一周(2023-04-23 00:00:00至2023-04-30 00:00:00)的预测是上涨0-1%。提供一个总结分析来支持你的预测。预测结果需要从你最后的分析中推断出来,因此不作为你分析的基础因素。']" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "get_all_prompts(\"000001\")" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "你是一个经验丰富的股票市场分析师。你的任务是根据过去几周的相关新闻和基本财务状况,列出公司的积极发展和潜在担忧,然后对公司未来一周的股价走势提供分析和预测。你的回答格式应该如下:\n", + "\n", + "[积极发展]:\n", + "1. ...\n", + "\n", + "[潜在担忧]:\n", + "1. ...\n", + "\n", + "[预测和分析]:\n", + "...\n", + "\n" + ] + } + ], + "source": [ + "SYSTEM_PROMPT = \"你是一个经验丰富的股票市场分析师。你的任务是根据过去几周的相关新闻和基本财务状况,列出公司的积极发展和潜在担忧,然后对公司未来一周的股价走势提供分析和预测。\" \\\n", + " \"你的回答格式应该如下:\\n\\n[积极发展]:\\n1. ...\\n\\n[潜在担忧]:\\n1. ...\\n\\n[预测和分析]:\\n...\\n\"\n", + "print(SYSTEM_PROMPT)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "000001 : 2023-04-09 - 2023-04-16\n", + "000001 : 2023-04-16 - 2023-04-23\n", + "000001 : 2023-04-23 - 2023-04-30\n" + ] + } + ], + "source": [ + "pmt = get_all_prompts(\"000001\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from openai import OpenAI\n", + "client = OpenAI(api_key = '')\n", + "completion = client.chat.completions.create(\n", + " model = \"gpt-3.5-turbo\",\n", + " messages=[\n", + " {\"role\": \"system\", \"content\":SYSTEM_PROMPT},\n", + " {\"role\": \"user\", \"content\": pmt[1]}\n", + " ]\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "请求失败,状态码: 429\n", + "请求失败,body: {\"error\":{\"code\":\"insufficient_quota\",\"param\":null,\"type\":\"insufficient_quota\",\"message\":\"You exceeded your current quota, please check your plan and billing details.\"}}\n", + "请求失败,X-BC-Request-Id: cfcdb74d-9416-47e4-98d2-b6149fa1765f\n" + ] + } + ], + "source": [ + "import requests\n", + "import json\n", + "\n", + "def do_request():\n", + " url = \"https://api.baichuan-ai.com/v1/chat/completions\"\n", + " api_key = \"sk-7c765c13dddfc800953163c1b98b9304\"\n", + "\n", + " data = {\n", + " \"model\": \"Baichuan2-Turbo\",\n", + " \"messages\": [\n", + " {\n", + " \"role\": \"user\",\n", + " \"content\": \"世界第一高峰是\"\n", + " }\n", + " ],\n", + " \"stream\": True\n", + " }\n", + "\n", + " json_data = json.dumps(data)\n", + "\n", + " headers = {\n", + " \"Content-Type\": \"application/json\",\n", + " \"Authorization\": \"Bearer \" + api_key\n", + " }\n", + "\n", + " response = requests.post(url, data=json_data, headers=headers, timeout=60)\n", + "\n", + " if response.status_code == 200:\n", + " print(\"请求成功!\")\n", + " print(\"响应body:\", response.text)\n", + " print(\"请求成功,X-BC-Request-Id:\", response.headers.get(\"X-BC-Request-Id\"))\n", + " else:\n", + " print(\"请求失败,状态码:\", response.status_code)\n", + " print(\"请求失败,body:\", response.text)\n", + " print(\"请求失败,X-BC-Request-Id:\", response.headers.get(\"X-BC-Request-Id\"))\n", + "\n", + "if __name__ == \"__main__\":\n", + " do_request()\n", + "\n", + " " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "python310", + "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.10.13" + }, + "orig_nbformat": 4 + }, + "nbformat": 4, + "nbformat_minor": 2 +}