偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

量化分析預(yù)測股市?試試這個 Python 庫

開發(fā) 后端
本文將展示如何使用 Python 的第三方庫 Stocker 來進(jìn)行股票分析和預(yù)測。

[[431124]]

   Python中文社區(qū)(ID:python-china)

本文將展示如何使用 Python 的第三方庫 Stocker 來進(jìn)行股票分析和預(yù)測。

安裝第三方庫

安裝所需的庫后,我們要做的第一件事就是將 Stocker 類導(dǎo)入到我們的 Python 代碼中。我們可以通過在腳本目錄中啟動的 Jupyter Notebook 執(zhí)行此操作。 

  1. !pip install quandl  
  2. !pip install fbprophet  
  3. !pip install plotly  
  1. from stocker importStocker 

現(xiàn)在在 Python 代碼中有 Stocker 類,我們可以使用它來創(chuàng)建該類的實例。在 Python 中,類的實例稱為對象,創(chuàng)建對象的行為有時稱為實例化或構(gòu)造。為了創(chuàng)建 Stocker 對象,我們需要傳入有效股票代碼的名稱。 

  1. # MSFT Stocker Initialized. Data covers 1986-03-13 to 2018-01-16.  
  2. microsoft = Stocker('MSFT')  
  1. MSFT StockerInitialized. Data covers 1986-03-1300:00:00 to 2018-03-2700:00:00. 

現(xiàn)在,我們有一個包含 Stocker 類所有屬性的 microsoft 對象。Stocker 建立在 quandl WIKI 數(shù)據(jù)庫上,該數(shù)據(jù)庫使我們可以訪問 3000 多只美國股票以及多年的每日價格數(shù)據(jù)(完整列表)。對于此示例,我們將堅持使用 Microsoft 數(shù)據(jù)。因為微軟正在擁抱開源社區(qū)(包括 Python)。

Python 中的類由兩個主要部分組成:屬性和方法。無需贅述,屬性是與整個類或與類的特定實例(對象)相關(guān)聯(lián)的值或數(shù)據(jù)。方法是包含在類中的可以作用于該數(shù)據(jù)的函數(shù)。Stocker 對象的一個屬性是特定公司的股票數(shù)據(jù),當(dāng)我們構(gòu)造對象時,該屬性與該對象相關(guān)聯(lián)。我們可以訪問該屬性并將其分配給另一個變量進(jìn)行檢查: 

  1. # Stock is an attribute of the microsoft object  
  2. stock_history = microsoft.stock  
  3. stock_history.head() 

Python 類的好處是方法(或函數(shù))和它們作用的數(shù)據(jù)與同一個對象相關(guān)聯(lián)。我們可以使用 Stocker 對象的一個方法來繪制股票的整個歷史數(shù)據(jù)。 

  1. # A method (function) requires parentheses  
  2. microsoft.plot_stock()  
  1. MaximumAdj. Close96.77 on 2018-03-1200:00:00.  
  2. MinimumAdj. Close0.06 on 1986-03-2400:00:00.  
  3. CurrentAdj. Close89.47 on 2018-03-2700:00:00. 

繪制的默認(rèn)值是調(diào)整后的收盤價,它考慮了股票的分割(當(dāng)一只股票被分割成多只股票時,比如 2 只,每只新股票價值是原始價格的 1/2)。

這是我們可以從 Google 搜索中找到的一個非?;镜膱D,但是我們自己用幾行 Python 來完成它是令人滿意的! plot_stock 函數(shù)有許多可選參數(shù)。默認(rèn)情況下,此方法繪制整個日期范圍的調(diào)整后收盤價,但我們可以選擇范圍、要繪制的統(tǒng)計數(shù)據(jù)以及繪圖類型。例如,如果我們想將價格的每日變化與調(diào)整后的交易量(股票數(shù)量)進(jìn)行比較,我們可以在函數(shù)調(diào)用中指定這些。 

  1. microsoft.plot_stock(start_date = '2000-01-03',  end_date = '2018-01-16',  stats = ['Daily Change', 'Adj. Volume'],  plot_type='pct' 
  1. MaximumDailyChange2.08 on 2008-10-1300:00:00.  
  2. MinimumDailyChange= -3.34 on 2017-12-0400:00:00.  
  3. CurrentDailyChange= -5.47 on 2018-03-2700:00:00.  
  4. MaximumAdj. Volume591052200.00 on 2006-04-2800:00:00.  
  5. MinimumAdj. Volume7425503.00 on 2017-11-2400:00:00.  
  6. CurrentAdj. Volume53704562.00 on 2018-03-2700:00:00. 

注意,y 軸是相對于統(tǒng)計平均值的百分比變化。這個單位是必要的,因為每天的交易量本來就是股票,范圍在數(shù)億,而每天的價格變化通常是幾美元!通過轉(zhuǎn)換為百分比變化,我們可以以相似的比例查看兩個數(shù)據(jù)集。該圖顯示交易的股票數(shù)量與價格的每日變化之間沒有相關(guān)性。這是令人驚訝的,因為我們可能期望在價格變化較大的日子里交易更多股票,因為人們急于利用波動。然而,唯一真正的趨勢似乎是交易量隨著時間的推移而減少。2017 年 12 月 4 日的價格也大幅下降,我們可以嘗試將其與有關(guān) Microsoft 的新聞報道聯(lián)系起來。

使用 plot_stock,我們可以調(diào)查任何日期范圍內(nèi)數(shù)據(jù)中的任何數(shù)量,并尋找與現(xiàn)實世界事件的相關(guān)性。現(xiàn)在,我們將繼續(xù)討論 Stocker 中更有趣的部分之一:賺假錢!

讓我們暫時假設(shè)我們有信心在公司的首次公開募股 (IPO) 上投資 100 股微軟股票。我們現(xiàn)在有多富有? 

  1. microsoft.buy_and_hold(start_date='1986-03-13'end_date='2018-01-16'nshares=100 
  1. MSFT Total buy and hold profit from1986-03-13 to 2018-01-16for100 shares = $8829.11 

使用這些結(jié)果將使我們能夠及時調(diào)整我們的計劃,以最大限度地提高利潤。

加法模型

加法模型是分析和預(yù)測時間序列的強(qiáng)大工具,時間序列是最常見的現(xiàn)實世界數(shù)據(jù)類型之一。這個概念很簡單:將時間序列表示為不同時間尺度上的模式和整體趨勢的組合。我們知道微軟股票的長期趨勢是穩(wěn)步上漲,但也可能有每年或每天的模式,例如每周二上漲,這在經(jīng)濟(jì)上是有益的。由 Facebook 開發(fā)的 Prophet 是一個用于通過日常觀察(例如股票)分析時間序列的第三方庫。Stocker 在底層使用 Prophet 為我們完成所有建模工作,因此我們可以使用簡單的方法調(diào)用來創(chuàng)建和檢查模型。 

  1. model, model_data = microsoft.create_prophet_model() 

加法模型消除了數(shù)據(jù)中的噪聲,這就是模型線與觀測值不完全一致的原因。Prophet 模型還計算不確定性,這是建模的重要組成部分,因為在處理波動的現(xiàn)實過程時,我們永遠(yuǎn)無法確定我們的預(yù)測結(jié)果。我們也可以使用prophet模型對未來進(jìn)行預(yù)測,但現(xiàn)在我們更關(guān)心過去的數(shù)據(jù)。請注意,此方法調(diào)用返回了兩個對象,一個模型和一些我們分配給變量的數(shù)據(jù)。我們現(xiàn)在使用這些變量來繪制時間序列分量。 

  1. model.plot_components(model_data)  
  2. plt.show() 

總體趨勢是在過去三年中明顯增加。似乎還有一個明顯的年度模式,價格在 9 月和 10 月觸底,并在 11 月和 1 月達(dá)到峰值。隨著時間尺度的減小,數(shù)據(jù)變得更加嘈雜。在一個典型的月份中,信號多于噪音!如果我們認(rèn)為可能存在每周模式,我們可以通過更改 Stocker 對象的weekly_seasonality 屬性將其添加到先知模型中: 

  1. print(microsoft.weekly_seasonality)  
  2. microsoft.weekly_seasonality = True  
  3. print(microsoft.weekly_seasonality)  
  1. False  
  2. True 

weekly_seasonality 的默認(rèn)值為 False,但我們更改了該值以在我們的模型中包含每周模式。然后我們再次調(diào)用 create_prophet_model 并繪制結(jié)果組件。

我們可以忽略周末,因為價格只會在一周內(nèi)變化(實際上在下班后的期間價格變化很小,但不影響我們的分析)。不幸的是,沒有一周的趨勢可供我們使用,在我們繼續(xù)建模之前,我們將關(guān)閉每周季節(jié)性。這種行為是意料之中的:對于股票數(shù)據(jù),隨著時間尺度的減小,噪聲開始沖刷掉信號。從日常來看,股票的走勢本質(zhì)上是隨機(jī)的,只有縮小到年度范圍,我們才能看到趨勢。

變化點

變化點發(fā)生在時間序列從增加到減少或相反時(在更嚴(yán)格的意義上,它們位于時間序列速率變化最大的地方)。這些時間非常重要,因為了解股票何時會達(dá)到頂峰或即將起飛可能會帶來顯著的經(jīng)濟(jì)效益。確定變化點的原因可能讓我們預(yù)測股票價值的未來波動。Stocker 對象可以自動為我們找到 10 個最大的變化點。 

  1. microsoft.changepoint_date_analysis()  
  1. Changepoints sorted by slope rate of change (2nd derivative):  
  2. DateAdj. Close     delta  
  3. 4102016-09-0855.811396-1.378093  
  4. 3382016-05-2650.1134531.116720  
  5. 2172015-12-0252.572008-0.882359  
  6. 4582016-11-1557.5898190.603127  
  7. 482015-04-0237.6125900.442776 

變化點往往與股價的高峰和低谷一致。Prophet 只在前 80% 的數(shù)據(jù)中找到變化點,但盡管如此,這些結(jié)果還是很有用的,因為我們可以嘗試將它們與現(xiàn)實世界的事件相關(guān)聯(lián)。我們可以重復(fù)我們之前所做的并在這些日期前后手動搜索 Google 新聞,但我認(rèn)為如果Stocker 為我們這樣做會更好。您可能已經(jīng)看過 Google 搜索趨勢工具,該工具可讓您查看任何搜索詞在 Google 搜索中隨時間的流行程度。Stocker 可以自動檢索我們指定的任何搜索詞的數(shù)據(jù),并在原始數(shù)據(jù)上繪制結(jié)果。為了找到并繪制搜索詞的頻率,我們修改了之前的方法調(diào)用。 

  1. microsoft.changepoint_date_analysis(search = 'Microsoft profit' 
  1. TopRelatedQueries:   
  2.                   query  value  
  3. 0  microsoft non profit    100  
  4. 1      microsoft office     60  
  5. 2          apple profit     40  
  6. 3         microsoft 36540  
  7. 4                 apple     35  
  8. RisingRelatedQueries:   
  9.            query  value 
  10. 0    apple stock    170  
  11. 1  microsoft 365130  
  12. 2   apple profit     50 

除了繪制相對搜索頻率的圖形之外,Stocker 還顯示了圖表日期范圍內(nèi)相關(guān)度最高的查詢和上升最快的查詢。在圖中,y 軸通過將值除以其最大值而在 0 和 1 之間歸一化,使我們能夠比較具有不同尺度的兩個變量。從圖中可以看出,搜索“Microsoft profit”與微軟股價之間似乎沒有相關(guān)性。

如果我們發(fā)現(xiàn)了相關(guān)性,那么仍然會有因果關(guān)系的問題。我們不知道是搜索還是新聞導(dǎo)致了價格的變化,還是價格的變化導(dǎo)致了搜索??赡軙业揭恍┯杏玫男畔?,但也有很多機(jī)會相關(guān)性。隨意嘗試一些不同的搜索詞語,看看是否能找到任何有趣的趨勢! 

  1. microsoft.changepoint_date_analysis(search = 'Microsoft Office' 
  1. TopRelatedQueries:   
  2.                        query  value  
  3. 0  microsoft office download    100  
  4. 1      microsoft office 201090  
  5. 2                office 201085  
  6. 3      microsoft office 201375  
  7. 4                office 201370  
  8. RisingRelatedQueries:   
  9.                             query  value  
  10. 0       microsoft office 2016 key  80300  
  11. 1                     office 201673200  
  12. 2  download microsoft office 201672150  
  13. 3       microsoft office 2016 mac  69350  
  14. 4           microsoft office 201667650 

看起來對Microsoft Office 的搜索量下降會導(dǎo)致股價上漲。也許有人應(yīng)該讓微軟知道。

預(yù)測

我們只探索了 Stocker 功能的前半部分。后半部分用于預(yù)測,或預(yù)測未來的股票價格。如下圖所示: 

  1. model, future = microsoft.create_prophet_model(days=180 
  1. PredictedPrice on 2018-07-21= $102.40 

 

責(zé)任編輯:龐桂玉 來源: Python中文社區(qū)
相關(guān)推薦

2021-05-06 09:57:18

Python 開發(fā)編程語言

2023-03-08 08:42:55

MySQLcost量化

2023-12-10 13:58:17

2020-01-31 16:08:00

?機(jī)器學(xué)習(xí)數(shù)據(jù)技術(shù)

2020-08-28 07:00:00

機(jī)器學(xué)習(xí)預(yù)測股市人工智能

2018-06-26 15:58:06

數(shù)據(jù)庫MySQL索引優(yōu)化

2017-07-06 15:44:33

2025-07-03 01:45:00

2024-07-31 11:48:07

2010-07-06 14:40:32

RationalJazz

2020-07-29 10:55:07

數(shù)據(jù)庫工具技術(shù)

2023-12-30 08:16:34

Django權(quán)限控制

2021-08-05 10:46:59

GitHub代碼開發(fā)者

2021-08-26 07:29:56

用戶需求層次分析法決策

2021-06-24 16:18:03

Cube.js數(shù)據(jù)分析開源

2022-11-26 21:34:08

Python可視化世界杯

2022-02-09 07:44:30

Go源碼工具

2022-01-26 07:18:57

工具GoGo 項目

2025-09-25 15:34:10

2010-01-05 13:32:36

.NET Framew
點贊
收藏

51CTO技術(shù)棧公眾號