<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Publishing DTD v1.4 20241031//EN" "JATS-journalpublishing1-4.dtd">
<article xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink" article-type="research-article" dtd-version="1.4" xml:lang="en">
  <front>
    <journal-meta>
      <journal-id journal-id-type="publisher-id">jcc</journal-id>
      <journal-title-group>
        <journal-title>Journal of Computer and Communications</journal-title>
      </journal-title-group>
      <issn pub-type="epub">2327-5227</issn>
      <issn pub-type="ppub">2327-5219</issn>
      <publisher>
        <publisher-name>Scientific Research Publishing</publisher-name>
      </publisher>
    </journal-meta>
    <article-meta>
      <article-id pub-id-type="doi">10.4236/jcc.2025.1312009</article-id>
      <article-id pub-id-type="publisher-id">jcc-148384</article-id>
      <article-categories>
        <subj-group>
          <subject>Article</subject>
        </subj-group>
        <subj-group>
          <subject>Computer Science</subject>
          <subject>Communications</subject>
        </subj-group>
      </article-categories>
      <title-group>
        <article-title>TriFusion Stacking (TFS) for Stock Prediction: Integrating Sentiment, Technical, and Fundamental Analysis</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <name name-style="western">
            <surname>Tang</surname>
            <given-names>Shawn</given-names>
          </name>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
      </contrib-group>
      <aff id="aff1"><label>1</label> Independent Researcher, Pennsylvania, USA </aff>
      <author-notes>
        <fn fn-type="conflict" id="fn-conflict">
          <p>The author declares no conflicts of interest regarding the publication of this paper.</p>
        </fn>
      </author-notes>
      <pub-date pub-type="epub">
        <day>04</day>
        <month>12</month>
        <year>2025</year>
      </pub-date>
      <pub-date pub-type="collection">
        <month>12</month>
        <year>2025</year>
      </pub-date>
      <volume>13</volume>
      <issue>12</issue>
      <fpage>158</fpage>
      <lpage>168</lpage>
      <history>
        <date date-type="received">
          <day>20</day>
          <month>11</month>
          <year>2025</year>
        </date>
        <date date-type="accepted">
          <day>23</day>
          <month>12</month>
          <year>2025</year>
        </date>
        <date date-type="published">
          <day>26</day>
          <month>12</month>
          <year>2025</year>
        </date>
      </history>
      <permissions>
        <copyright-statement>© 2025 by the authors and Scientific Research Publishing Inc.</copyright-statement>
        <copyright-year>2025</copyright-year>
        <license license-type="open-access">
          <license-p> This article is an open access article distributed under the terms and conditions of the Creative Commons Attribution (CC BY) license ( <ext-link ext-link-type="uri" xlink:href="https://creativecommons.org/licenses/by/4.0/">https://creativecommons.org/licenses/by/4.0/</ext-link> ). </license-p>
        </license>
      </permissions>
      <self-uri content-type="doi" xlink:href="https://doi.org/10.4236/jcc.2025.1312009">https://doi.org/10.4236/jcc.2025.1312009</self-uri>
      <abstract>
        <p>This paper proposes a hybrid AI framework that integrates technical indicators, fundamental data, and financial news sentiment into a stacked ensemble learning model. The ensemble combines 14 algorithms, including decision tree, gradient boosting machine (GBM), gated recurrent unit (GRU), k-nearest neighbor (KNN), lasso regression, linear regression, long short-term memory (LSTM), multi-layer perceptron (MLP), random forest, ridge regression, recurrent neural network (RNN), spiking neural network (SNN), support vector machine (SVM), and temporal convolutional network (TCN). Each prediction is fused through an MLP to generate final outputs. This stacking approach yielded a maximum return of $4061 from an initial investment of $1000. Our results show that simple linear models generally outperform deep learning models in stock predictions, and single stocks are more predictable than other volatile assets or index stocks.</p>
      </abstract>
      <kwd-group kwd-group-type="author-generated" xml:lang="en">
        <kwd>Stock Price Prediction</kwd>
        <kwd>Fusion Model</kwd>
        <kwd>Stacking</kwd>
        <kwd>Ensemble Methods</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec1">
      <title>1. Introduction</title>
      <p>The formal analysis and forecasting of stock prices using rigorous mathematical models has surfaced since the last century. Traditionally, stock prediction utilized statistical methods such as stochastic calculus, Brownian motion, pricing models (e.g., Black-Scholes model, binomial options pricing model), and time series analysis. These methods analyze historical price data to identify trends or hidden patterns within the market. Despite their utility, traditional methods often fail to capture the non-linear relationships in stock markets. One such reason is that all these models require making simplistic assumptions, such as constant volatility and perfect information within historical price data, which is generally not true in the real world. </p>
      <p>Machine learning, on the other hand, is more flexible and adapts to the given data set. Artificial intelligence (AI) techniques do not require overly simplistic assumptions and can take in any data, such as news sentiment information and any other relevant information, in addition to historical price data. Furthermore, artificial intelligence models have been experimentally proven to be more accurate than traditional statistical approaches [<xref ref-type="bibr" rid="B1">1</xref>]. Hence, the use of machine learning models in stock prediction has surged in popularity. </p>
      <p>Linear models are one of the most common AI techniques applied in stock prediction. Linear regression models have demonstrated strong success for stock price prediction [<xref ref-type="bibr" rid="B2">2</xref>]. Other linear models, including support vector machine (SVC) models [<xref ref-type="bibr" rid="B3">3</xref>], Least Absolute Shrinkage and Selection Operator (LASSO) models [<xref ref-type="bibr" rid="B4">4</xref>][<xref ref-type="bibr" rid="B5">5</xref>], Ridge regression models [<xref ref-type="bibr" rid="B6">6</xref>], and gradient boosting machines [<xref ref-type="bibr" rid="B7">7</xref>], have been shown to surpass most traditional statistical methods in forecasting stock prices. In addition, decision tree models [<xref ref-type="bibr" rid="B8">8</xref>] and clustering methods [<xref ref-type="bibr" rid="B9">9</xref>] have produced results comparable to those of linear models. Extended models based on decision trees and clustering, such as the random forest model [<xref ref-type="bibr" rid="B10">10</xref>] and the K-nearest neighbor model [<xref ref-type="bibr" rid="B11">11</xref>], have shown even more potential in predicting stocks.</p>
      <p>With the recent advancements in neural networks, the Long Short-Term Memory (LSTM) network has become one of the most popular models for stock prediction. Other types of neural networks have also gained popularity in the game of stock prediction, such as multi-layer perceptron (MLP) [<xref ref-type="bibr" rid="B12">12</xref>], convolution neural networks [<xref ref-type="bibr" rid="B13">13</xref>], recurrent neural networks (RNN) [<xref ref-type="bibr" rid="B14">14</xref>], artificial neural networks (ANN), and temporal convolutional networks (TCN) [<xref ref-type="bibr" rid="B15">15</xref>]. These models have shown similar results or even better results than simple linear models and decision trees. </p>
      <p>The model proposed in this paper also utilizes stacked generalization, commonly known as stacking (<xref ref-type="fig" rid="fig1">Figure 1</xref>). Stacking is an ensemble modeling technique that effectively combines multiple base models to enhance predictive performance. Introduced in Wolpert (1992), stacking [<xref ref-type="bibr" rid="B16">16</xref>] involves training a meta-model that leverages the predicted outputs from these base models to generate a final prediction. This method has gained popularity for its ability to integrate the strengths of various models, allowing for more robust and accurate predictions across different applications.</p>
      <p>Many ensemble methods (algorithms that combine multiple models) combine the power of numerous different algorithms, such as Weng <italic>et al.</italic> (2018) [<xref ref-type="bibr" rid="B17">17</xref>], Nti <italic>et al.</italic> (2020) [<xref ref-type="bibr" rid="B18">18</xref>], and Li and Pan (2021) [<xref ref-type="bibr" rid="B19">19</xref>]. Additionally, ensemble methods include other types of input data, such as financial news sentiment and other stock prices, such as news sentiment analysis in Halder (2022) [<xref ref-type="bibr" rid="B20">20</xref>], emotional factors in Zhang <italic>et al.</italic> (2024) [<xref ref-type="bibr" rid="B21">21</xref>], and gold prices. </p>
      <p>These studies show the evolution of machine learning models in stock prediction, from linear models to ensemble models combining LSTMs and CNNs. This paper continues this development by proposing an ensemble model combining linear models and deep neural networks that take in sentiment analysis scores, fundamental analysis data, and technical indicators.</p>
      <fig id="fig1">
        <label>Figure 1</label>
        <graphic xlink:href="https://html.scirp.org/file/1733390-rId13.jpeg?20251226045714" />
      </fig>
      <p><bold>Figure 1.</bold> Flow of stacked generalization (<italic>i.e.</italic> stacking).</p>
    </sec>
    <sec id="sec2">
      <title>2. Materials and Methods</title>
      <p>The proposed ensemble model contains 3 main parts: The input data integrating historical price data, financial analysis methods, and sentiment analysis scores, the hybrid model containing 14 different deep-learning algorithms, and an evaluation process.</p>
      <sec id="sec2dot1">
        <title>2.1. Preparing and Preprocessing the Dataset</title>
        <fig id="fig2">
          <label>Figure 2</label>
          <graphic xlink:href="https://html.scirp.org/file/1733390-rId14.jpeg?20251226045714" />
        </fig>
        <p><bold>Figure 2.</bold> Process of splitting the dataset.</p>
        <p>The data is divided into three distinct sets: training, validation, and test sets in 60 30 10 splits (<xref ref-type="fig" rid="fig2">Figure 2</xref>). The training set is used to fit the model, allowing it to learn from the data. The validation set, separate from the training data, is employed during the model development process to fine-tune hyperparameters and monitor for overfitting, ensuring that the model generalizes well beyond the data it has been trained on. Finally, the test set, completely isolated from both training and validation, provides an unbiased evaluation of the model’s performance on unseen data, simulating real-world applications. This structured approach minimizes the risk of overfitting, enhances generalization, and allows for more reliable and accurate model performance assessment.</p>
      </sec>
      <sec id="sec2dot2">
        <title>2.2. Fundamental and Technical Analysis Data</title>
        <p>The historical price data comes from the Yahoo Finance stock library. The data recorded includes “High”, “Low”, “Open”, “Close”, “Volume”, “Dividends”, and “Stock Split”. The data starts from the earliest recorded point and ends on August 31, 2024. </p>
        <p>There were 21 technical indicators used. As shown in <bold>Table 1</bold>, they include:</p>
        <p>Table 1. Technical indicators used.</p>
        <table-wrap id="tbl1">
          <label>Table 1</label>
          <table>
            <tbody>
              <tr>
                <td>Technical Indicator</td>
                <td>Formula</td>
              </tr>
              <tr>
                <td>Exponential Moving Average (EMA)</td>
                <td>
                  <inline-formula>
                    <mml:math display="inline">
                      <mml:mrow>
                        <mml:msub>
                          <mml:mrow>
                            <mml:mtext>EMA</mml:mtext>
                          </mml:mrow>
                          <mml:mi>t</mml:mi>
                        </mml:msub>
                        <mml:mo>=</mml:mo>
                        <mml:mfrac>
                          <mml:mn>2</mml:mn>
                          <mml:mrow>
                            <mml:mn>15</mml:mn>
                          </mml:mrow>
                        </mml:mfrac>
                        <mml:mo>×</mml:mo>
                        <mml:msub>
                          <mml:mrow>
                            <mml:mtext>Close</mml:mtext>
                          </mml:mrow>
                          <mml:mi>t</mml:mi>
                        </mml:msub>
                        <mml:mo>+</mml:mo>
                        <mml:mfrac>
                          <mml:mrow>
                            <mml:mn>13</mml:mn>
                          </mml:mrow>
                          <mml:mrow>
                            <mml:mn>15</mml:mn>
                          </mml:mrow>
                        </mml:mfrac>
                        <mml:mo>×</mml:mo>
                        <mml:msub>
                          <mml:mrow>
                            <mml:mtext>EMA</mml:mtext>
                          </mml:mrow>
                          <mml:mrow>
                            <mml:mi>t</mml:mi>
                            <mml:mo>−</mml:mo>
                            <mml:mn>1</mml:mn>
                          </mml:mrow>
                        </mml:msub>
                        <mml:mo>−</mml:mo>
                        <mml:mn>1</mml:mn>
                      </mml:mrow>
                    </mml:math>
                  </inline-formula>
                </td>
              </tr>
              <tr>
                <td>Moving Average Convergence Divergence (MACD)</td>
                <td>
                  <inline-formula>
                    <mml:math display="inline">
                      <mml:mrow>
                        <mml:mtext>MACD</mml:mtext>
                        <mml:mo>=</mml:mo>
                        <mml:msub>
                          <mml:mrow>
                            <mml:mtext>EMA</mml:mtext>
                          </mml:mrow>
                          <mml:mrow>
                            <mml:mn>12</mml:mn>
                          </mml:mrow>
                        </mml:msub>
                        <mml:mo>−</mml:mo>
                        <mml:msub>
                          <mml:mrow>
                            <mml:mtext>EMA</mml:mtext>
                          </mml:mrow>
                          <mml:mrow>
                            <mml:mn>26</mml:mn>
                          </mml:mrow>
                        </mml:msub>
                      </mml:mrow>
                    </mml:math>
                  </inline-formula>
                </td>
              </tr>
              <tr>
                <td>Relative Strength Index (RSI)</td>
                <td>
                  <inline-formula>
                    <mml:math>
                      <mml:mrow>
                        <mml:mtext>RSI</mml:mtext>
                        <mml:mo>=</mml:mo>
                        <mml:mn>100</mml:mn>
                        <mml:mo>−</mml:mo>
                        <mml:mfrac>
                          <mml:mrow>
                            <mml:mn>100</mml:mn>
                          </mml:mrow>
                          <mml:mrow>
                            <mml:mn>1</mml:mn>
                            <mml:mo>+</mml:mo>
                            <mml:mfrac>
                              <mml:mrow>
                                <mml:mtext>Avg Gain</mml:mtext>
                              </mml:mrow>
                              <mml:mrow>
                                <mml:mtext>Avg Loss</mml:mtext>
                              </mml:mrow>
                            </mml:mfrac>
                          </mml:mrow>
                        </mml:mfrac>
                      </mml:mrow>
                    </mml:math>
                  </inline-formula>
                </td>
              </tr>
              <tr>
                <td>Stochastic Oscillator (SO)</td>
                <td>
                  <inline-formula>
                    <mml:math>
                      <mml:mrow>
                        <mml:mtext>SO</mml:mtext>
                        <mml:mo>=</mml:mo>
                        <mml:mfrac>
                          <mml:mrow>
                            <mml:mtext>Current Close</mml:mtext>
                            <mml:mo>−</mml:mo>
                            <mml:mtext>Lowest Low</mml:mtext>
                          </mml:mrow>
                          <mml:mrow>
                            <mml:mtext>Highest High</mml:mtext>
                            <mml:mo>−</mml:mo>
                            <mml:mtext>Lowest Low</mml:mtext>
                          </mml:mrow>
                        </mml:mfrac>
                        <mml:mo>×</mml:mo>
                        <mml:mn>100</mml:mn>
                      </mml:mrow>
                    </mml:math>
                  </inline-formula>
                </td>
              </tr>
              <tr>
                <td>Awesome Oscillator (AO)</td>
                <td>
                  <inline-formula>
                    <mml:math display="inline">
                      <mml:mrow>
                        <mml:mtext>AO</mml:mtext>
                        <mml:mo>=</mml:mo>
                        <mml:msub>
                          <mml:mrow>
                            <mml:mtext>SMA</mml:mtext>
                          </mml:mrow>
                          <mml:mn>5</mml:mn>
                        </mml:msub>
                        <mml:mo>−</mml:mo>
                        <mml:msub>
                          <mml:mrow>
                            <mml:mtext>SMA</mml:mtext>
                          </mml:mrow>
                          <mml:mrow>
                            <mml:mn>34</mml:mn>
                          </mml:mrow>
                        </mml:msub>
                      </mml:mrow>
                    </mml:math>
                  </inline-formula>
                </td>
              </tr>
              <tr>
                <td>Percentage Price Oscillator (PPO)</td>
                <td>
                  <inline-formula>
                    <mml:math>
                      <mml:mrow>
                        <mml:mtext>PPO</mml:mtext>
                        <mml:mo>=</mml:mo>
                        <mml:mfrac>
                          <mml:mrow>
                            <mml:mn>12</mml:mn>
                            <mml:mtext>-period EMA</mml:mtext>
                            <mml:mo>−</mml:mo>
                            <mml:mn>26</mml:mn>
                            <mml:mtext>-period EMA</mml:mtext>
                          </mml:mrow>
                          <mml:mrow>
                            <mml:mn>26</mml:mn>
                            <mml:mtext>-period EMA</mml:mtext>
                          </mml:mrow>
                        </mml:mfrac>
                        <mml:mo>×</mml:mo>
                        <mml:mn>100</mml:mn>
                      </mml:mrow>
                    </mml:math>
                  </inline-formula>
                </td>
              </tr>
              <tr>
                <td>Price Volume Oscillator (PVO)</td>
                <td>
                  <inline-formula>
                    <mml:math>
                      <mml:mrow>
                        <mml:mtext>PVO</mml:mtext>
                        <mml:mo>=</mml:mo>
                        <mml:mfrac>
                          <mml:mrow>
                            <mml:msub>
                              <mml:mrow>
                                <mml:mtext>EMA</mml:mtext>
                              </mml:mrow>
                              <mml:mrow>
                                <mml:mn>12</mml:mn>
                              </mml:mrow>
                            </mml:msub>
                            <mml:mtext>
                               
                            </mml:mtext>
                            <mml:mtext>of</mml:mtext>
                            <mml:mtext>
                               
                            </mml:mtext>
                            <mml:mtext>volume</mml:mtext>
                            <mml:mo>−</mml:mo>
                            <mml:msub>
                              <mml:mrow>
                                <mml:mtext>EMA</mml:mtext>
                              </mml:mrow>
                              <mml:mrow>
                                <mml:mn>26</mml:mn>
                              </mml:mrow>
                            </mml:msub>
                            <mml:mtext>
                               
                            </mml:mtext>
                            <mml:mtext>of</mml:mtext>
                            <mml:mtext>
                               
                            </mml:mtext>
                            <mml:mtext>volume</mml:mtext>
                          </mml:mrow>
                          <mml:mrow>
                            <mml:msub>
                              <mml:mrow>
                                <mml:mtext>EMA</mml:mtext>
                              </mml:mrow>
                              <mml:mrow>
                                <mml:mn>26</mml:mn>
                              </mml:mrow>
                            </mml:msub>
                            <mml:mtext>
                               
                            </mml:mtext>
                            <mml:mtext>of</mml:mtext>
                            <mml:mtext>
                               
                            </mml:mtext>
                            <mml:mtext>volume</mml:mtext>
                          </mml:mrow>
                        </mml:mfrac>
                        <mml:mo>×</mml:mo>
                        <mml:mn>100</mml:mn>
                      </mml:mrow>
                    </mml:math>
                  </inline-formula>
                </td>
              </tr>
              <tr>
                <td>Accumulation/Distribution Line (ADL)</td>
                <td>
                  <inline-formula>
                    <mml:math>
                      <mml:mrow>
                        <mml:mtext>ADL</mml:mtext>
                        <mml:mo>=</mml:mo>
                        <mml:mfrac>
                          <mml:mrow>
                            <mml:mn>2</mml:mn>
                            <mml:mo>×</mml:mo>
                            <mml:mtext>Close</mml:mtext>
                            <mml:mo>−</mml:mo>
                            <mml:mtext>Low</mml:mtext>
                            <mml:mo>−</mml:mo>
                            <mml:mtext>High</mml:mtext>
                          </mml:mrow>
                          <mml:mrow>
                            <mml:mtext>High</mml:mtext>
                            <mml:mo>−</mml:mo>
                            <mml:mtext>Low</mml:mtext>
                          </mml:mrow>
                        </mml:mfrac>
                        <mml:mo>×</mml:mo>
                        <mml:mtext>Volume</mml:mtext>
                        <mml:mo>+</mml:mo>
                        <mml:msub>
                          <mml:mrow>
                            <mml:mtext>ADL</mml:mtext>
                          </mml:mrow>
                          <mml:mrow>
                            <mml:mi>t</mml:mi>
                            <mml:mo>−</mml:mo>
                            <mml:mn>1</mml:mn>
                          </mml:mrow>
                        </mml:msub>
                      </mml:mrow>
                    </mml:math>
                  </inline-formula>
                </td>
              </tr>
              <tr>
                <td>Boiling Bands (BB)</td>
                <td>
                  <inline-formula>
                    <mml:math display="inline">
                      <mml:mrow>
                        <mml:mtext>BB</mml:mtext>
                        <mml:mo>=</mml:mo>
                        <mml:msub>
                          <mml:mrow>
                            <mml:mtext>SMA</mml:mtext>
                          </mml:mrow>
                          <mml:mrow>
                            <mml:mn>20</mml:mn>
                          </mml:mrow>
                        </mml:msub>
                        <mml:mo>−</mml:mo>
                        <mml:mn>20</mml:mn>
                        <mml:mtext>-day</mml:mtext>
                        <mml:mtext>
                           
                        </mml:mtext>
                        <mml:mtext>SD</mml:mtext>
                        <mml:mtext>
                           
                        </mml:mtext>
                        <mml:mtext>of</mml:mtext>
                        <mml:mtext>
                           
                        </mml:mtext>
                        <mml:mtext>price</mml:mtext>
                        <mml:mo>×</mml:mo>
                        <mml:mn>2</mml:mn>
                      </mml:mrow>
                    </mml:math>
                  </inline-formula>
                </td>
              </tr>
              <tr>
                <td>Donchian Channel (DC)</td>
                <td>
                  <inline-formula>
                    <mml:math display="inline">
                      <mml:mrow>
                        <mml:mtext>DC</mml:mtext>
                        <mml:mo>=</mml:mo>
                        <mml:mrow>
                          <mml:mo>(</mml:mo>
                          <mml:mrow>
                            <mml:mn>20</mml:mn>
                            <mml:mo>−</mml:mo>
                            <mml:mtext>dayhighest</mml:mtext>
                            <mml:mo>+</mml:mo>
                            <mml:mn>20</mml:mn>
                            <mml:mo>−</mml:mo>
                            <mml:mtext>daylowest</mml:mtext>
                          </mml:mrow>
                          <mml:mo>)</mml:mo>
                        </mml:mrow>
                        <mml:mo>÷</mml:mo>
                        <mml:mn>2</mml:mn>
                      </mml:mrow>
                    </mml:math>
                  </inline-formula>
                </td>
              </tr>
              <tr>
                <td>Ulcer Index (UI)</td>
                <td>
                  <inline-formula>
                    <mml:math>
                      <mml:mrow>
                        <mml:mtext>UI</mml:mtext>
                        <mml:mo>=</mml:mo>
                        <mml:msqrt>
                          <mml:mrow>
                            <mml:mfrac>
                              <mml:mn>1</mml:mn>
                              <mml:mrow>
                                <mml:mn>14</mml:mn>
                              </mml:mrow>
                            </mml:mfrac>
                            <mml:mstyle displaystyle="true">
                              <mml:msubsup>
                                <mml:mo>∑</mml:mo>
                                <mml:mrow>
                                  <mml:mi>i</mml:mi>
                                  <mml:mo>=</mml:mo>
                                  <mml:mn>1</mml:mn>
                                </mml:mrow>
                                <mml:mrow>
                                  <mml:mn>14</mml:mn>
                                </mml:mrow>
                              </mml:msubsup>
                              <mml:mrow>
                                <mml:msup>
                                  <mml:mrow>
                                    <mml:mtext>PD</mml:mtext>
                                  </mml:mrow>
                                  <mml:mn>2</mml:mn>
                                </mml:msup>
                              </mml:mrow>
                            </mml:mstyle>
                          </mml:mrow>
                        </mml:msqrt>
                      </mml:mrow>
                    </mml:math>
                  </inline-formula>
                  , where
                  <inline-formula>
                    <mml:math display="inline">
                      <mml:mrow>
                        <mml:mtext>PD</mml:mtext>
                        <mml:mo>=</mml:mo>
                        <mml:mrow>
                          <mml:mo>(</mml:mo>
                          <mml:mrow>
                            <mml:msub>
                              <mml:mrow>
                                <mml:mtext>Close</mml:mtext>
                              </mml:mrow>
                              <mml:mi>i</mml:mi>
                            </mml:msub>
                            <mml:mo>−</mml:mo>
                            <mml:mn>14</mml:mn>
                            <mml:mo>−</mml:mo>
                            <mml:mtext>period max close</mml:mtext>
                          </mml:mrow>
                          <mml:mo>)</mml:mo>
                        </mml:mrow>
                        <mml:mo>÷</mml:mo>
                        <mml:mn>14</mml:mn>
                        <mml:mo>−</mml:mo>
                        <mml:mtext>period max close</mml:mtext>
                      </mml:mrow>
                    </mml:math>
                  </inline-formula>
                </td>
              </tr>
              <tr>
                <td>Average Directional Index (ADI)</td>
                <td>
                  <inline-formula>
                    <mml:math display="inline">
                      <mml:mrow>
                        <mml:mtext>ADI</mml:mtext>
                        <mml:mo>=</mml:mo>
                        <mml:mrow>
                          <mml:mo>(</mml:mo>
                          <mml:mrow>
                            <mml:mn>13</mml:mn>
                            <mml:mo>×</mml:mo>
                            <mml:msub>
                              <mml:mrow>
                                <mml:mtext>ADI</mml:mtext>
                              </mml:mrow>
                              <mml:mrow>
                                <mml:mi>t</mml:mi>
                                <mml:mo>−</mml:mo>
                                <mml:mn>1</mml:mn>
                              </mml:mrow>
                            </mml:msub>
                            <mml:mo>+</mml:mo>
                            <mml:msub>
                              <mml:mrow>
                                <mml:mtext>ADI</mml:mtext>
                              </mml:mrow>
                              <mml:mi>t</mml:mi>
                            </mml:msub>
                          </mml:mrow>
                          <mml:mo>)</mml:mo>
                        </mml:mrow>
                        <mml:mo>÷</mml:mo>
                        <mml:mn>14</mml:mn>
                      </mml:mrow>
                    </mml:math>
                  </inline-formula>
                </td>
              </tr>
              <tr>
                <td>Know Sure Thing (KST)</td>
                <td>
                  <inline-formula>
                    <mml:math display="inline">
                      <mml:mrow>
                        <mml:mtext>KST</mml:mtext>
                        <mml:mo>=</mml:mo>
                        <mml:msub>
                          <mml:mrow>
                            <mml:mtext>SMA</mml:mtext>
                          </mml:mrow>
                          <mml:mrow>
                            <mml:mn>10</mml:mn>
                          </mml:mrow>
                        </mml:msub>
                        <mml:mrow>
                          <mml:mo>(</mml:mo>
                          <mml:mrow>
                            <mml:msub>
                              <mml:mrow>
                                <mml:mtext>ROC</mml:mtext>
                              </mml:mrow>
                              <mml:mrow>
                                <mml:mn>10</mml:mn>
                              </mml:mrow>
                            </mml:msub>
                          </mml:mrow>
                          <mml:mo>)</mml:mo>
                        </mml:mrow>
                        <mml:mo>+</mml:mo>
                        <mml:mn>2</mml:mn>
                        <mml:mo>×</mml:mo>
                        <mml:msub>
                          <mml:mrow>
                            <mml:mtext>SMA</mml:mtext>
                          </mml:mrow>
                          <mml:mrow>
                            <mml:mn>10</mml:mn>
                          </mml:mrow>
                        </mml:msub>
                        <mml:mrow>
                          <mml:mo>(</mml:mo>
                          <mml:mrow>
                            <mml:msub>
                              <mml:mrow>
                                <mml:mtext>ROC</mml:mtext>
                              </mml:mrow>
                              <mml:mrow>
                                <mml:mn>15</mml:mn>
                              </mml:mrow>
                            </mml:msub>
                          </mml:mrow>
                          <mml:mo>)</mml:mo>
                        </mml:mrow>
                        <mml:mo>+</mml:mo>
                        <mml:mn>3</mml:mn>
                        <mml:mo>×</mml:mo>
                        <mml:msub>
                          <mml:mrow>
                            <mml:mtext>SMA</mml:mtext>
                          </mml:mrow>
                          <mml:mrow>
                            <mml:mn>10</mml:mn>
                          </mml:mrow>
                        </mml:msub>
                        <mml:mrow>
                          <mml:mo>(</mml:mo>
                          <mml:mrow>
                            <mml:msub>
                              <mml:mrow>
                                <mml:mtext>ROC</mml:mtext>
                              </mml:mrow>
                              <mml:mrow>
                                <mml:mn>20</mml:mn>
                              </mml:mrow>
                            </mml:msub>
                          </mml:mrow>
                          <mml:mo>)</mml:mo>
                        </mml:mrow>
                        <mml:mo>+</mml:mo>
                        <mml:mn>4</mml:mn>
                        <mml:mo>×</mml:mo>
                        <mml:msub>
                          <mml:mrow>
                            <mml:mtext>SMA</mml:mtext>
                          </mml:mrow>
                          <mml:mrow>
                            <mml:mn>15</mml:mn>
                          </mml:mrow>
                        </mml:msub>
                        <mml:mrow>
                          <mml:mo>(</mml:mo>
                          <mml:mrow>
                            <mml:msub>
                              <mml:mrow>
                                <mml:mtext>ROC</mml:mtext>
                              </mml:mrow>
                              <mml:mrow>
                                <mml:mn>30</mml:mn>
                              </mml:mrow>
                            </mml:msub>
                          </mml:mrow>
                          <mml:mo>)</mml:mo>
                        </mml:mrow>
                        <mml:mo>,</mml:mo>
                      </mml:mrow>
                    </mml:math>
                  </inline-formula>
                  where
                  <inline-formula>
                    <mml:math>
                      <mml:mrow>
                        <mml:msub>
                          <mml:mrow>
                            <mml:mtext>ROC</mml:mtext>
                          </mml:mrow>
                          <mml:mi>n</mml:mi>
                        </mml:msub>
                        <mml:mo>=</mml:mo>
                        <mml:mfrac>
                          <mml:mrow>
                            <mml:msub>
                              <mml:mrow>
                                <mml:mtext>Close</mml:mtext>
                              </mml:mrow>
                              <mml:mi>t</mml:mi>
                            </mml:msub>
                            <mml:mo>−</mml:mo>
                            <mml:msub>
                              <mml:mrow>
                                <mml:mtext>Close</mml:mtext>
                              </mml:mrow>
                              <mml:mrow>
                                <mml:mi>t</mml:mi>
                                <mml:mo>−</mml:mo>
                                <mml:mi>n</mml:mi>
                              </mml:mrow>
                            </mml:msub>
                          </mml:mrow>
                          <mml:mrow>
                            <mml:msub>
                              <mml:mrow>
                                <mml:mtext>Close</mml:mtext>
                              </mml:mrow>
                              <mml:mrow>
                                <mml:mi>t</mml:mi>
                                <mml:mo>−</mml:mo>
                                <mml:mi>n</mml:mi>
                              </mml:mrow>
                            </mml:msub>
                          </mml:mrow>
                        </mml:mfrac>
                        <mml:mo>×</mml:mo>
                        <mml:mn>100</mml:mn>
                      </mml:mrow>
                    </mml:math>
                  </inline-formula>
                </td>
              </tr>
              <tr>
                <td>Parabolic Stop and Reverse (PSAR)</td>
                <td>
                  <inline-formula>
                    <mml:math display="inline">
                      <mml:mrow>
                        <mml:mtext>PSAR</mml:mtext>
                        <mml:mo>=</mml:mo>
                        <mml:msub>
                          <mml:mrow>
                            <mml:mtext>PSAR</mml:mtext>
                          </mml:mrow>
                          <mml:mi>t</mml:mi>
                        </mml:msub>
                        <mml:msub>
                          <mml:mrow>
                          </mml:mrow>
                          <mml:mrow>
                            <mml:mo>−</mml:mo>
                            <mml:mn>1</mml:mn>
                          </mml:mrow>
                        </mml:msub>
                        <mml:mo>−</mml:mo>
                        <mml:mtext>AF</mml:mtext>
                        <mml:mrow>
                          <mml:mo>(</mml:mo>
                          <mml:mrow>
                            <mml:msub>
                              <mml:mrow>
                                <mml:mtext>PSAR</mml:mtext>
                              </mml:mrow>
                              <mml:mi>t</mml:mi>
                            </mml:msub>
                            <mml:msub>
                              <mml:mrow>
                              </mml:mrow>
                              <mml:mrow>
                                <mml:mo>−</mml:mo>
                                <mml:mn>1</mml:mn>
                              </mml:mrow>
                            </mml:msub>
                            <mml:mo>−</mml:mo>
                            <mml:mtext>Lowest Low</mml:mtext>
                          </mml:mrow>
                          <mml:mo>)</mml:mo>
                        </mml:mrow>
                      </mml:mrow>
                    </mml:math>
                  </inline-formula>
                  , where AF (Acceleration Factor) ranges from 0.02 to 0.2 in increments of 0.02
                </td>
              </tr>
              <tr>
                <td>Aroon Indicator</td>
                <td>
                  <inline-formula>
                    <mml:math>
                      <mml:mrow>
                        <mml:mtext>Aroon Indicator</mml:mtext>
                        <mml:mo>=</mml:mo>
                        <mml:mfrac>
                          <mml:mrow>
                            <mml:mn>25</mml:mn>
                            <mml:mtext>-periods since</mml:mtext>
                            <mml:mn>25</mml:mn>
                            <mml:mtext>-period high</mml:mtext>
                          </mml:mrow>
                          <mml:mrow>
                            <mml:mn>25</mml:mn>
                          </mml:mrow>
                        </mml:mfrac>
                        <mml:mo>×</mml:mo>
                        <mml:mn>100</mml:mn>
                      </mml:mrow>
                    </mml:math>
                  </inline-formula>
                </td>
              </tr>
              <tr>
                <td>Ichimoku Cloud (IC)</td>
                <td>
                  <inline-formula>
                    <mml:math display="inline">
                      <mml:mrow>
                        <mml:mtext>IC</mml:mtext>
                        <mml:mo>=</mml:mo>
                        <mml:mrow>
                          <mml:mo>(</mml:mo>
                          <mml:mrow>
                            <mml:msub>
                              <mml:mrow>
                                <mml:mtext>High</mml:mtext>
                              </mml:mrow>
                              <mml:mn>9</mml:mn>
                            </mml:msub>
                            <mml:mo>+</mml:mo>
                            <mml:msub>
                              <mml:mrow>
                                <mml:mtext>Low</mml:mtext>
                              </mml:mrow>
                              <mml:mn>9</mml:mn>
                            </mml:msub>
                            <mml:mo>+</mml:mo>
                            <mml:msub>
                              <mml:mrow>
                                <mml:mtext>High</mml:mtext>
                              </mml:mrow>
                              <mml:mrow>
                                <mml:mn>26</mml:mn>
                              </mml:mrow>
                            </mml:msub>
                            <mml:mo>+</mml:mo>
                            <mml:msub>
                              <mml:mrow>
                                <mml:mtext>Low</mml:mtext>
                              </mml:mrow>
                              <mml:mrow>
                                <mml:mn>26</mml:mn>
                              </mml:mrow>
                            </mml:msub>
                          </mml:mrow>
                          <mml:mo>)</mml:mo>
                        </mml:mrow>
                        <mml:mo>÷</mml:mo>
                        <mml:mn>4</mml:mn>
                      </mml:mrow>
                    </mml:math>
                  </inline-formula>
                </td>
              </tr>
              <tr>
                <td>Schaff Trend Cycle (STC)</td>
                <td>
                  <inline-formula>
                    <mml:math display="inline">
                      <mml:mtable>
                        <mml:mtr>
                          <mml:mtd>
                            <mml:mtext>STC</mml:mtext>
                            <mml:mo>=</mml:mo>
                            <mml:msub>
                              <mml:mtext>EMA</mml:mtext>
                              <mml:mn>3</mml:mn>
                            </mml:msub>
                            <mml:mrow>
                              <mml:mo>{</mml:mo>
                              <mml:mrow>
                                <mml:mrow>
                                  <mml:mo>[</mml:mo>
                                  <mml:mrow>
                                    <mml:mtext>MACD</mml:mtext>
                                    <mml:mo>−</mml:mo>
                                    <mml:mtext>Lowest</mml:mtext>
                                    <mml:mrow>
                                      <mml:mo>(</mml:mo>
                                      <mml:mrow>
                                        <mml:mtext>MACD</mml:mtext>
                                        <mml:mo>,</mml:mo>
                                        <mml:mn>10</mml:mn>
                                      </mml:mrow>
                                      <mml:mo>)</mml:mo>
                                    </mml:mrow>
                                  </mml:mrow>
                                  <mml:mo>]</mml:mo>
                                </mml:mrow>
                              </mml:mrow>
                            </mml:mrow>
                          </mml:mtd>
                        </mml:mtr>
                        <mml:mtr>
                          <mml:mtd>
                            <mml:mtext>
                               
                            </mml:mtext>
                            <mml:mtext>
                               
                            </mml:mtext>
                            <mml:mo>÷</mml:mo>
                            <mml:mrow>
                              <mml:mrow>
                                <mml:mrow>
                                  <mml:mo>[</mml:mo>
                                  <mml:mrow>
                                    <mml:mtext>Highest</mml:mtext>
                                    <mml:mrow>
                                      <mml:mo>(</mml:mo>
                                      <mml:mrow>
                                        <mml:mtext>MACD</mml:mtext>
                                        <mml:mo>,</mml:mo>
                                        <mml:mn>10</mml:mn>
                                      </mml:mrow>
                                      <mml:mo>)</mml:mo>
                                    </mml:mrow>
                                    <mml:mo>−</mml:mo>
                                    <mml:mtext>Lowest</mml:mtext>
                                    <mml:mrow>
                                      <mml:mo>(</mml:mo>
                                      <mml:mrow>
                                        <mml:mtext>MACD</mml:mtext>
                                        <mml:mo>,</mml:mo>
                                        <mml:mn>10</mml:mn>
                                      </mml:mrow>
                                      <mml:mo>)</mml:mo>
                                    </mml:mrow>
                                  </mml:mrow>
                                  <mml:mo>]</mml:mo>
                                </mml:mrow>
                                <mml:mo>×</mml:mo>
                                <mml:mn>100</mml:mn>
                              </mml:mrow>
                              <mml:mo>}</mml:mo>
                            </mml:mrow>
                            <mml:mo>,</mml:mo>
                          </mml:mtd>
                        </mml:mtr>
                      </mml:mtable>
                    </mml:math>
                  </inline-formula>
                  where
                  <inline-formula>
                    <mml:math display="inline">
                      <mml:mrow>
                        <mml:mtext>MACD</mml:mtext>
                        <mml:mo>=</mml:mo>
                        <mml:msub>
                          <mml:mrow>
                            <mml:mtext>EMA</mml:mtext>
                          </mml:mrow>
                          <mml:mrow>
                            <mml:mn>23</mml:mn>
                          </mml:mrow>
                        </mml:msub>
                        <mml:mo>−</mml:mo>
                        <mml:msub>
                          <mml:mrow>
                            <mml:mtext>EMA</mml:mtext>
                          </mml:mrow>
                          <mml:mrow>
                            <mml:mn>50</mml:mn>
                          </mml:mrow>
                        </mml:msub>
                      </mml:mrow>
                    </mml:math>
                  </inline-formula>
                </td>
              </tr>
              <tr>
                <td>Triple Exponential Average (TRIX)</td>
                <td>
                  <inline-formula>
                    <mml:math display="inline">
                      <mml:mrow>
                        <mml:mtext>TRIX</mml:mtext>
                        <mml:mo>=</mml:mo>
                        <mml:mn>1</mml:mn>
                        <mml:mtext>-period</mml:mtext>
                        <mml:mi>%</mml:mi>
                        <mml:msub>
                          <mml:mrow>
                            <mml:mtext>change in EMA</mml:mtext>
                          </mml:mrow>
                          <mml:mrow>
                            <mml:mn>15</mml:mn>
                          </mml:mrow>
                        </mml:msub>
                        <mml:mrow>
                          <mml:mo>(</mml:mo>
                          <mml:mrow>
                            <mml:msub>
                              <mml:mrow>
                                <mml:mtext>EMA</mml:mtext>
                              </mml:mrow>
                              <mml:mrow>
                                <mml:mn>15</mml:mn>
                              </mml:mrow>
                            </mml:msub>
                            <mml:mrow>
                              <mml:mo>(</mml:mo>
                              <mml:mrow>
                                <mml:msub>
                                  <mml:mrow>
                                    <mml:mtext>EMA</mml:mtext>
                                  </mml:mrow>
                                  <mml:mrow>
                                    <mml:mn>15</mml:mn>
                                  </mml:mrow>
                                </mml:msub>
                                <mml:mrow>
                                  <mml:mo>(</mml:mo>
                                  <mml:mrow>
                                    <mml:mtext>Close</mml:mtext>
                                  </mml:mrow>
                                  <mml:mo>)</mml:mo>
                                </mml:mrow>
                              </mml:mrow>
                              <mml:mo>)</mml:mo>
                            </mml:mrow>
                          </mml:mrow>
                          <mml:mo>)</mml:mo>
                        </mml:mrow>
                      </mml:mrow>
                    </mml:math>
                  </inline-formula>
                </td>
              </tr>
              <tr>
                <td>Money Flow Index (MFI)</td>
                <td>
                  <inline-formula>
                    <mml:math display="inline">
                      <mml:mtable>
                        <mml:mtr>
                          <mml:mtd>
                            <mml:mtext>MFI</mml:mtext>
                            <mml:mo>=</mml:mo>
                            <mml:mn>100</mml:mn>
                            <mml:mo>−</mml:mo>
                            <mml:mrow>
                              <mml:mrow>
                                <mml:mn>100</mml:mn>
                              </mml:mrow>
                              <mml:mo>/</mml:mo>
                              <mml:mrow>
                                <mml:mrow>
                                  <mml:mo>(</mml:mo>
                                  <mml:mrow>
                                    <mml:mn>14</mml:mn>
                                    <mml:mtext>-period Positive</mml:mtext>
                                    <mml:mrow>
                                      <mml:mo>(</mml:mo>
                                      <mml:mrow>
                                        <mml:mtext>Typical Price</mml:mtext>
                                        <mml:mo>×</mml:mo>
                                        <mml:mtext>Volume</mml:mtext>
                                      </mml:mrow>
                                      <mml:mo>)</mml:mo>
                                    </mml:mrow>
                                  </mml:mrow>
                                </mml:mrow>
                              </mml:mrow>
                            </mml:mrow>
                          </mml:mtd>
                        </mml:mtr>
                        <mml:mtr>
                          <mml:mtd>
                            <mml:mtext>
                               
                            </mml:mtext>
                            <mml:mtext>
                               
                            </mml:mtext>
                            <mml:mo>÷</mml:mo>
                            <mml:mn>14</mml:mn>
                            <mml:mtext>-period Negative</mml:mtext>
                            <mml:mrow>
                              <mml:mrow>
                                <mml:mrow>
                                  <mml:mo>(</mml:mo>
                                  <mml:mrow>
                                    <mml:mtext>Typical Price</mml:mtext>
                                    <mml:mo>×</mml:mo>
                                    <mml:mtext>Volume</mml:mtext>
                                  </mml:mrow>
                                  <mml:mo>)</mml:mo>
                                </mml:mrow>
                                <mml:mo>+</mml:mo>
                                <mml:mn>1</mml:mn>
                              </mml:mrow>
                              <mml:mo>)</mml:mo>
                            </mml:mrow>
                          </mml:mtd>
                        </mml:mtr>
                      </mml:mtable>
                    </mml:math>
                  </inline-formula>
                </td>
              </tr>
              <tr>
                <td>Force Index (FI)</td>
                <td>
                  <inline-formula>
                    <mml:math display="inline">
                      <mml:mrow>
                        <mml:mtext>FI</mml:mtext>
                        <mml:mo>=</mml:mo>
                        <mml:mtext>13-period EMA</mml:mtext>
                        <mml:mrow>
                          <mml:mo>(</mml:mo>
                          <mml:mrow>
                            <mml:mrow>
                              <mml:mo>(</mml:mo>
                              <mml:mrow>
                                <mml:msub>
                                  <mml:mrow>
                                    <mml:mtext>Close</mml:mtext>
                                  </mml:mrow>
                                  <mml:mi>p</mml:mi>
                                </mml:msub>
                                <mml:mo>−</mml:mo>
                                <mml:msub>
                                  <mml:mrow>
                                    <mml:mtext>Close</mml:mtext>
                                  </mml:mrow>
                                  <mml:mrow>
                                    <mml:mi>p</mml:mi>
                                    <mml:mo>−</mml:mo>
                                    <mml:mn>1</mml:mn>
                                  </mml:mrow>
                                </mml:msub>
                              </mml:mrow>
                              <mml:mo>)</mml:mo>
                            </mml:mrow>
                            <mml:mo>×</mml:mo>
                            <mml:mtext>Volume</mml:mtext>
                          </mml:mrow>
                          <mml:mo>)</mml:mo>
                        </mml:mrow>
                      </mml:mrow>
                    </mml:math>
                  </inline-formula>
                </td>
              </tr>
              <tr>
                <td>Williams %R (WR)</td>
                <td>
                  <inline-formula>
                    <mml:math display="inline">
                      <mml:mrow>
                        <mml:mtext>WR</mml:mtext>
                        <mml:mo>=</mml:mo>
                        <mml:mrow>
                          <mml:mo>(</mml:mo>
                          <mml:mrow>
                            <mml:mtext>Highest High</mml:mtext>
                            <mml:mo>−</mml:mo>
                            <mml:mtext>Close</mml:mtext>
                          </mml:mrow>
                          <mml:mo>)</mml:mo>
                        </mml:mrow>
                        <mml:mo>÷</mml:mo>
                        <mml:mrow>
                          <mml:mo>(</mml:mo>
                          <mml:mrow>
                            <mml:mtext>Highest High</mml:mtext>
                            <mml:mo>−</mml:mo>
                            <mml:mtext>Lowest Low</mml:mtext>
                          </mml:mrow>
                          <mml:mo>)</mml:mo>
                        </mml:mrow>
                        <mml:mo>×</mml:mo>
                        <mml:mrow>
                          <mml:mo>(</mml:mo>
                          <mml:mrow>
                            <mml:mo>−</mml:mo>
                            <mml:mn>100</mml:mn>
                          </mml:mrow>
                          <mml:mo>)</mml:mo>
                        </mml:mrow>
                      </mml:mrow>
                    </mml:math>
                  </inline-formula>
                </td>
              </tr>
            </tbody>
          </table>
        </table-wrap>
      </sec>
      <sec id="sec2dot3">
        <title>2.3. News Sentiment Score</title>
        <p>The daily sentiment analysis is obtained by taking the average of all sentiment scores of every piece of news posted that day on Yahoo Finance. The score of each news ranged from −1 to +1, where a negative score indicates a negative connotation and a positive score indicates a positive connotation. The news is processed by the FinancialBERT Large Language Model (LLM) in Harzourli (2022) [<xref ref-type="bibr" rid="B22">22</xref>].</p>
      </sec>
    </sec>
    <sec id="sec3">
      <title>3. Results</title>
      <p>The Mean Squared Error (MSE) results for the stock prediction using the proposed hybrid model on the following stocks over 50 days are shown in <bold>Table 2</bold>.</p>
      <p>Mean Squared Error (MSE) is used to measure the average squared difference between the actual values (observed data) and the predicted values generated by a model. Mathematically, it is the average of the squared differences between predicted values and actual values for a dataset.</p>
      <p><bold>Table 3</bold> shows the stock investment simulation results. It contains the stock invested, initial investment budget, return (or final capital), and the rate of return over 5 years. </p>
      <p>Table 2. MSE for stock prediction.</p>
      <table-wrap id="tbl2">
        <label>Table 2</label>
        <table>
          <tbody>
            <tr>
              <td rowspan="2">Stock</td>
              <td colspan="2">Model Performance</td>
            </tr>
            <tr>
              <td>Training MSE</td>
              <td>Testing MSE</td>
            </tr>
            <tr>
              <td>S&amp;P 500</td>
              <td>85.3</td>
              <td>232.6</td>
            </tr>
            <tr>
              <td>Bitcoin</td>
              <td>847.25</td>
              <td>59239.79</td>
            </tr>
            <tr>
              <td>Amazon</td>
              <td>0.45</td>
              <td>0.66</td>
            </tr>
            <tr>
              <td>JPMorgan Chase &amp; Co.</td>
              <td>0.69</td>
              <td>1.01</td>
            </tr>
            <tr>
              <td>Shell</td>
              <td>2.34</td>
              <td>3.58</td>
            </tr>
            <tr>
              <td>Verizon</td>
              <td>0.55</td>
              <td>1.45</td>
            </tr>
            <tr>
              <td>RTX Corporation</td>
              <td>3.45</td>
              <td>5.67</td>
            </tr>
            <tr>
              <td>General Motors</td>
              <td>0.22</td>
              <td>0.46</td>
            </tr>
            <tr>
              <td>CBRE</td>
              <td>0.88</td>
              <td>1.89</td>
            </tr>
            <tr>
              <td>Google</td>
              <td>0.15</td>
              <td>0.39</td>
            </tr>
          </tbody>
        </table>
      </table-wrap>
      <p>Table 3. Return on investment for simulated stocks. </p>
      <table-wrap id="tbl3">
        <label>Table 3</label>
        <table>
          <tbody>
            <tr>
              <td rowspan="2">Stock</td>
              <td colspan="3">Simulated Investment Returns</td>
            </tr>
            <tr>
              <td>Initial Investment</td>
              <td>Return</td>
              <td>Rate of Return</td>
            </tr>
            <tr>
              <td>S&amp;P 500</td>
              <td>1000</td>
              <td>1168.2</td>
              <td>16.1%</td>
            </tr>
            <tr>
              <td>Google</td>
              <td>1000</td>
              <td>4061.1</td>
              <td>306.1%</td>
            </tr>
            <tr>
              <td>General Motors</td>
              <td>1000</td>
              <td>617.5</td>
              <td>−38.3%</td>
            </tr>
            <tr>
              <td>Shell</td>
              <td>1000</td>
              <td>1162.0</td>
              <td>16.2%</td>
            </tr>
            <tr>
              <td>Verizon</td>
              <td>1000</td>
              <td>1060.2</td>
              <td>6.0%</td>
            </tr>
            <tr>
              <td>JPMorgan Chase &amp; Co.</td>
              <td>1000</td>
              <td>1082.0</td>
              <td>8.2%</td>
            </tr>
          </tbody>
        </table>
      </table-wrap>
      <p><bold>Table 4</bold> shows the individual model performances on Google stock prices.</p>
      <p>Table 4. Training and testing MSE for individual components with Google’s stock prices.</p>
      <table-wrap id="tbl4">
        <label>Table 4</label>
        <table>
          <tbody>
            <tr>
              <td rowspan="2">Model</td>
              <td colspan="2">Individual Model Performance</td>
            </tr>
            <tr>
              <td>Training MSE</td>
              <td>Testing MSE</td>
            </tr>
            <tr>
              <td>Linear Regression</td>
              <td>0.53</td>
              <td>1.23</td>
            </tr>
            <tr>
              <td>Decision Tree</td>
              <td>0.33</td>
              <td>0.63</td>
            </tr>
            <tr>
              <td>Random Forest</td>
              <td>0.12</td>
              <td>0.34</td>
            </tr>
            <tr>
              <td>K-nearest neighbor</td>
              <td>0.05</td>
              <td>0.15</td>
            </tr>
            <tr>
              <td>Support Vector Machine</td>
              <td>0.00</td>
              <td>0.46</td>
            </tr>
            <tr>
              <td>Gradient Boosting Machine</td>
              <td>0.06</td>
              <td>0.30</td>
            </tr>
            <tr>
              <td>Lasso Regression</td>
              <td>0.96</td>
              <td>1.06</td>
            </tr>
            <tr>
              <td>Ridge Regression</td>
              <td>0.84</td>
              <td>1.03</td>
            </tr>
            <tr>
              <td>Gated Recurrent Unit</td>
              <td>7.06</td>
              <td>9.02</td>
            </tr>
            <tr>
              <td>Multi-layer perceptron</td>
              <td>0.50</td>
              <td>5.13</td>
            </tr>
            <tr>
              <td>Long Short-Merm Memory</td>
              <td>51.64</td>
              <td>56.77</td>
            </tr>
            <tr>
              <td>Temporal Convolutional Network</td>
              <td>16.53</td>
              <td>18.98</td>
            </tr>
            <tr>
              <td>Spiking Neural Network</td>
              <td>3902.33</td>
              <td>4210.94</td>
            </tr>
            <tr>
              <td>Recurrent Neural Network</td>
              <td>9.53</td>
              <td>9.98</td>
            </tr>
            <tr>
              <td>Multi-layer Perceptron (Combined output)</td>
              <td>0.10</td>
              <td>0.90</td>
            </tr>
          </tbody>
        </table>
      </table-wrap>
    </sec>
    <sec id="sec4">
      <title>4. Discussion</title>
      <p>This TFS model demonstrated an improvement over individual models, achieving a lower Mean Squared Error (MSE) than all neural networks. However, compared to the lowest individual MSE of 0.15 for the KNN model, the hybrid model performs worse, likely influenced by additional complexity and non-linearity. This suggests that linear models, in this case, demonstrated stronger performance than neural networks, which may have introduced more complexity without significantly improving accuracy, thus slightly reducing accuracy in the hybrid model. One major issue with neural networks is that they have many more hyperparameters than simple linear models, and these hyperparameters are not optimized to produce the best prediction. If there were more computational power and time, neural networks would theoretically perform better than simple linear models due to their ability to capture non-linear relationships within the market. </p>
      <p>Although the MSE of the TFS model is higher than the individual simple linear models, KNN, and decision tree models, the investment simulation using the TFS model and the KNN model both have identical returns at $4061 for Google. This is because the trading strategy employed is purely directional, relying on the binary decision to buy or sell.</p>
      <disp-formula id="FD1">
        <mml:math>
          <mml:mrow>
            <mml:mtext>Trading Signal</mml:mtext>
            <mml:mo>=</mml:mo>
            <mml:mrow>
              <mml:mo>{</mml:mo>
              <mml:mrow>
                <mml:mtable columnalign="left">
                  <mml:mtr columnalign="left">
                    <mml:mtd columnalign="left">
                      <mml:mrow>
                        <mml:mtext>BUY</mml:mtext>
                        <mml:mo>,</mml:mo>
                      </mml:mrow>
                    </mml:mtd>
                    <mml:mtd columnalign="left">
                      <mml:mrow>
                        <mml:mtext>if</mml:mtext>
                        <mml:mtext>
                           
                        </mml:mtext>
                        <mml:msub>
                          <mml:mi>P</mml:mi>
                          <mml:mrow>
                            <mml:mi>t</mml:mi>
                            <mml:mo>+</mml:mo>
                            <mml:mn>1</mml:mn>
                          </mml:mrow>
                        </mml:msub>
                        <mml:mo>&gt;</mml:mo>
                        <mml:msub>
                          <mml:mi>P</mml:mi>
                          <mml:mi>t</mml:mi>
                        </mml:msub>
                      </mml:mrow>
                    </mml:mtd>
                  </mml:mtr>
                  <mml:mtr columnalign="left">
                    <mml:mtd columnalign="left">
                      <mml:mrow>
                        <mml:mtext>SELL</mml:mtext>
                        <mml:mo>,</mml:mo>
                      </mml:mrow>
                    </mml:mtd>
                    <mml:mtd columnalign="left">
                      <mml:mrow>
                        <mml:mtext>if</mml:mtext>
                        <mml:mtext>
                           
                        </mml:mtext>
                        <mml:msub>
                          <mml:mi>P</mml:mi>
                          <mml:mrow>
                            <mml:mi>t</mml:mi>
                            <mml:mo>+</mml:mo>
                            <mml:mn>1</mml:mn>
                          </mml:mrow>
                        </mml:msub>
                        <mml:mo>≤</mml:mo>
                        <mml:msub>
                          <mml:mi>P</mml:mi>
                          <mml:mi>t</mml:mi>
                        </mml:msub>
                      </mml:mrow>
                    </mml:mtd>
                  </mml:mtr>
                </mml:mtable>
              </mml:mrow>
            </mml:mrow>
          </mml:mrow>
        </mml:math>
      </disp-formula>
      <p>In this context, the small difference in MSE (the magnitude of the error) does not affect the prediction enough to change the sign of the forecasted price. Therefore, both models made the exact same series of correct directional decisions throughout the simulation, resulting in identical practical performance and returns, despite having different statistical error metrics.</p>
      <p>The performance of some models, particularly the SNN, also suffered due to untuned hyperparameters. The SNN model has an unusually high MSE at around 4000 for both training and testing. Hyperparameter optimization techniques, such as grid search or Bayesian optimization, a technique using a probabilistic model to guide the search, could improve model performance by finding the ideal parameter values. This would help balance the complexity and generalization of the models, ultimately reducing errors. The SNN is also one of the newer models developed without a prebuilt library to use; thus, coding the entire model from scratch may introduce a lot of errors, such as convergence issues and unoptimized architecture and hyperparameters. Therefore, it also introduces a lot of random noise into the final TFS model, decreasing its accuracy. </p>
      <p>In addition, Bitcoin and the S&amp;P 500 had an especially high MSE. This is likely due to the volatile nature of cryptocurrency, showing that predicting equity or cryptocurrency with high fluctuations in price is a much harder task, compared to more stable assets like Google or JPMorgan Chase stocks. However, index stocks are far less volatile than single stocks, so theoretically the TFS model should perform better at the S&amp;P 500 as opposed to single stocks. However, the model performs significantly worse on index stocks. One potential explanation is that there is a lot more noise in the S&amp;P 500 because the model is essentially trying to predict the combined movement of 500 major companies instead of 1 singular company, making the index value highly sensitive to broader macroeconomic trends that may not be reflected in individual firm’s stock prices. Therefore, although index funds are much more stable, their trends contain additional variables like high-level macroeconomic policies, such as change in interest rates or GDP, ultimately leading to a worse performance compared to single stocks predictions.</p>
      <p>Moreover, the S&amp;P 500 and Bitcoin do not have fundamental data. The model used the individual firm’s quarterly revenue, shareholder equity, operating cash flow, EPS, P/E ratio, and dividend yield which index funds and cryptocurrency data did not have. In addition, the S&amp;P 500 news sentiment analysis is the collection of all news regarding the 503 companies, making each piece of news less important to the overall model, and it requires much more computational power to obtain all the news sources and their sentiment. Bitcoin’s speculative and unpredictable nature makes it even more difficult for traditional models to forecast accurately. </p>
      <p>Regarding the input data, financial news sentiment analysis scores were not standard and hard to find. Much financial news data is not directly related to the stock being predicted, and some news is weighed more heavily than others. Moreover, using Large Language Models (LLMs) to score news sentiment introduces inherent errors and randomness. If one had access to all the available news sources about a specific company and could weigh each one according to how much it affects the stock market, sentiment analysis would contribute a lot more to the model, as opposed to news sentiment analysis scores not having much effect on the model. There was also a lack of sufficient and diverse data, particularly with natural language processing (NLP) inputs for sentiment analysis. NLP models tend to require large datasets to identify meaningful patterns, and in this case, the limited data led to higher error rates. At the same time, there was also insufficient data for news sentiment analysis to yield a concrete conclusion. The model should perform better if it had 20 - 30 years of data to train on, as opposed to 5-10 years of data.</p>
      <p>One important takeaway from this analysis is the potential benefit of including more linear models and reducing reliance on neural networks (NNs). Linear models provide greater interpretability and stability, especially when working with datasets where relationships are more straightforward. Neural Networks, while powerful, can be prone to overfitting and may not always be the most effective choice for structured financial data. The large difference between the training MSE and testing MSE in <bold>Table 1</bold> indicates overfitting in the model, despite using L2 regularization. It can also be shown from the individual model results that the linear models generally performed better than the neural networks. Therefore, a shift toward incorporating more linear models could yield more consistent results. </p>
      <p>Using an autoencoder to preprocess the data turned out to make the model perform worse. A likely reason is that there is already too much noise in the stock market, and that extra noise hinders the performance of the model.</p>
      <p>Looking ahead, incorporating additional data sources could enhance model performance. For instance, sentiment analysis from other news sources and social media could provide insights into market behavior, especially for volatile assets like Bitcoin. Similarly, macroeconomic indicators such as interest rates and inflation data could offer more context and improve predictions for traditional financial institutions. Additionally, more frequent data, such as the stock price at every hour instead of every day, could further refine predictions. In conclusion, the model would certainly benefit from an increased volume of data, more accurate data, and more computational power.</p>
      <p>Finally, to improve the hybrid model further, weighted averaging could be used to give more importance to models that consistently perform well on specific subsets of the data. Overfitting should also be addressed by adding extra dropout layers and early stopping. Through careful tuning and combination of outputs, the hybrid model can evolve into an even more accurate and versatile prediction system.</p>
    </sec>
    <sec id="sec5">
      <title>5. Conclusion</title>
      <p>In this study, we proposed the TriFusion Stacking (TFS) model, a hybrid approach that integrates fundamental data, technical indicators, and sentiment analysis to enhance stock price predictions. Our results show that the proposed TFS model is successful, as it has an MSE of less than 1 for predicting stock prices. However, using a standalone model of simple linear regression or K-nearest neighbor also produces a small MSE. Our findings highlight that linear models can sometimes outperform more complex neural networks when dealing with structured financial data. This suggests a need to re-evaluate the role of simpler models in ensemble strategies for stock prediction. Our findings also highlight that predicting the prices of volatile stocks like Bitcoin and index stocks like the S&amp;P 500 is much more challenging. Future works in improving the model could include better quality news sentiment data and trying different meta-models (the model generating the final prediction, in this case, the MLP). Ultimately, our work contributes to the active field of stock price prediction by demonstrating the effectiveness of combining machine-learning algorithms and an enhanced understanding of which models are more important in stock price prediction and which stock types are more challenging to predict.</p>
    </sec>
    <sec id="sec6">
      <title>Acknowledgements</title>
      <p>I would like to thank my mentor Odysseas Drosis for helping me with the model and guiding me through the writing process.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <title>References</title>
      <ref id="B1">
        <label>1.</label>
        <citation-alternatives>
          <mixed-citation publication-type="confproc">Bhattacharjee, I. and Bhattacharja, P. (2019) Stock Price Prediction: A Comparative Study between Traditional Statistical Approach and Machine Learning Approach. 2019 4 <italic>th International Conference on Electrical Information and Communication Technology</italic>( <italic>EICT</italic>), Khulna, 20-22 December 2019, 1-6. https://doi.org/10.1109/eict48899.2019.9068850 <pub-id pub-id-type="doi">10.1109/eict48899.2019.9068850</pub-id><ext-link ext-link-type="uri" xlink:href="https://doi.org/10.1109/eict48899.2019.9068850">https://doi.org/10.1109/eict48899.2019.9068850</ext-link></mixed-citation>
          <element-citation publication-type="confproc">
            <person-group person-group-type="author">
              <string-name>Bhattacharjee, I.</string-name>
              <string-name>Bhattacharja, P.</string-name>
            </person-group>
            <year>2019</year>
            <article-title>Stock Price Prediction: A Comparative Study between Traditional Statistical Approach and Machine Learning Approach</article-title>
            <source>2019 4th International Conference on Electrical Information and Communication Technology (EICT)</source>
            <volume>20</volume>
            <pub-id pub-id-type="doi">10.1109/eict48899.2019.9068850</pub-id>
          </element-citation>
        </citation-alternatives>
      </ref>
      <ref id="B2">
        <label>2.</label>
        <citation-alternatives>
          <mixed-citation publication-type="journal">Seethalakshmi, R. (2018) Analysis of Stock Market Predictor Variables Using Linear Regression. <italic>International Journal of Pure and Applied Mathematics</italic>, 119. 369-377.</mixed-citation>
          <element-citation publication-type="journal">
            <person-group person-group-type="author">
              <string-name>Seethalakshmi, R.</string-name>
            </person-group>
            <year>2018</year>
            <article-title>Analysis of Stock Market Predictor Variables Using Linear Regression</article-title>
            <source>International Journal of Pure and Applied Mathematics</source>
            <volume>119</volume>
          </element-citation>
        </citation-alternatives>
      </ref>
      <ref id="B3">
        <label>3.</label>
        <citation-alternatives>
          <mixed-citation publication-type="other">Yang, J. (2023) Support Vector Machine-Based Stock Prediction Analysis. <italic>Highlights in Business</italic>, <italic>Economics and Management</italic>, 3, 12-18. https://doi.org/10.54097/hbem.v3i.4625 <pub-id pub-id-type="doi">10.54097/hbem.v3i.4625</pub-id><ext-link ext-link-type="uri" xlink:href="https://doi.org/10.54097/hbem.v3i.4625">https://doi.org/10.54097/hbem.v3i.4625</ext-link></mixed-citation>
          <element-citation publication-type="other">
            <person-group person-group-type="author">
              <string-name>Yang, J.</string-name>
              <string-name>Business, E</string-name>
            </person-group>
            <year>2023</year>
            <article-title>Support Vector Machine-Based Stock Prediction Analysis</article-title>
            <source>Highlights in Business</source>
            <volume>3</volume>
            <pub-id pub-id-type="doi">10.54097/hbem.v3i.4625</pub-id>
          </element-citation>
        </citation-alternatives>
      </ref>
      <ref id="B4">
        <label>4.</label>
        <citation-alternatives>
          <mixed-citation publication-type="journal">Lee, J.H., Shi, Z. and Gao, Z. (2022) On LASSO for Predictive Regression. <italic>Journal of Econometrics</italic>, 229, 322-349. https://doi.org/10.1016/j.jeconom.2021.02.002 <pub-id pub-id-type="doi">10.1016/j.jeconom.2021.02.002</pub-id><ext-link ext-link-type="uri" xlink:href="https://doi.org/10.1016/j.jeconom.2021.02.002">https://doi.org/10.1016/j.jeconom.2021.02.002</ext-link></mixed-citation>
          <element-citation publication-type="journal">
            <person-group person-group-type="author">
              <string-name>Lee, J.H.</string-name>
              <string-name>Shi, Z.</string-name>
              <string-name>Gao, Z.</string-name>
            </person-group>
            <year>2022</year>
            <article-title>On LASSO for Predictive Regression</article-title>
            <source>Journal of Econometrics</source>
            <volume>229</volume>
            <pub-id pub-id-type="doi">10.1016/j.jeconom.2021.02.002</pub-id>
          </element-citation>
        </citation-alternatives>
      </ref>
      <ref id="B5">
        <label>5.</label>
        <citation-alternatives>
          <mixed-citation publication-type="other">Roy, S.S., Mittal, D., Basu, A. and Abraham, A. (2015) Stock Market Forecasting Using LASSO Linear Regression Model. In: Abraham, A., Krömer, P. and Snasel, V., Eds., <italic>Advances in Intelligent Systems and Computing</italic>, Springer International Publishing, 371-381. https://doi.org/10.1007/978-3-319-13572-4_31 <pub-id pub-id-type="doi">10.1007/978-3-319-13572-4_31</pub-id><ext-link ext-link-type="uri" xlink:href="https://doi.org/10.1007/978-3-319-13572-4_31">https://doi.org/10.1007/978-3-319-13572-4_31</ext-link></mixed-citation>
          <element-citation publication-type="other">
            <person-group person-group-type="author">
              <string-name>Roy, S.S.</string-name>
              <string-name>Mittal, D.</string-name>
              <string-name>Basu, A.</string-name>
              <string-name>Abraham, A.</string-name>
              <string-name>Abraham, A.</string-name>
              <string-name>Snasel, V.</string-name>
              <string-name>Computing, S</string-name>
            </person-group>
            <year>2015</year>
            <article-title>Stock Market Forecasting Using LASSO Linear Regression Model</article-title>
            <source>In: Abraham</source>
            <volume>371</volume>
            <pub-id pub-id-type="doi">10.1007/978-3-319-13572-4_31</pub-id>
          </element-citation>
        </citation-alternatives>
      </ref>
      <ref id="B6">
        <label>6.</label>
        <citation-alternatives>
          <mixed-citation publication-type="other">Li, Y. (2023) Stock Price Prediction Based on Multiple Regression Models. <italic>Highlights in Science</italic>, <italic>Engineering and Technology</italic>, 39, 657-662. https://doi.org/10.54097/hset.v39i.6622 <pub-id pub-id-type="doi">10.54097/hset.v39i.6622</pub-id><ext-link ext-link-type="uri" xlink:href="https://doi.org/10.54097/hset.v39i.6622">https://doi.org/10.54097/hset.v39i.6622</ext-link></mixed-citation>
          <element-citation publication-type="other">
            <person-group person-group-type="author">
              <string-name>Li, Y.</string-name>
              <string-name>Science, E</string-name>
            </person-group>
            <year>2023</year>
            <article-title>Stock Price Prediction Based on Multiple Regression Models</article-title>
            <source>Highlights in Science</source>
            <volume>39</volume>
            <pub-id pub-id-type="doi">10.54097/hset.v39i.6622</pub-id>
          </element-citation>
        </citation-alternatives>
      </ref>
      <ref id="B7">
        <label>7.</label>
        <citation-alternatives>
          <mixed-citation publication-type="journal">Nabi, R.M., Ab. M. Saeed, S. and Harron, H. (2020) A Novel Approach for Stock Price Prediction Using Gradient Boosting Machine with Feature Engineering (GBM-WFE). <italic>Kurdistan Journal of Applied Research</italic>, 5, 28-48. https://doi.org/10.24017/science.2020.1.3 <pub-id pub-id-type="doi">10.24017/science.2020.1.3</pub-id><ext-link ext-link-type="uri" xlink:href="https://doi.org/10.24017/science.2020.1.3">https://doi.org/10.24017/science.2020.1.3</ext-link></mixed-citation>
          <element-citation publication-type="journal">
            <person-group person-group-type="author">
              <string-name>Nabi, R.M.</string-name>
              <string-name>Saeed, S.</string-name>
              <string-name>Harron, H.</string-name>
            </person-group>
            <year>2020</year>
            <article-title>A Novel Approach for Stock Price Prediction Using Gradient Boosting Machine with Feature Engineering (GBM-WFE)</article-title>
            <source>Kurdistan Journal of Applied Research</source>
            <volume>5</volume>
            <pub-id pub-id-type="doi">10.24017/science.2020.1.3</pub-id>
          </element-citation>
        </citation-alternatives>
      </ref>
      <ref id="B8">
        <label>8.</label>
        <citation-alternatives>
          <mixed-citation publication-type="confproc">Kamble, R.A. (2017) Short and Long Term Stock Trend Prediction Using Decision Tree. 2017 <italic>International Conference on Intelligent Computing and Control Systems</italic>( <italic>ICICCS</italic>), Madurai, 15-16 June 2017, 1371-1375. https://doi.org/10.1109/iccons.2017.8250694 <pub-id pub-id-type="doi">10.1109/iccons.2017.8250694</pub-id><ext-link ext-link-type="uri" xlink:href="https://doi.org/10.1109/iccons.2017.8250694">https://doi.org/10.1109/iccons.2017.8250694</ext-link></mixed-citation>
          <element-citation publication-type="confproc">
            <person-group person-group-type="author">
              <string-name>Kamble, R.A.</string-name>
            </person-group>
            <year>2017</year>
            <article-title>Short and Long Term Stock Trend Prediction Using Decision Tree</article-title>
            <source>2017 International Conference on Intelligent Computing and Control Systems (ICICCS)</source>
            <volume>15</volume>
            <pub-id pub-id-type="doi">10.1109/iccons.2017.8250694</pub-id>
          </element-citation>
        </citation-alternatives>
      </ref>
      <ref id="B9">
        <label>9.</label>
        <citation-alternatives>
          <mixed-citation publication-type="other">Datta, T. and Ghosh, I. (2015) Using Clustering Method to Understand Indian Stock Market Volatility. <italic>Communications on Applied Electronics</italic>, 2, 35-44. https://doi.org/10.5120/cae2015651793 <pub-id pub-id-type="doi">10.5120/cae2015651793</pub-id><ext-link ext-link-type="uri" xlink:href="https://doi.org/10.5120/cae2015651793">https://doi.org/10.5120/cae2015651793</ext-link></mixed-citation>
          <element-citation publication-type="other">
            <person-group person-group-type="author">
              <string-name>Datta, T.</string-name>
              <string-name>Ghosh, I.</string-name>
            </person-group>
            <year>2015</year>
            <article-title>Using Clustering Method to Understand Indian Stock Market Volatility</article-title>
            <source>Communications on Applied Electronics</source>
            <volume>2</volume>
            <pub-id pub-id-type="doi">10.5120/cae2015651793</pub-id>
          </element-citation>
        </citation-alternatives>
      </ref>
      <ref id="B10">
        <label>10.</label>
        <citation-alternatives>
          <mixed-citation publication-type="book">Zheng, J., Xin, D., Cheng, Q., Tian, M. and Yang, L. (2024) The Random Forest Model for Analyzing and Forecasting the US Stock Market under the Background of Smart Finance. In: Li, K., Li, Q., Hong, W.-C., et al., Eds., <italic>Atlantis Highlights in Computer Sciences</italic>, Atlantis Press International BV, 82-90. https://doi.org/10.2991/978-94-6463-419-8_11 <pub-id pub-id-type="doi">10.2991/978-94-6463-419-8_11</pub-id><ext-link ext-link-type="uri" xlink:href="https://doi.org/10.2991/978-94-6463-419-8_11">https://doi.org/10.2991/978-94-6463-419-8_11</ext-link></mixed-citation>
          <element-citation publication-type="book">
            <person-group person-group-type="author">
              <string-name>Zheng, J.</string-name>
              <string-name>Xin, D.</string-name>
              <string-name>Cheng, Q.</string-name>
              <string-name>Tian, M.</string-name>
              <string-name>Yang, L.</string-name>
              <string-name>Li, K.</string-name>
              <string-name>Li, Q.</string-name>
              <string-name>Hong, W.</string-name>
              <string-name>Sciences, A</string-name>
            </person-group>
            <year>2024</year>
            <article-title>The Random Forest Model for Analyzing and Forecasting the US Stock Market under the Background of Smart Finance</article-title>
            <source>In: Li</source>
            <volume>82</volume>
            <pub-id pub-id-type="doi">10.2991/978-94-6463-419-8_11</pub-id>
          </element-citation>
        </citation-alternatives>
      </ref>
      <ref id="B11">
        <label>11.</label>
        <citation-alternatives>
          <mixed-citation publication-type="journal">Tajmouati, S., Wahbi, B.E.L., Bedoui, A., Abarda, A. and Dakkon, M. (2024) Applying <italic>k</italic>‐nearest Neighbors to Time Series Forecasting: Two New Approaches. <italic>Journal of Forecasting</italic>, 43, 1559-1574. https://doi.org/10.1002/for.3093 <pub-id pub-id-type="doi">10.1002/for.3093</pub-id><ext-link ext-link-type="uri" xlink:href="https://doi.org/10.1002/for.3093">https://doi.org/10.1002/for.3093</ext-link></mixed-citation>
          <element-citation publication-type="journal">
            <person-group person-group-type="author">
              <string-name>Tajmouati, S.</string-name>
              <string-name>Wahbi, B.E.L.</string-name>
              <string-name>Bedoui, A.</string-name>
              <string-name>Abarda, A.</string-name>
              <string-name>Dakkon, M.</string-name>
            </person-group>
            <year>2024</year>
            <article-title>Applying k‐nearest Neighbors to Time Series Forecasting: Two New Approaches</article-title>
            <source>Journal of Forecasting</source>
            <volume>43</volume>
            <pub-id pub-id-type="doi">10.1002/for.3093</pub-id>
          </element-citation>
        </citation-alternatives>
      </ref>
      <ref id="B12">
        <label>12.</label>
        <citation-alternatives>
          <mixed-citation publication-type="other">Namdari, A. and Durrani, T.S. (2021) A Multilayer Feedforward Perceptron Model in Neural Networks for Predicting Stock Market Short-Term Trends. <italic>Operations Research Forum</italic>, 2, Article No. 38. https://doi.org/10.1007/s43069-021-00071-2 <pub-id pub-id-type="doi">10.1007/s43069-021-00071-2</pub-id><ext-link ext-link-type="uri" xlink:href="https://doi.org/10.1007/s43069-021-00071-2">https://doi.org/10.1007/s43069-021-00071-2</ext-link></mixed-citation>
          <element-citation publication-type="other">
            <person-group person-group-type="author">
              <string-name>Namdari, A.</string-name>
              <string-name>Durrani, T.S.</string-name>
            </person-group>
            <year>2021</year>
            <article-title>A Multilayer Feedforward Perceptron Model in Neural Networks for Predicting Stock Market Short-Term Trends</article-title>
            <source>Operations Research Forum</source>
            <volume>2</volume>
            <elocation-id>No</elocation-id>
            <pub-id pub-id-type="doi">10.1007/s43069-021-00071-2</pub-id>
          </element-citation>
        </citation-alternatives>
      </ref>
      <ref id="B13">
        <label>13.</label>
        <citation-alternatives>
          <mixed-citation publication-type="confproc">Chen, S. and He, H. (2018) Stock Prediction Using Convolutional Neural Network. <italic>IOP Conference Series</italic>: <italic>Materials Science and Engineering</italic>, 435, Article 012026. https://doi.org/10.1088/1757-899x/435/1/012026 <pub-id pub-id-type="doi">10.1088/1757-899x/435/1/012026</pub-id><ext-link ext-link-type="uri" xlink:href="https://doi.org/10.1088/1757-899x/435/1/012026">https://doi.org/10.1088/1757-899x/435/1/012026</ext-link></mixed-citation>
          <element-citation publication-type="confproc">
            <person-group person-group-type="author">
              <string-name>Chen, S.</string-name>
              <string-name>He, H.</string-name>
            </person-group>
            <year>2018</year>
            <article-title>Stock Prediction Using Convolutional Neural Network</article-title>
            <source>IOP Conference Series: Materials Science and Engineering</source>
            <volume>435</volume>
            <elocation-id>012026</elocation-id>
            <pub-id pub-id-type="doi">10.1088/1757-899x/435/1/012026</pub-id>
          </element-citation>
        </citation-alternatives>
      </ref>
      <ref id="B14">
        <label>14.</label>
        <citation-alternatives>
          <mixed-citation publication-type="confproc">Zhu, Y. (2020) Stock Price Prediction Using the RNN Model. <italic>Journal of Physics</italic>: <italic>Conference Series</italic>, 1650, Article 032103. https://doi.org/10.1088/1742-6596/1650/3/032103 <pub-id pub-id-type="doi">10.1088/1742-6596/1650/3/032103</pub-id><ext-link ext-link-type="uri" xlink:href="https://doi.org/10.1088/1742-6596/1650/3/032103">https://doi.org/10.1088/1742-6596/1650/3/032103</ext-link></mixed-citation>
          <element-citation publication-type="confproc">
            <person-group person-group-type="author">
              <string-name>Zhu, Y.</string-name>
            </person-group>
            <year>2020</year>
            <article-title>Stock Price Prediction Using the RNN Model</article-title>
            <source>Journal of Physics: Conference Series</source>
            <volume>1650</volume>
            <elocation-id>032103</elocation-id>
            <pub-id pub-id-type="doi">10.1088/1742-6596/1650/3/032103</pub-id>
          </element-citation>
        </citation-alternatives>
      </ref>
      <ref id="B15">
        <label>15.</label>
        <citation-alternatives>
          <mixed-citation publication-type="confproc">Guo, S., Ai, H. and Li, S. (2023) Stock Movement Prediction via Temporal Convolutional Network and Interactive Attention Network. 2023 <italic>International Conference</italic><italic>on Intelligent and Innovative Technologies in Computing</italic>, <italic>Electrical and Electronics</italic>( <italic>IITCEE</italic>), Bengaluru, 27-28 January 2023, 413-417. https://doi.org/10.1109/iitcee57236.2023.10091033 <pub-id pub-id-type="doi">10.1109/iitcee57236.2023.10091033</pub-id><ext-link ext-link-type="uri" xlink:href="https://doi.org/10.1109/iitcee57236.2023.10091033">https://doi.org/10.1109/iitcee57236.2023.10091033</ext-link></mixed-citation>
          <element-citation publication-type="confproc">
            <person-group person-group-type="author">
              <string-name>Guo, S.</string-name>
              <string-name>Ai, H.</string-name>
              <string-name>Li, S.</string-name>
              <string-name>Computing, E</string-name>
            </person-group>
            <year>2023</year>
            <article-title>Stock Movement Prediction via Temporal Convolutional Network and Interactive Attention Network</article-title>
            <source>2023 International Conference on Intelligent and Innovative Technologies in Computing</source>
            <volume>27</volume>
            <pub-id pub-id-type="doi">10.1109/iitcee57236.2023.10091033</pub-id>
          </element-citation>
        </citation-alternatives>
      </ref>
      <ref id="B16">
        <label>16.</label>
        <citation-alternatives>
          <mixed-citation publication-type="journal">Wolpert, D.H. (1992) Stacked Generalization. <italic>Neural Networks</italic>, 5, 241-259. https://doi.org/10.1016/s0893-6080(05)80023-1 <pub-id pub-id-type="doi">10.1016/s0893-6080(05)80023-1</pub-id><ext-link ext-link-type="uri" xlink:href="https://doi.org/10.1016/s0893-6080(05)80023-1">https://doi.org/10.1016/s0893-6080(05)80023-1</ext-link></mixed-citation>
          <element-citation publication-type="journal">
            <person-group person-group-type="author">
              <string-name>Wolpert, D.H.</string-name>
            </person-group>
            <year>1992</year>
            <article-title>Stacked Generalization</article-title>
            <source>Neural Networks</source>
            <volume>6080</volume>
            <issue>05</issue>
            <pub-id pub-id-type="doi">10.1016/s0893-6080(05)80023-1</pub-id>
          </element-citation>
        </citation-alternatives>
      </ref>
      <ref id="B17">
        <label>17.</label>
        <citation-alternatives>
          <mixed-citation publication-type="other">Weng, B., Lu, L., Wang, X., Megahed, F.M. and Martinez, W. (2018) Predicting Short-Term Stock Prices Using Ensemble Methods and Online Data Sources. <italic>Expert Systems with Applications</italic>, 112, 258-273. https://doi.org/10.1016/j.eswa.2018.06.016 <pub-id pub-id-type="doi">10.1016/j.eswa.2018.06.016</pub-id><ext-link ext-link-type="uri" xlink:href="https://doi.org/10.1016/j.eswa.2018.06.016">https://doi.org/10.1016/j.eswa.2018.06.016</ext-link></mixed-citation>
          <element-citation publication-type="other">
            <person-group person-group-type="author">
              <string-name>Weng, B.</string-name>
              <string-name>Lu, L.</string-name>
              <string-name>Wang, X.</string-name>
              <string-name>Megahed, F.M.</string-name>
              <string-name>Martinez, W.</string-name>
            </person-group>
            <year>2018</year>
            <article-title>Predicting Short-Term Stock Prices Using Ensemble Methods and Online Data Sources</article-title>
            <source>Expert Systems with Applications</source>
            <volume>112</volume>
            <pub-id pub-id-type="doi">10.1016/j.eswa.2018.06.016</pub-id>
          </element-citation>
        </citation-alternatives>
      </ref>
      <ref id="B18">
        <label>18.</label>
        <citation-alternatives>
          <mixed-citation publication-type="journal">Nti, I.K., Adekoya, A.F. and Weyori, B.A. (2020) A Comprehensive Evaluation of Ensemble Learning for Stock-Market Prediction. <italic>Journal of Big Data</italic>, 7, Article No. 20. https://doi.org/10.1186/s40537-020-00299-5 <pub-id pub-id-type="doi">10.1186/s40537-020-00299-5</pub-id><ext-link ext-link-type="uri" xlink:href="https://doi.org/10.1186/s40537-020-00299-5">https://doi.org/10.1186/s40537-020-00299-5</ext-link></mixed-citation>
          <element-citation publication-type="journal">
            <person-group person-group-type="author">
              <string-name>Nti, I.K.</string-name>
              <string-name>Adekoya, A.F.</string-name>
              <string-name>Weyori, B.A.</string-name>
            </person-group>
            <year>2020</year>
            <article-title>A Comprehensive Evaluation of Ensemble Learning for Stock-Market Prediction</article-title>
            <source>Journal of Big Data</source>
            <volume>7</volume>
            <elocation-id>No</elocation-id>
            <pub-id pub-id-type="doi">10.1186/s40537-020-00299-5</pub-id>
          </element-citation>
        </citation-alternatives>
      </ref>
      <ref id="B19">
        <label>19.</label>
        <citation-alternatives>
          <mixed-citation publication-type="journal">Li, Y. and Pan, Y. (2021) A Novel Ensemble Deep Learning Model for Stock Prediction Based on Stock Prices and News. <italic>International Journal of Data Science and Analytics</italic>, 13, 139-149. https://doi.org/10.1007/s41060-021-00279-9 <pub-id pub-id-type="doi">10.1007/s41060-021-00279-9</pub-id><pub-id pub-id-type="pmid">34549080</pub-id><ext-link ext-link-type="uri" xlink:href="https://doi.org/10.1007/s41060-021-00279-9">https://doi.org/10.1007/s41060-021-00279-9</ext-link></mixed-citation>
          <element-citation publication-type="journal">
            <person-group person-group-type="author">
              <string-name>Li, Y.</string-name>
              <string-name>Pan, Y.</string-name>
            </person-group>
            <year>2021</year>
            <article-title>A Novel Ensemble Deep Learning Model for Stock Prediction Based on Stock Prices and News</article-title>
            <source>International Journal of Data Science and Analytics</source>
            <volume>13</volume>
            <pub-id pub-id-type="doi">10.1007/s41060-021-00279-9</pub-id>
            <pub-id pub-id-type="pmid">34549080</pub-id>
          </element-citation>
        </citation-alternatives>
      </ref>
      <ref id="B20">
        <label>20.</label>
        <citation-alternatives>
          <mixed-citation publication-type="journal">Halder, S. (2022) Finbert-LSTM: Deep Learning Based Stock Price Prediction Using News Sentiment Analysis. arXiv:2211.07392.</mixed-citation>
          <element-citation publication-type="journal">
            <person-group person-group-type="author">
              <string-name>Halder, S.</string-name>
            </person-group>
            <year>2022</year>
            <article-title>Finbert-LSTM: Deep Learning Based Stock Price Prediction Using News Sentiment Analysis</article-title>
            <fpage>2211</fpage>
          </element-citation>
        </citation-alternatives>
      </ref>
      <ref id="B21">
        <label>21.</label>
        <citation-alternatives>
          <mixed-citation publication-type="other">Zhang, R. and Mariano, V.Y. (2024) Integration of Emotional Factors with Gan Algorithm in Stock Price Prediction Method Research. <italic>IEEE Access</italic>, 12, 77368-77378. https://doi.org/10.1109/access.2024.3406223 <pub-id pub-id-type="doi">10.1109/access.2024.3406223</pub-id><ext-link ext-link-type="uri" xlink:href="https://doi.org/10.1109/access.2024.3406223">https://doi.org/10.1109/access.2024.3406223</ext-link></mixed-citation>
          <element-citation publication-type="other">
            <person-group person-group-type="author">
              <string-name>Zhang, R.</string-name>
              <string-name>Mariano, V.Y.</string-name>
            </person-group>
            <year>2024</year>
            <article-title>Integration of Emotional Factors with Gan Algorithm in Stock Price Prediction Method Research</article-title>
            <source>IEEE Access</source>
            <volume>12</volume>
            <pub-id pub-id-type="doi">10.1109/access.2024.3406223</pub-id>
          </element-citation>
        </citation-alternatives>
      </ref>
      <ref id="B22">
        <label>22.</label>
        <citation-alternatives>
          <mixed-citation publication-type="other">Hazourli, A. (2022) Financialbert—A Pretrained Language Model for Financial Text Mining. Research Gate, 2.</mixed-citation>
          <element-citation publication-type="other">
            <person-group person-group-type="author">
              <string-name>Hazourli, A.</string-name>
            </person-group>
            <year>2022</year>
            <article-title>Financialbert—A Pretrained Language Model for Financial Text Mining</article-title>
            <source>Research Gate</source>
            <volume>2</volume>
          </element-citation>
        </citation-alternatives>
      </ref>
    </ref-list>
  </back>
</article>