當前位置:首頁 » 行情解析 » 基於r的時間序列分析股票
擴展閱讀
a股更改股票代碼 2024-11-25 14:45:58

基於r的時間序列分析股票

發布時間: 2023-02-10 07:46:08

㈠ 時間序列在股市有哪些應用

時間序列分析在股票市場中的應用
摘要
在現代金融浪潮的推動下,越來越多的人加入到股市,進行投資行為,以期得到豐厚的回報,這極大促進了股票市場的繁榮。而在這種投資行為的背後,越來越多的投資者逐漸意識到股市預測的重要性。
所謂股票預測是指:根據股票現在行情的發展情況地對未來股市發展方向以及漲跌程度的預測行為。這種預測行為只是基於假定的因素為既定的前提條件為基礎的。但是在股票市場中,行情的變化與國家的宏觀經濟發展、法律法規的制定、公司的運營、股民的信心等等都有關聯,因此所謂的預測難於准確預計。
時間序列分析是經濟預測領域研究的重要工具之一,它描述歷史數據隨時間變化的規律,並用於預測經濟數據。在股票市場上,時間序列預測法常用於對股票價格趨勢進行預測,為投資者和股票市場管理管理方提供決策依據。

㈡ 應用計量經濟學時間序列分析在股票預測上有多大的作用

作用沒有想像中的大,你可以用股票的滯後變數來進行回歸分析,滯後2~3期就夠了,不過數據必須具體點,最好細分到每季度、每月的上證指數,還有時間上怎麼也要十年左右吧!

我以前在論文附錄中做過分析,數據都是自己按季度整理的,挺麻煩的呢,如果需要的話就發給你~

還有就是,我覺得寫關於股票的預測方面的實際用處並不是很大,畢竟股票的影響因素太多,單單的憑藉以前的走勢而預期太不好了。。我自己也炒股票,就像那些macd、kdj之類的指標根本就起不到太大的作用,如果那個能預期的話,股市豈不就成了提款機了?現在你做的這個就像是那些指標一樣,要知道,股市是活的,人是活的,而指標確實死的!說這么多的意思就是股市不是能簡單預測的,你做的那個用處不大。。

如果你想做的話,建議換個題目,我當時的寫的是對弗里德曼的貨幣需求理論在中國市場的分析。你可以寫寫貨幣供應量對通貨膨脹的時滯性,分析下在我國市場的滯後期大概是多少~數據在國家統計局和中國人民銀行都可以找到的,樣本空間一定要足夠大,在對滯後變數分析時候主要考慮各自的T檢驗是否通過,一般從通過之後大概就是那個的滯後期!這個比較直接反而有些許用處~
要是能分析出國家的一般性政策對實體市場的影響就更好了,更有用了~

呵呵,以上只是自己的建議~有什麼其他的問題就給我留言吧~

㈢ 金融時間序列分析用R語言畫簡單收益率和對數收益率的ACF圖!

acf(int[,2], lag.max = 15,type = "correlation", plot = TRUE,main='int monthly

acf(int.l[,2], lag.max = 15,type = "correlation", plot = TRUE,main='int monthly
log return')

Box.test(int[,2], lag = 5, type = "Ljung-Box")
Box.test(int[,2], lag = 10, type = "Ljung-Box")
Box.test(int.l[,2], lag = 5, type = "Ljung-Box")
Box.test(int.l[,2], lag = 10, type = "Ljung-Box")

運行結果有以下錯誤,怎麼辦?

> int <- read.table("d-intc7208.txt", head=T)
錯誤於file(file, "rt") : 無法打開鏈結
此外: 警告信息:
In file(file, "rt") :
無法打開文件'd-intc7208.txt': No such file or directory

+ acf(int.l[,2], lag.max = 15,type = "correlation", plot = TRUE,main='int monthly
錯誤: 意外的符號 in:
"
acf(int.l[,2], lag.max = 15,type = "correlation", plot = TRUE,main='int"
> log return')
錯誤: 意外的符號 in "log return"

㈣ 如何用R 語言 建立 股票價格的時間序列

在下想用R語言對股票價格進行時間序列分析。
問題出在第一步,如何將股票價格轉換為時間序列。
我想用的語句是 pri <- ts (data, start=(), frequency= )
但是我不知道frequency 項該如何填?
因為股票的交易日是一周五天的。 那麼這個frequency 該如何設置呢?
我知道通常frequency= 12 為月度數據,frequency= 4 為季度數據,frequency= 1 為年度數據 但日數據怎麼寫我就不知道了

初學R語言,還望各位大俠多多幫助。

㈤ 股票價格的隨機遊走的含義

「隨機遊走」(random walk)是指基於過去的表現,無法預測將來的發展步驟和方向。應用到股市上,則意味著股票價格的短期走勢不可預知,意味著投資咨詢服務、收益預測和復雜的圖表模型全無用處。在華爾街上,「隨機遊走」這個名詞是個諱語,是學術界杜撰的一個粗詞,是對專業預言者的一種侮辱攻擊。若將這一術語的邏輯內涵推向極致,便意味著一隻戴上眼罩的猴子,隨意向報紙的金融版面擲一些飛鏢,選出的投資組合就可與投資專家精心挑選出的一樣出色。

㈥ 90-預測分析-R語言實現-時間序列1

時間序列(time series)是隨機變數Y 1 、Y 2 、……Y t 的一個序列,它是由等距的時間點序列索引的。
一個時間序列的均值函數就是該時間序列在某個時間索引t上的期望值。一般情況下,某個時間序列在某個時間索引t 1 的均值並不等於該時間序列在另一個不同的時間索引t 2 的均值。
自協方差函數及自相關函數是衡量構成時間序列的隨機變數在不同時間點上相互線性依賴性的兩個重要函數。自相關函數通常縮略為ACF函數。ACF函數是對稱的,但是無單位,其絕對值被數值1約束,即當兩個時間序列索引之間的自相關度是1或-1,就代表兩者之間存在完全線性依賴或相關,而當相關度是0時,就代表完全線性無關。
平穩性:實質描述的是一個時間序列的概率表現不會隨著時間的流逝而改變。常用的平穩性的性質有嚴格平穩和弱平穩兩個版本。tseries包的adf.test()函數可以檢驗時間序列的平穩性,返回的p值小於0.05則表示是平穩的。
白雜訊是一個平穩過程,因為它的均值和方差都是常數。
隨機漫步的均值是常數(不帶漂移的隨機漫步),但它的方差是隨著時間的變化而不同的,因此它是不平穩的。
自回歸模型(Autoregressive models, AR)來源於要讓一個簡單模型根據過去有限窗口時間里的最近值來解釋某個時間序列當前值的想法。
自回歸條件異方差模型:ARIMA模型的關鍵前提條件是,雖然序列本身是非平穩的,但是我們可以運用某個變換來獲得一個平穩的序列。像這樣為非平穩時間序列構建模型的方法之一是作出一個假設,假設該模型非平穩的原因是該模型的方差會以一種可預見的方式隨時間變化,這樣就可以把方差隨時間的變化建模為一個自回歸過程,這種模型被稱為自回歸條件異方差模型(ARCH)。加入了移動平均方差成分的ARCH模型稱為廣義自回歸條件異方差模型(GARCH)。

任務:預測強烈地震
數據集:2000-2008年期間在希臘發生的強度大於里氏4.0級地震的時間序列。

不存在缺失值。
將經度和緯度之外的變數轉換為數值型。

從圖上可以看出,數據在30次左右波動,並且不存在總體向上的趨勢。

通過嘗試多個不同的組合來找到最優的階數參數p,d,q,確定最優的准則是使用參數建模,能使模型的AIC值最小。

定義一個函數,它會針對某個階數參數擬合出一個ARIMA模型,並返回模型的AIC值。如果某組參數導致模型無法收斂,就會產生錯誤,並且無法返回AIC,這時需要人為設置其AIC為無限大(InF)。

調用函數,選取最合適的模型。

然後找出最優的階數參數:

得到最合適的模型為ARIMA(1, 1, 1)。再次使用最優參數訓練模型。

使用forecast包預測未來值。

帶顏色的條帶是預測的置信區間,藍色線表示均值,結果表示在後續的10個月里,地震的數量會有小幅增加。
檢查自相關函數:

ACF繪圖:虛線顯示了一個95%的置信區間,特定延遲對應的ACF函數值如果處於該區間內,就不會被認為具有統計顯著性(大於0)。這個ACF輪廓表明,針對本數據集,簡單的AR(1)過程可能是一種合適的擬合方式。
PACF為偏自相關函數,是將時間延遲K的PACF定義為在消除了小於K的延遲中存在的任何相關性影響的情況下所產生的相關性。

㈦ 時間序列分析方法

時間序列是指一組在連續時間上測得的數據,其在數學上的定義是一組向量x(t), t=0,1,2,3,...,其中t表示數據所在的時間點,x(t)是一組按時間順序(測得)排列的隨機變數。包含單個變數的時間序列稱為單變數時間序列,而包含多個變數的時間序列則稱為多變數。

時間序列在很多方面多有涉及到,如天氣預報,每天每個小時的氣溫,股票走勢等等,在商業方面有諸多應用,如:

下面我們將通過一個航班數據來說明如何使用已有的工具來進行時間序列數據預測。常用來處理時間序列的包有三個:

對於基於AR、MA的方法一般需要數據預處理,因此本文分為三部分:

通過簡單的初步處理以及可視化可以幫助我們有效快速的了解數據的分布(以及時間序列的趨勢)。

觀察數據的頻率直方圖以及密度分布圖以洞察數據結構,從下圖可以看出:

使用 statsmodels 對該時間序列進行分解,以了解該時間序列數據的各個部分,每個部分都代表著一種模式類別。借用 statsmodels 序列分解我們可以看到數據的主要趨勢成分、季節成分和殘差成分,這與我們上面的推測相符合。

如果一個時間序列的均值和方差隨著時間變化保持穩定,則可以說這個時間序列是穩定的。

大多數時間序列模型都是在平穩序列的前提下進行建模的。造成這種情況的主要原因是序列可以有許多種(復雜的)非平穩的方式,而平穩性只有一種,更加的易於分析,易於建模。

在直覺上,如果一段時間序列在某一段時間序列內具有特定的行為,那麼將來很可能具有相同的行為。譬如已連續觀察一個星期都是六點出太陽,那麼可以推測明天也是六點出太陽,誤差非常小。

而且,與非平穩序列相比,平穩序列相關的理論更加成熟且易於實現。

一般可以通過以下幾種方式來檢驗序列的平穩性:

如果時間序列是平穩性的,那麼在ACF/PACF中觀測點數據與之前數據點的相關性會急劇下降。

下圖中的圓錐形陰影是置信區間,區間外的數據點說明其與觀測數據本身具有強烈的相關性,這種相關性並非來自於統計波動。

PACF在計算X(t)和X(t-h)的相關性的時候,挖空在(t-h,t)上所有數據點對X(t)的影響,反應的是X(t)和X(t-h)之間真實的相關性(直接相關性)。

從下圖可以看出,數據點的相關性並沒有急劇下降,因此該序列是非平穩的。

如果序列是平穩的,那麼其滑動均值/方差會隨著時間的變化保持穩定。

但是從下圖我們可以看到,隨著時間的推移,均值呈現明顯的上升趨勢,而方差也呈現出波動式上升的趨勢,因此該序列是非平穩的。

一般來講p值小於0.05我們便認為其是顯著性的,可以拒絕零假設。但是這里的p值為0.99明顯是非顯著性的,因此接受零假設,該序列是非平穩的。

從上面的平穩性檢驗我們可以知道該時間序列為非平穩序列。此外,通過上面1.3部分的序列分解我們也可以看到,該序列可分解為3部分:

我們可以使用數據轉換來對那些較大的數據施加更大的懲罰,如取對數、開平方根、立方根、差分等,以達到序列平穩的目的。

滑動平均後數據失去了其原來的特點(波動式上升),這樣損失的信息過多,肯定是無法作為後續模型的輸入的。

差分是常用的將非平穩序列轉換平穩序列的方法。ARIMA中的 'I' 便是指的差分,因此ARIMA是可以對非平穩序列進行處理的,其相當於先將非平穩序列通過差分轉換為平穩序列再來使用ARMA進行建模。

一般差分是用某時刻數值減去上一時刻數值來得到新序列。但這里有一點區別,我們是使用當前時刻數值來減去其對應時刻的滑動均值。

我們來看看剛剛差分的結果怎麼樣。

讓我們稍微總結下我們剛剛的步驟:

通過上面的3步我們成功的將一個非平穩序列轉換成了一個平穩序列。上面使用的是最簡單的滑動均值,下面我們試試指數滑動平均怎麼樣。

上面是最常用的指數滑動平均的定義,但是pandas實現的指數滑動平均好像與這個有一點區別,詳細區別還得去查pandas文檔。

指數滑動均值的效果看起來也很差。我們使用差分+指數滑動平均再來試試吧。

在上面我們通過 取log+(指數)滑動平均+差分 已經成功將非平穩序列轉換為了平穩序列。

下面我們看看,轉換後的平穩序列的各個成分是什麼樣的。不過這里我們使用的是最簡單的差分,當前時刻的值等於原始序列當前時刻的值減去原始序列中上一時刻的值,即: x'(t) = x(t) - x(t-1)。

看起來挺不錯,是個平穩序列的樣子。不過,還是檢驗一下吧。

可以看到,趨勢(Trend)部分已基本被去除,但是季節性(seasonal)部分還是很明顯,而ARIMA是無法對含有seasonal的序列進行建模分析的。

在一開始我們提到了3個包均可以對時間序列進行建模。

為了簡便,這里 pmdarima 和 statsmodels.tsa 直接使用最好的建模方法即SARIMA,該方法在ARIMA的基礎上添加了額外功能,可以擬合seasonal部分以及額外添加的數據。

在使用ARIMA(Autoregressive Integrated Moving Average)模型前,我們先簡單了解下這個模型。這個模型其實可以包括三部分,分別對應著三個參數(p, d, q):

因此ARIMA模型就是將AR和MA模型結合起來然後加上差分,克服了不能處理非平穩序列的問題。但是,需要注意的是,其仍然無法對seasonal進行擬合。

下面開始使用ARIMA來擬合數據。

(1) 先分訓練集和驗證集。需要注意的是這里使用的原始數據來進行建模而非轉換後的數據。

(2)ARIMA一階差分建模並預測

(3)對差分結果進行還原

先手動選擇幾組參數,然後參數搜索找到最佳值。需要注意的是,為了避免過擬合,這里的階數一般不太建議取太大。

可視化看看結果怎麼樣吧。

(6)最後,我們還能對擬合好的模型進行診斷看看結果怎麼樣。

我們主要關心的是確保模型的殘差(resial)部分互不相關,並且呈零均值正態分布。若季節性ARIMA(SARIMA)不滿足這些屬性,則表明它可以進一步改善。模型診斷根據下面的幾個方面來判斷殘差是否符合正態分布:

同樣的,為了方便,我們這里使用 pmdarima 中一個可以自動搜索最佳參數的方法 auto_arima 來進行建模。

一般來說,在實際生活和生產環節中,除了季節項,趨勢項,剩餘項之外,通常還有節假日的效應。所以,在prophet演算法裡面,作者同時考慮了以上四項,即:

上式中,

更多詳細Prophet演算法內容可以參考 Facebook 時間序列預測演算法 Prophet 的研究 。

Prophet演算法就是通過擬合這幾項,然後把它們累加起來得到時間序列的預測值。

Prophet提供了直觀且易於調整的參數:

Prophet對輸入數據有要求:

關於 Prophet 的使用例子可以參考 Prophet example notebooks

下面使用 Prophet 來進行處理數據。

參考:
Facebook 時間序列預測演算法 Prophet 的研究
Prophet example notebooks
auto_arima documentation for selecting best model
數據分析技術:時間序列分析的AR/MA/ARMA/ARIMA模型體系
https://github.com/advaitsave/Introction-to-Time-Series-forecasting-Python
時間序列分析
My First Time Series Comp (Added Prophet)
Prophet官方文檔: https://facebookincubator.github.io

㈧ R語言畫時間序列圖

用xlim或者ylim命令。比如:
# Specify axis options within plot()
plot(x, y, main="title", sub="subtitle",
xlab="X-axis label", ylab="y-axix label",
xlim=c(xmin, xmax), ylim=c(ymin, ymax))