Skip to content

Commit 35b34d4

Browse files
committed
finished article
1 parent 06cb376 commit 35b34d4

File tree

4 files changed

+7
-52
lines changed

4 files changed

+7
-52
lines changed

content/posts/finance/stock_prediction/ARIMA/index.md

-25
Original file line numberDiff line numberDiff line change
@@ -218,31 +218,6 @@ plt.show()
218218

219219
ACF looks very similar to PCF for smaller lags. Hence, even in this case a value of 8 can be used as *q*.
220220

221-
### Grid Search
222-
223-
Here's a Python function to perform a grid search:
224-
225-
```python
226-
def grid_search_arima(ts, p_range, d_range, q_range):
227-
best_aic = float('inf')
228-
best_order = None
229-
for p in p_range:
230-
for d in d_range:
231-
for q in q_range:
232-
try:
233-
model = ARIMA(ts, order=(p, d, q))
234-
results = model.fit()
235-
if results.aic < best_aic:
236-
best_aic = results.aic
237-
best_order = (p, d, q)
238-
except:
239-
continue
240-
print(f'Best ARIMA order: {best_order}')
241-
return best_order
242-
243-
best_order = grid_search_arima(ts_diff, range(3), range(2), range(3))
244-
```
245-
246221
## 6. ARIMA model fitting
247222

248223
### Predict ARIMA model on all data

public/index.json

+1-1
Large diffs are not rendered by default.

public/posts/finance/stock_prediction/arima/index.html

+5-25
Original file line numberDiff line numberDiff line change
@@ -447,7 +447,7 @@
447447
<div class="author-profile ms-auto align-self-lg-center">
448448
<img class="rounded-circle" src='/images/author/profile_hu8a567cefac8c1a165d433ac0796ac418_3088978_120x120_fit_q75_box.jpg' alt="Author Image">
449449
<h5 class="author-name">Stefano Giannini</h5>
450-
<p class="text-muted">Friday, June 28, 2024 | 9 minutes</p>
450+
<p class="text-muted">Friday, June 28, 2024 | 8 minutes</p>
451451
</div>
452452

453453

@@ -648,27 +648,7 @@ <h3 id="finding-q-parameter-from-plots">Finding q parameter from plots</h3>
648648
</span></span><span style="display:flex;"><span>plt<span style="color:#f92672">.</span>show()
649649
</span></span></code></pre></div><p><img alt="png" src="/posts/finance/stock_prediction/arima/images/find_q.png"></p>
650650
<p>ACF looks very similar to PCF for smaller lags. Hence, even in this case a value of 8 can be used as <em>q</em>.</p>
651-
<h3 id="grid-search">Grid Search</h3>
652-
<p>Here&rsquo;s a Python function to perform a grid search:</p>
653-
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-python" data-lang="python"><span style="display:flex;"><span><span style="color:#66d9ef">def</span> <span style="color:#a6e22e">grid_search_arima</span>(ts, p_range, d_range, q_range):
654-
</span></span><span style="display:flex;"><span> best_aic <span style="color:#f92672">=</span> float(<span style="color:#e6db74">&#39;inf&#39;</span>)
655-
</span></span><span style="display:flex;"><span> best_order <span style="color:#f92672">=</span> <span style="color:#66d9ef">None</span>
656-
</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">for</span> p <span style="color:#f92672">in</span> p_range:
657-
</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">for</span> d <span style="color:#f92672">in</span> d_range:
658-
</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">for</span> q <span style="color:#f92672">in</span> q_range:
659-
</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">try</span>:
660-
</span></span><span style="display:flex;"><span> model <span style="color:#f92672">=</span> ARIMA(ts, order<span style="color:#f92672">=</span>(p, d, q))
661-
</span></span><span style="display:flex;"><span> results <span style="color:#f92672">=</span> model<span style="color:#f92672">.</span>fit()
662-
</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">if</span> results<span style="color:#f92672">.</span>aic <span style="color:#f92672">&lt;</span> best_aic:
663-
</span></span><span style="display:flex;"><span> best_aic <span style="color:#f92672">=</span> results<span style="color:#f92672">.</span>aic
664-
</span></span><span style="display:flex;"><span> best_order <span style="color:#f92672">=</span> (p, d, q)
665-
</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">except</span>:
666-
</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">continue</span>
667-
</span></span><span style="display:flex;"><span> print(<span style="color:#e6db74">f</span><span style="color:#e6db74">&#39;Best ARIMA order: </span><span style="color:#e6db74">{</span>best_order<span style="color:#e6db74">}</span><span style="color:#e6db74">&#39;</span>)
668-
</span></span><span style="display:flex;"><span> <span style="color:#66d9ef">return</span> best_order
669-
</span></span><span style="display:flex;"><span>
670-
</span></span><span style="display:flex;"><span>best_order <span style="color:#f92672">=</span> grid_search_arima(ts_diff, range(<span style="color:#ae81ff">3</span>), range(<span style="color:#ae81ff">2</span>), range(<span style="color:#ae81ff">3</span>))
671-
</span></span></code></pre></div><h2 id="6-arima-model-fitting">6. ARIMA model fitting</h2>
651+
<h2 id="6-arima-model-fitting">6. ARIMA model fitting</h2>
672652
<h3 id="predict-arima-model-on-all-data">Predict ARIMA model on all data</h3>
673653
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-python" data-lang="python"><span style="display:flex;"><span>model <span style="color:#f92672">=</span> ARIMA(df<span style="color:#f92672">.</span>Close, order<span style="color:#f92672">=</span>(<span style="color:#ae81ff">8</span>,<span style="color:#ae81ff">2</span>,<span style="color:#ae81ff">8</span>)) <span style="color:#75715e"># p,d,q</span>
674654
</span></span><span style="display:flex;"><span>results <span style="color:#f92672">=</span> model<span style="color:#f92672">.</span>fit()
@@ -744,7 +724,7 @@ <h3 id="train-test-split">Train/ Test split</h3>
744724
<p>&lsquo;corr&rsquo;: 0.4484875181364141,</p>
745725
<p>&lsquo;minmax&rsquo;: 0.07810488835602647}</p>
746726
</blockquote>
747-
<h3 id="grid-search-1">Grid Search</h3>
727+
<h3 id="grid-search">Grid Search</h3>
748728
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-python" data-lang="python"><span style="display:flex;"><span><span style="color:#66d9ef">def</span> <span style="color:#a6e22e">grid_search_arima</span>(train, test, p_range, d_range, q_range):
749729
</span></span><span style="display:flex;"><span> best_aic <span style="color:#f92672">=</span> float(<span style="color:#e6db74">&#39;inf&#39;</span>)
750730
</span></span><span style="display:flex;"><span> best_mape <span style="color:#f92672">=</span> float(<span style="color:#e6db74">&#39;inf&#39;</span>)
@@ -784,6 +764,7 @@ <h3 id="grid-search-1">Grid Search</h3>
784764
<p>temp best: (3, 2, 4) 0.07647187068962996</p>
785765
<p>Best ARIMA order based on grid search: (3, 2, 4)</p>
786766
</blockquote>
767+
<p>In g</p>
787768
<h2 id="7-limitations-and-considerations">7. Limitations and Considerations</h2>
788769
<p>While ARIMA models can be powerful for time series prediction, they have limitations:</p>
789770
<ol>
@@ -982,14 +963,13 @@ <h5 class="text-center ps-3">Table of Contents</h5>
982963
<li><a href="#finding-d-parameter-from-plots">Finding d parameter from plots</a></li>
983964
<li><a href="#finding-p-parameter-from-plots">Finding p parameter from plots</a></li>
984965
<li><a href="#finding-q-parameter-from-plots">Finding q parameter from plots</a></li>
985-
<li><a href="#grid-search">Grid Search</a></li>
986966
</ul>
987967
</li>
988968
<li><a href="#6-arima-model-fitting">6. ARIMA model fitting</a>
989969
<ul>
990970
<li><a href="#predict-arima-model-on-all-data">Predict ARIMA model on all data</a></li>
991971
<li><a href="#train-test-split">Train/ Test split</a></li>
992-
<li><a href="#grid-search-1">Grid Search</a></li>
972+
<li><a href="#grid-search">Grid Search</a></li>
993973
</ul>
994974
</li>
995975
<li><a href="#7-limitations-and-considerations">7. Limitations and Considerations</a></li>

public/posts/index.html

+1-1
Original file line numberDiff line numberDiff line change
@@ -460,7 +460,7 @@ <h5 class="card-title">Time Series Analysis and ARIMA Models for Stock Price Pre
460460
<div class="card-footer">
461461
<span class="float-start">
462462
Friday, June 28, 2024
463-
| 9 minutes </span>
463+
| 8 minutes </span>
464464
<a
465465
href="/posts/finance/stock_prediction/arima/"
466466
class="float-end btn btn-outline-info btn-sm">Read</a>

0 commit comments

Comments
 (0)