Python金融數(shù)據(jù)分析與應(yīng)用課件 第8章 滬深300指數(shù)預(yù)測(cè)_第1頁(yè)
Python金融數(shù)據(jù)分析與應(yīng)用課件 第8章 滬深300指數(shù)預(yù)測(cè)_第2頁(yè)
Python金融數(shù)據(jù)分析與應(yīng)用課件 第8章 滬深300指數(shù)預(yù)測(cè)_第3頁(yè)
Python金融數(shù)據(jù)分析與應(yīng)用課件 第8章 滬深300指數(shù)預(yù)測(cè)_第4頁(yè)
Python金融數(shù)據(jù)分析與應(yīng)用課件 第8章 滬深300指數(shù)預(yù)測(cè)_第5頁(yè)
已閱讀5頁(yè),還剩24頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第八章滬深300指數(shù)預(yù)測(cè)Python金融數(shù)據(jù)分析與應(yīng)用(微課版)目錄CONTENTS滬深300指數(shù)概述8.1數(shù)據(jù)說(shuō)明與預(yù)處理8.2滬深300指數(shù)分析8.3滬深300指數(shù)走勢(shì)預(yù)測(cè)8.4案例報(bào)告——基于數(shù)據(jù)挖掘的滬深300指數(shù)走勢(shì)預(yù)測(cè)8.58.1滬深300指數(shù)概述8.1滬深300指數(shù)概述滬深300指數(shù)是我國(guó)股票市場(chǎng)的重要指標(biāo)之一,由上海和深圳證券市場(chǎng)中市值高、流動(dòng)性好的300只股票組成,反映了我國(guó)A股市場(chǎng)的整體表現(xiàn)。該指數(shù)具有較強(qiáng)的市場(chǎng)代表性和良好的投資跟蹤價(jià)值,被廣泛應(yīng)用于業(yè)績(jī)?cè)u(píng)價(jià)、投資研究和金融產(chǎn)品創(chuàng)新等領(lǐng)域。隨著我國(guó)資本市場(chǎng)的進(jìn)一步開(kāi)放,滬深300指數(shù)在國(guó)際金融市場(chǎng)中的影響力也在不斷提升。1代表性強(qiáng):覆蓋了滬深兩市中市值高、流動(dòng)性好的上市公司,能夠較好地反映市場(chǎng)整體趨勢(shì)。234行業(yè)覆蓋廣泛:覆蓋了多個(gè)行業(yè),包括金融、消費(fèi)、工業(yè)、能源等,有助于投資者構(gòu)建多元化的投資組合。市場(chǎng)影響力大:作為我國(guó)股市的重要基準(zhǔn)指數(shù),滬深300指數(shù)對(duì)市場(chǎng)情緒和投資者行為有著顯著的影響。投資跟蹤工具多樣化:基于滬深300指數(shù)的交易所交易基金(ExchangeTradedFund,ETF)、指數(shù)基金、期貨和期權(quán)等金融產(chǎn)品豐富,為投資者提供了多樣化的投資和風(fēng)險(xiǎn)管理工具。8.2數(shù)據(jù)說(shuō)明與預(yù)處理8.2數(shù)據(jù)說(shuō)明與預(yù)處理使用pandas讀取Excel文件“滬深300指數(shù)歷史行情數(shù)據(jù).xlsx”,并展示數(shù)據(jù)結(jié)構(gòu),將“日期”字段設(shè)置為DataFrame的索引,以便后續(xù)研究指數(shù)走勢(shì),示例代碼如下:8.2.1數(shù)據(jù)說(shuō)明importpandasaspddata=pd.read_excel('滬深300指數(shù)歷史行情數(shù)據(jù).xlsx')#將“日期”列轉(zhuǎn)換為日期時(shí)間類型,并設(shè)置“日期”為索引data['日期']=pd.to_datetime(data['日期'])data.set_index('日期',inplace=True)data.tail()#展示最后5行數(shù)據(jù)?8.2?數(shù)據(jù)說(shuō)明與預(yù)處理8.2.2?數(shù)據(jù)預(yù)處理???在進(jìn)行數(shù)據(jù)分析之前,必須對(duì)原始數(shù)據(jù)進(jìn)行預(yù)處理,以確保數(shù)據(jù)質(zhì)量并滿足后續(xù)分析需求,基本步驟如下。步驟1?數(shù)據(jù)清洗。檢查并處理重復(fù)值、缺失值和異常值步驟2?數(shù)據(jù)指標(biāo)計(jì)算與選取?;谠紨?shù)據(jù)構(gòu)建新的特征或變量以構(gòu)建預(yù)測(cè)模型?print('數(shù)據(jù)集中是否存在重復(fù)值:\n',any(data.duplicated()))#重復(fù)值檢查print('數(shù)據(jù)集中是否存在缺失值:\n',any(data.isnull()))#缺失值檢查data.dropna(inplace=True)#刪除缺失值?#構(gòu)建目標(biāo)變量Y:收盤價(jià)的漲跌data['漲跌']=data['漲跌幅'].apply(lambdax:1ifx>0else0)#選擇特征和目標(biāo)變量features=data[['開(kāi)盤','收盤','最高','最低','成交量','成交額','日收益率','SMA20','RSI12','MACD線','MACD信號(hào)線','MACD柱狀線','K線','D線','J線']]target=data['漲跌']8.3滬深300指數(shù)分析8.3滬深300指數(shù)分析滬深300指數(shù)的描述性分析是對(duì)數(shù)據(jù)集的基本特征進(jìn)行總結(jié)和概括。這包括計(jì)算交易數(shù)據(jù)的基本統(tǒng)計(jì)量,如均值、中位數(shù)、標(biāo)準(zhǔn)差、最小值和最大值等。通過(guò)這些統(tǒng)計(jì)量,可以初步了解滬深300指數(shù)的整體表現(xiàn)。8.3.1滬深300指數(shù)描述性分析#新建特征和目標(biāo)變量的數(shù)據(jù)副本用于可視化data_features_target=features.copy()#新建特征的數(shù)據(jù)副本進(jìn)行分析data_features_target['漲跌']=target#在新建副本上增加目標(biāo)變量Y的數(shù)據(jù)列#描述性統(tǒng)計(jì)data_features_target.describe().T8.3滬深300指數(shù)分析8.3.2滬深300指數(shù)可視化分析cou=data_features_target['漲跌'].value_counts()plt.bar(cou.index,cou.values,color=['lightgray','green'])plt.xlabel('漲跌情況')plt.ylabel('頻數(shù)')plt.xticks([0,1],rotation=0)#注意:若需在條形圖上方顯示頻數(shù),需使用plt.text()函數(shù)plt.show()(1)目標(biāo)變量Y(漲跌)可視化分析首先觀察目標(biāo)變量的分布情況,以評(píng)估數(shù)據(jù)樣本分布的平衡性。8.3滬深300指數(shù)分析8.3.2滬深300指數(shù)可視化分析#分組箱線圖importseabornassnsplt.figure(figsize=(14,10))fori,columninenumerate(features.columns,1):plt.subplot(3,5,i)sns.boxplot(x='漲跌',y=column,data=data_features_target)

ifi<=4:

plt.ylabel(f'{column}價(jià)(元)’)

ifi==5:

plt.ylabel(f'{column}(股)’)

ifi==6:

plt.ylabel(f'{column}(元)')plt.grid(False)#去除網(wǎng)格線plt.tight_layout()plt.show()(2)目標(biāo)變量Y(漲跌)與各特征變量可視化分析由于目標(biāo)變量屬于定性變量,其他各特征變量均為定量變量,因此可繪制分組箱線圖,用于觀察各特征變量與目標(biāo)變量的數(shù)據(jù)關(guān)系。8.3滬深300指數(shù)分析8.3.2滬深300指數(shù)可視化分析#繪制開(kāi)盤、收盤與SMA20的時(shí)間序列圖plt.rcParams['font.sans-serif']='SimHei'#設(shè)置中文顯示plt.figure(figsize=(10,5))plt.plot(data_features_target.index,data_features_target[‘開(kāi)盤’],label=‘開(kāi)盤價(jià)(元)')plt.plot(data_features_target.index,data_features_target[‘收盤’],label=‘收盤價(jià)(元)',linestyle=':')plt.plot(data_features_target.index,data_features_target['SMA20'],label='SMA20',linestyle='--')plt.xlabel('年')plt.ylabel(‘收盤價(jià)(元)')plt.legend()plt.show()(3)各特征變量可視化分析步驟1了解長(zhǎng)期趨勢(shì)。8.3滬深300指數(shù)分析8.3.2滬深300指數(shù)可視化分析#經(jīng)典風(fēng)格K線圖importmplfinanceasmpf#重命名列以符合mplfinance的要求data_candle=data_features_target.copy()m=(data_candle.index>=‘2023-05-01’)&(data_candle.index<‘2024-05-24’)#截取部分?jǐn)?shù)據(jù)以顯示價(jià)格變動(dòng)data_candle=data_candle[m]data_candle.rename(columns={'開(kāi)盤':'Open','最高':'High','最低':'Low','收盤':'Close','成交量':'Volume'},inplace=True)#創(chuàng)建一個(gè)包含必要列的新DataFramedata_candlestick=data_candle[['Open','High','Low','Close','Volume']]#繪制經(jīng)典風(fēng)格K線圖mpf.plot(data_candlestick,type='candle',mav=(5,20),volume=True,style='classic',ylabel='Price',ylabel_lower='Volume',datetime_format='%Y-%m',tight_layout=True,show_nontrading=False)(3)各特征變量可視化分析步驟2觀察短期波動(dòng)。8.3滬深300指數(shù)分析8.3.2滬深300指數(shù)可視化分析#繪制日收益率時(shí)間序列圖plt.figure(figsize=(10,5))plt.plot(data_features_target.index,data_features_target['日收益率'],label='日收益率')plt.xlabel('年')plt.ylabel('日收益率')plt.show()(3)各特征變量可視化分析步驟3了解市場(chǎng)動(dòng)態(tài)。繪制日收益率時(shí)間序列圖。#繪制RSI12指標(biāo)圖plt.figure(figsize=(10,5))plt.plot(data_features_target.index,data_features_target['RSI12'],label='RSI12')plt.axhline(y=30,color='grey',linestyle='--')plt.axhline(y=70,color='grey',linestyle='--')plt.xlabel('年')plt.ylabel('RSI12值')plt.show()步驟4通過(guò)技術(shù)指標(biāo)輔助判斷市場(chǎng)趨勢(shì)和股票的潛在買賣時(shí)機(jī),分別繪制RSI12指標(biāo)圖、MACD指標(biāo)圖以及KDJ指標(biāo)圖。8.4滬深300指數(shù)走勢(shì)預(yù)測(cè)8.4滬深300指數(shù)走勢(shì)預(yù)測(cè)模型構(gòu)建前需進(jìn)行訓(xùn)練集和測(cè)試集的劃分,本案例選擇預(yù)測(cè)一個(gè)完整年度數(shù)據(jù),因此將2019年到2022年全年數(shù)據(jù)作為訓(xùn)練集、2023年全年數(shù)據(jù)作為測(cè)試集。8.4.1數(shù)據(jù)準(zhǔn)備train=data_features_target[(data_features_target.index>'2019-01-01')&(data_features_target.index<='2022-12-31')]test=data_features_target[(data_features_target.index>='2023-01-01')&(data_features_target.index<='2023-12-31')]print(len(train),len(test))8.4滬深300指數(shù)走勢(shì)預(yù)測(cè)8.4.1數(shù)據(jù)準(zhǔn)備運(yùn)行代碼可知,訓(xùn)練集有939條樣本,測(cè)試集有242條樣本。接下來(lái),分別定義訓(xùn)練集與測(cè)試集的特征變量與目標(biāo)變量,并在訓(xùn)練集上對(duì)數(shù)據(jù)進(jìn)行標(biāo)準(zhǔn)化處理,然后使用訓(xùn)練集擬合對(duì)象對(duì)測(cè)試集特征進(jìn)行標(biāo)準(zhǔn)化,這樣處理后的數(shù)據(jù)集可以更好地用于機(jī)器學(xué)習(xí)模型的訓(xùn)練和預(yù)測(cè),示例代碼如下:fromsklearn.preprocessingimportStandardScaler#數(shù)據(jù)標(biāo)準(zhǔn)化X=train.drop(columns=['漲跌'])scaler=StandardScaler()X_train=scaler.fit_transform(X)y_train=train['漲跌']X_test=test.drop(columns=['漲跌'])X_test_scaled=scaler.transform(X_test)#測(cè)試集y_test=test['漲跌']?8.4滬深300指數(shù)走勢(shì)預(yù)測(cè)8.4.2??模型訓(xùn)練及性能評(píng)價(jià)????通過(guò)sklearn庫(kù)構(gòu)建3個(gè)分類模型,并輸出模型的準(zhǔn)確率、分類報(bào)告和混淆矩陣,方便進(jìn)行模型評(píng)價(jià)與對(duì)比,以下僅展示隨機(jī)森林的示例代碼:?fromsklearn.linear_modelimportLogisticRegressionfromsklearn.treeimportDecisionTreeClassifierfromsklearn.ensembleimportRandomForestClassifierfromsklearn.metricsimportaccuracy_score,classification_report,confusion_matrix,roc_curve,auc#隨機(jī)森林forest_clf=RandomForestClassifier(random_state=1)#固定隨機(jī)種子forest_clf.fit(X_train,y_train)forest_clf_pred=forest_clf.predict(X_test)forest_clf_prob=forest_clf.predict_proba(X_test)[:,1]forest_clf_acc=accuracy_score(y_test,forest_clf_pred)forest_clf_cm=confusion_matrix(y_test,forest_clf_pred)forest_clf_fpr,forest_clf_tpr,_=roc_curve(y_test,forest_clf_prob)forest_clf_auc=auc(forest_clf_fpr,forest_clf_tpr)print('隨機(jī)森林準(zhǔn)確率:',forest_clf_auc)print('隨機(jī)森林分類報(bào)告:\n',classification_report(y_test,forest_clf_pred))print('隨機(jī)森林混淆矩陣:\n',forest_clf_cm)?同時(shí),繪制ROC曲線和AUC值,便于進(jìn)一步解釋模型效果,示例代碼如下:?#繪制ROC曲線plt.figure(figsize=(6,5))plt.rcParams['font.sans-serif']='SimHei'#設(shè)置中文顯示plt.plot(forest_clf_fpr,forest_clf_tpr,label=f'隨機(jī)森林(AUC={forest_clf_auc:.2f})',linestyle='--')plt.plot([0,1],[0,1],linestyle='--')plt.xlim([0.0,1.0])plt.ylim([0.0,1.05])plt.xlabel('FPR')plt.ylabel('TPR')plt.title('ROC曲線')plt.legend(loc="lowerright")plt.show()?代碼運(yùn)行結(jié)果可提供模型對(duì)比的分析基礎(chǔ)。8.4滬深300指數(shù)走勢(shì)預(yù)測(cè)8.4.3模型預(yù)測(cè)結(jié)果通過(guò)模型性能評(píng)價(jià)和綜合對(duì)比,選擇性能最佳的模型隨機(jī)森林進(jìn)行滬深300指數(shù)走勢(shì)預(yù)測(cè),示例代碼如下:y_pred=forest_clf.predict(X_test)results=pd.DataFrame({'Actual':y_test,'Predicted':y_pred})#組合實(shí)際值和預(yù)測(cè)值results.sort_values('日期',ascending=False,inplace=True)#按日期倒序排列results.head()#輸出前5行結(jié)果8.5案例報(bào)告——基于數(shù)據(jù)挖掘的滬深300指數(shù)走勢(shì)預(yù)測(cè)8.5案例報(bào)告——基于數(shù)據(jù)挖掘的滬深300指數(shù)走勢(shì)預(yù)測(cè)滬深300指數(shù)作為我國(guó)A股市場(chǎng)的核心指數(shù)之一,對(duì)于投資者、金融機(jī)構(gòu)以及監(jiān)管層都具有重要的意義。深入了解滬深300指數(shù)的特點(diǎn)和應(yīng)用,預(yù)測(cè)其走勢(shì),對(duì)于把握市場(chǎng)動(dòng)態(tài)、優(yōu)化投資組合和制定市場(chǎng)策略具有重要作用。8.5.1背景介紹本案例以滬深300指數(shù)為研究對(duì)象,通過(guò)第三方數(shù)據(jù)接口獲取2019年1月2日到2024年5月23日(約5年)的每日歷史行情數(shù)據(jù),然后對(duì)數(shù)據(jù)進(jìn)行篩選和整合,共有1306條數(shù)據(jù)。在數(shù)據(jù)分析前需進(jìn)行數(shù)據(jù)預(yù)處理。8.5.2數(shù)據(jù)說(shuō)明(1)數(shù)據(jù)清洗經(jīng)檢測(cè),數(shù)據(jù)不存在重復(fù)值,但存在一定比例的缺失值,因此對(duì)缺失值進(jìn)行刪除后,獲得1273條數(shù)據(jù)。8.5案例報(bào)告——基于數(shù)據(jù)挖掘的滬深300指數(shù)走勢(shì)預(yù)測(cè)8.5.2數(shù)據(jù)說(shuō)明(2)數(shù)據(jù)指標(biāo)計(jì)算與選取變量變量類型變量說(shuō)明因變量漲跌定性變量1代表上漲,0代表下跌自變量日期日期時(shí)間類型交易日,本案例為2019年1月2日到2024年5月23日的滬深300指數(shù)歷史行情數(shù)據(jù),已設(shè)置為索引開(kāi)盤定量變量開(kāi)盤價(jià),單位:元收盤定量變量收盤價(jià),單位:元最高定量變量最高價(jià),單位:元最低定量變量最低價(jià),單位:元成交量定量變量單位:股成交額定量變量單位:元日收益率定量變量反映投資在一天內(nèi)的收益變化情況SMA20定量變量本數(shù)據(jù)為20日簡(jiǎn)單移動(dòng)平均線RSI12定量變量本數(shù)據(jù)為12日相對(duì)強(qiáng)弱指標(biāo)MACD線定量變量本數(shù)據(jù)為12日和26日的平滑異同移動(dòng)平均線MACD信號(hào)線定量變量MACD線的移動(dòng)平均線MACD柱狀線定量變量MACD線與信號(hào)線之間的差異K線定量變量當(dāng)前價(jià)格相對(duì)于一定時(shí)間段內(nèi)的價(jià)格范圍的位置D線定量變量隨機(jī)值K的3周期移動(dòng)平均線J線定量變量通過(guò)計(jì)算3倍的K線值減去2倍的D線值得到滬深300指數(shù)分析變量及其說(shuō)明8.5案例報(bào)告——基于數(shù)據(jù)挖掘的滬深300指數(shù)走勢(shì)預(yù)測(cè)8.5.3滬深300指數(shù)分析(1)滬深300指數(shù)描述性分析因變量及各特征變量計(jì)數(shù)均為1273,其中開(kāi)盤價(jià)、收盤價(jià)、最高價(jià)、最低價(jià)的均值分別為4210.93元、4212.68元、4240.82元、4180.70元。(2)滬深300指數(shù)可視化分析①目標(biāo)變量Y(漲跌):通過(guò)繪制目標(biāo)變量Y(漲跌)的柱形圖,可評(píng)估數(shù)據(jù)樣本的頻數(shù)統(tǒng)計(jì)和分布是否均衡,如圖8-3所示。漲、跌的頻數(shù)相差不大,分布較為均衡,其中跌的頻數(shù)略微高于漲,原因預(yù)計(jì)為含有部分持平的頻數(shù)。

目標(biāo)變量Y(漲跌)柱形圖8.5案例報(bào)告——基于數(shù)據(jù)挖掘的滬深300指數(shù)走勢(shì)預(yù)測(cè)8.5.3滬深300指數(shù)分析(2)滬深300指數(shù)可視化分析②目標(biāo)變量Y(漲跌)與各特征變量:

決策變量Y(漲跌)與各特征變量的分組箱線圖8.5案例報(bào)告——基于數(shù)據(jù)挖掘的滬深300指數(shù)走勢(shì)預(yù)測(cè)8.5.3滬深300指數(shù)分析(2)滬深300指數(shù)可視化分析③典型特征變量:開(kāi)盤價(jià)、收盤價(jià)、SMA20長(zhǎng)期趨勢(shì)。價(jià)格變動(dòng)及成交量短期波動(dòng)8.5案例報(bào)告——基于數(shù)據(jù)挖掘的滬深300指數(shù)走勢(shì)預(yù)測(cè)8.5.3滬深300指數(shù)分析(2)滬深300指數(shù)可視化分析日收益率市場(chǎng)波動(dòng):通過(guò)繪制日收益率時(shí)間序列圖,可進(jìn)一步評(píng)估長(zhǎng)期市場(chǎng)收益動(dòng)態(tài)。技術(shù)指標(biāo):通過(guò)RSI12、MACD及KDJ指標(biāo),可進(jìn)一步評(píng)估市場(chǎng)風(fēng)險(xiǎn)點(diǎn)及買入賣出節(jié)點(diǎn)。觀察RSI12指標(biāo)圖可發(fā)現(xiàn),2019年2月、2020年7月和2023年1月有部分時(shí)間RSI12指標(biāo)超過(guò)70,表明滬深300指數(shù)在這幾個(gè)時(shí)間段可能處于超買狀態(tài),而在2020年2月、2022年3和4月有部分時(shí)間RSI12指標(biāo)低于30,可能處于超賣狀態(tài)。日收益率時(shí)間序列圖

技術(shù)指標(biāo)圖從MACD指標(biāo)圖可知,在2019年5月、2020年4月和2022年9月等部分時(shí)間點(diǎn),MACD線穿越零軸,即從負(fù)值變?yōu)檎祷驈恼底優(yōu)樨?fù)值,表示該時(shí)間段內(nèi)市場(chǎng)動(dòng)力發(fā)生重大變化,并且2020年7月的MACD

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論