{"id":3674,"date":"2023-11-14T15:22:28","date_gmt":"2023-11-14T15:22:28","guid":{"rendered":"https:\/\/eodhd.com\/financial-academy\/?p=3674"},"modified":"2025-02-05T11:53:51","modified_gmt":"2025-02-05T11:53:51","slug":"estimate-volatility-with-sma-and-ewma-in-python","status":"publish","type":"post","link":"https:\/\/eodhd.com\/financial-academy\/stocks-data-analysis-examples\/estimate-volatility-with-sma-and-ewma-in-python","title":{"rendered":"Estimate Volatility with SMA and EWMA in Python"},"content":{"rendered":"\n<p>Time series analysis is a critical component of understanding and predicting trends in various fields such as finance, economics, and environmental science. Two common methods used for smoothing time series data are simple, or equally weighted, <a href=\"https:\/\/www.investopedia.com\/terms\/s\/sma.asp\" target=\"_blank\" rel=\"noreferrer noopener\">Moving Averages (SMA)<\/a> and <a href=\"https:\/\/www.investopedia.com\/articles\/07\/ewma.asp\" target=\"_blank\" rel=\"noreferrer noopener\">Exponentially Weighted Moving Averages (EWMA)<\/a>. In this article, we will delve into the characteristics, advantages, and applications of both approaches.<\/p>\n\n\n\n<p>Additionally, we will demonstrate the practical application of these techniques by deriving volatility estimates from financial time series. We will use the <a href=\"https:\/\/www.investopedia.com\/terms\/d\/dowjoneseurostoxx50.asp#:~:text=The%20EURO%20STOXX%2050%20Index,largest%20companies%20in%20the%20eurozone\" target=\"_blank\" rel=\"noreferrer noopener\">Euro Stoxx 50 market index<\/a> as an example and highlight the main differences by comparing the two results<\/p>\n\n\n\n<p class=\"has-text-align-center\"><a class=\"maxbutton-1 maxbutton maxbutton-subscribe-to-api external-css btn\" href=\"https:\/\/eodhd.com\/register\"><span class='mb-text'>Register &amp; Get Data<\/span><\/a><\/p>\n\n\n\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-an-introduction-to-simple-moving-averages\">An Introduction to Simple Moving Averages<\/h2>\n\n\n\n<p>A moving average is calculated on a rolling estimation sample. In other words, we can set a window of fixed length&nbsp;<em>n<\/em>, roll it through time and then compute the mean of each sample obtained by adding a new (most recent) observation and taking off the oldest one. This window is often referred to as <em>look-back period<\/em>. As the name suggests, the same weight is assigned to each observation in the sample. A simple formulation is:<\/p>\n\n\n\n<p align=\"center\"><img decoding=\"async\" src=\"https:\/\/s0.wp.com\/latex.php?latex=MA_%7Bt%7D+%3D+%5Cfrac%7Bx_%7Bt%7D+%2B+x_%7Bt-1%7D+%2B+%5Cldots+%2B+x_%7Bt-n%2B1%7D%7D%7Bn%7D&#038;bg=ffffff&#038;fg=000&#038;s=0&#038;c=20201002\" alt=\"MA_{t} = &#92;frac{x_{t} + x_{t-1} + &#92;ldots + x_{t-n+1}}{n}\" class=\"latex\" \/><\/p>\n\n\n\n<p>where <img decoding=\"async\" src=\"https:\/\/s0.wp.com\/latex.php?latex=X_%7Bt%7D&#038;bg=ffffff&#038;fg=000&#038;s=0&#038;c=20201002\" alt=\"X_{t}\" class=\"latex\" \/> with <img decoding=\"async\" src=\"https:\/\/s0.wp.com\/latex.php?latex=t+%3D+%7B1%2C+%5Cldots%2C+T%7D&#038;bg=ffffff&#038;fg=000&#038;s=0&#038;c=20201002\" alt=\"t = {1, &#92;ldots, T}\" class=\"latex\" \/> are the time series observations. <\/p>\n\n\n\n<p>The advantages of this method surely lie in its simplicity and easy interpretability. By equally weighting all data points within its chosen timeframe, SMAs provide a smooth, undisturbed trend line, effectively filtering out the noise inherent in day-to-day market fluctuations and allowing the identification of long-term trends.<\/p>\n\n\n\n<p>Despite being widely used by practitioners, SMAs also come with some pitfalls. One of the main issues is known as the <em><em>leverage <\/em>effect<\/em>, indicating a phenomenon where sudden spikes or outliers in data have a long-lasting impact on the results of moving averages. Let&#8217;s consider an exceptionally high return occurring today. If tomorrow we compute the 30-day volatility based on closing prices and include the abnormal return, our volatility forecast will be very high. However, in exactly 30 days (or 22 if we consider only business days), it will suddenly drop to a much lower level on a day when absolutely nothing happened in the markets. This occurrence is simply because the extreme return dropped out of the moving estimation sample. As long as this extreme return stays within the data window, the volatility forecast remains high. We will explore this exact case in the example below.<br><\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-exponentially-weighted-moving-averages\">Exponentially Weighted Moving Averages<\/h2>\n\n\n\n<p>Unlike the equal weighting approach, exponentially weighted moving averages (EWMA) add more weight on recent observations. This characteristic makes EWMA particularly useful in capturing short-term volatility dynamics and less prone to the <em>leverage effect <\/em>issues associated with SMA. By incorporating a smoothing factor &nbsp;\ud835\udf06&nbsp; that dictates the rate at which past data diminishes in relevance, the model can be tailored to reflect the desired responsiveness to recent market movements. The higher is &nbsp;\ud835\udf06, the more weight would be attributed to past returns when computing the volatility. For constant <img decoding=\"async\" src=\"https:\/\/s0.wp.com\/latex.php?latex=0%3C%5Clambda+%3C+1+&#038;bg=ffffff&#038;fg=000&#038;s=0&#038;c=20201002\" alt=\"0&lt;&#92;lambda &lt; 1 \" class=\"latex\" \/>, EWMAs are defined as:<\/p>\n\n\n\n<p align=\"center\"><img decoding=\"async\" src=\"https:\/\/s0.wp.com\/latex.php?latex=EWMA%28x_%7Bt-1%7D%2C+%5Cldots+%2C+x_%7B1%7D+%7C+%5Clambda%29+%3D+%5Cfrac+%7Bx_%7Bt-1%7D+%2B+%5Clambda+x_%7Bt-2%7D+%2B+%5Clambda%5E2+x_%7Bt-3%7D+%2B+%5Cldots+%2B+%5Clambda%5E%7Bt-2%7D+x_%7B1%7D%7D+%7B1+%2B+%5Clambda+%2B+%5Clambda%5E2+%2B+%5Cldots+%2B+%5Clambda%5E%7Bt-2%7D%7D+&#038;bg=ffffff&#038;fg=000&#038;s=0&#038;c=20201002\" alt=\"EWMA(x_{t-1}, &#92;ldots , x_{1} | &#92;lambda) = &#92;frac {x_{t-1} + &#92;lambda x_{t-2} + &#92;lambda^2 x_{t-3} + &#92;ldots + &#92;lambda^{t-2} x_{1}} {1 + &#92;lambda + &#92;lambda^2 + &#92;ldots + &#92;lambda^{t-2}} \" class=\"latex\" \/><\/p>\n\n\n\n<p>Following this approach, and assuming mean asset returns equal to zero, we can compute EWMA estimates of variances and covariances as follows:<\/p>\n\n\n\n<p align=\"center\"><img decoding=\"async\" src=\"https:\/\/s0.wp.com\/latex.php?latex=%5Chat%7B%5Csigma%7D_%7Bt%7D%5E2+%3D+%281+-+%5Clambda%29+%5Csum_%7Bi%3D1%7D%5E%7B%5Cinfty+%7D+%5Clambda%5E%7Bi-1%7Dr_%7Bt-i%7D%5E2+%3D+%281+-+%5Clambda%29r_%7Bt-1%7D%5E2+%2B+%5Clambda%5Chat%7B%5Csigma%7D_%7Bt-1%7D%5E2&#038;bg=ffffff&#038;fg=000&#038;s=0&#038;c=20201002\" alt=\"&#92;hat{&#92;sigma}_{t}^2 = (1 - &#92;lambda) &#92;sum_{i=1}^{&#92;infty } &#92;lambda^{i-1}r_{t-i}^2 = (1 - &#92;lambda)r_{t-1}^2 + &#92;lambda&#92;hat{&#92;sigma}_{t-1}^2\" class=\"latex\" \/><\/p>\n\n\n\n<p align=\"center\"><img decoding=\"async\" src=\"https:\/\/s0.wp.com\/latex.php?latex=%5Chat%7B%5Csigma%7D_%7B12t%7D+%3D+%281+-+%5Clambda%29+%5Csum_%7Bi%3D1%7D%5E%7B%5Cinfty%7D+%5Clambda%5E%7Bi-1%7Dr_%7B1%2C+t-i%7Dr_%7B2%2C+t-i%7D+%3D+%281+-+%5Clambda%29+r_%7B1%2C+t-1%7D+r_%7B2%2C+t-1%7D+%2B+%5Clambda%5Chat%7B%5Csigma%7D_%7B12t%2C+t-1%7D&#038;bg=ffffff&#038;fg=000&#038;s=0&#038;c=20201002\" alt=\"&#92;hat{&#92;sigma}_{12t} = (1 - &#92;lambda) &#92;sum_{i=1}^{&#92;infty} &#92;lambda^{i-1}r_{1, t-i}r_{2, t-i} = (1 - &#92;lambda) r_{1, t-1} r_{2, t-1} + &#92;lambda&#92;hat{&#92;sigma}_{12t, t-1}\" class=\"latex\" \/><\/p>\n\n\n\n<p>The rightmost part of the last two equations shows a recursive closed-form formulation for variance and covariance in the EWMA case.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-an-example\">An example<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-data\">Data<\/h3>\n\n\n\n<p>For our example, we will use time series data of one of the most known market indices, the Euro Stoxx 50, to compute risk measures for this asset and highlight the main differences obtained by comparing the results of these two techniques. The data sample spans from January 2018 to November 2023, encompassing a total of 1509 observations. <\/p>\n\n\n\n<p>To retrieve our data through the <a href=\"https:\/\/eodhd.com\/\" target=\"_blank\" rel=\"noreferrer noopener\">EOD API service<\/a>, we first need to download and import the <a href=\"https:\/\/pypi.org\/project\/eod\/\" target=\"_blank\" rel=\"noreferrer noopener\">EOD Python package<\/a>, and then authenticate using your personal API key.  It&#8217;s recommendable to save your API keys in the environment variable.<\/p>\n\n\n\n            <div class=\"code__wrapper\">\n                <div class=\"code__content\">\n                    \n<pre class=\"wp-block-code has-white-color has-black-background-color has-text-color has-background\"><code lang=\"python\" class=\"language-python\">pip install eod<\/code><\/pre>\n\n                <\/div>\n                <div class=\"code__btns\">\n                    <button class=\"code__copy\" class=\"copy\" title=\"Copy url\">\n                        <svg class=\"code__copy__icon\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n                            <use xlink:href=\"\/img\/icons\/copy.svg#copy\"><\/use>\n                        <\/svg>\n                        <img decoding=\"async\" class=\"code__copy__approve\" alt=\"\" src=\"\/img\/approve_ico.svg\" loading=\"eager\">\n                    <\/button>\n                <\/div>\n            <\/div>\n        \n\n\n            <div class=\"code__wrapper\">\n                <div class=\"code__content\">\n                    \n<pre class=\"wp-block-code has-white-color has-black-background-color has-text-color has-background\"><code lang=\"python\" class=\"language-python\">import os\n# load the key from the environment variables\napi_key = os.environ['API_EOD']\n\nimport eod\nclient = EodHistoricalData(api_key)<\/code><\/pre>\n\n                <\/div>\n                <div class=\"code__btns\">\n                    <button class=\"code__copy\" class=\"copy\" title=\"Copy url\">\n                        <svg class=\"code__copy__icon\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n                            <use xlink:href=\"\/img\/icons\/copy.svg#copy\"><\/use>\n                        <\/svg>\n                        <img decoding=\"async\" class=\"code__copy__approve\" alt=\"\" src=\"\/img\/approve_ico.svg\" loading=\"eager\">\n                    <\/button>\n                <\/div>\n            <\/div>\n        \n\n\n<p class=\"has-text-align-center\"><a class=\"maxbutton-1 maxbutton maxbutton-subscribe-to-api external-css btn\" href=\"https:\/\/eodhd.com\/register\"><span class='mb-text'>Register &amp; Get Data<\/span><\/a><\/p>\n\n\n\n<p class=\"bordered_paragraph\">1. Use the \u201c<strong>demo<\/strong>\u201d API key to test our data from a limited set of tickers without registering: <a href=\"https:\/\/eodhistoricaldata.com\/financial-summary\/AAPL.US\" target=\"_blank\" rel=\"noreferrer noopener\">AAPL.US<\/a> | <a href=\"https:\/\/eodhistoricaldata.com\/financial-summary\/TSLA.US\" target=\"_blank\" rel=\"noreferrer noopener\">TSLA.US <\/a>| <a href=\"https:\/\/eodhistoricaldata.com\/financial-summary\/VTI.US\" target=\"_blank\" rel=\"noreferrer noopener\">VTI.US<\/a> | <a href=\"https:\/\/eodhistoricaldata.com\/financial-summary\/AMZN.US\" target=\"_blank\" rel=\"noreferrer noopener\">AMZN.US<\/a> | <a href=\"https:\/\/eodhistoricaldata.com\/financial-summary\/BTC-USD.CC\" target=\"_blank\" rel=\"noreferrer noopener\">BTC-USD<\/a> | <a href=\"https:\/\/eodhistoricaldata.com\/financial-summary\/EURUSD.FOREX\" target=\"_blank\" rel=\"noreferrer noopener\">EUR-USD<\/a><br><a href=\"https:\/\/eodhistoricaldata.com\/financial-summary\/AAPL.US\" target=\"_blank\" rel=\"noreferrer noopener\">Real-Time Data<\/a> and all of the APIs (except Bulk) are included without API calls limitations with these tickers and the demo key.<br>2. Register to get your free API key (limited to 20 API calls per day) with access to: <a href=\"https:\/\/eodhistoricaldata.com\/financial-apis\/api-for-historical-data-and-volumes\/\" target=\"_blank\" rel=\"noreferrer noopener\">End-Of-Day Historical Data<\/a> with only the past year for any ticker, and the <a href=\"https:\/\/eodhistoricaldata.com\/financial-apis\/api-for-historical-data-and-volumes\/\" target=\"_blank\" rel=\"noreferrer noopener\">List of tickers per Exchange<\/a>.<br>3. To unlock your API key, we recommend to choose the subscription plan which covers your needs.<\/p>\n\n\n\n<p>At this point, we are all set to run our first query. Historical prices can be downloaded using the <em>client.get_prices_eod<\/em> method by passing the stock ticker, data frequency, sorting criteria, and start data as arguments to the function. The query returns an object structured as list of a dictionaries containing daily price and volume information. For practicality, we apply the pandas function to convert it into a formatted table. Finally, we compute the daily logarithmic returns that will be used to calculate our volatility estimates.<\/p>\n\n\n\n            <div class=\"code__wrapper\">\n                <div class=\"code__content\">\n                    \n<pre class=\"wp-block-code has-white-color has-black-background-color has-text-color has-background\"><code lang=\"python\" class=\"language-python\">stoxx_data = client.get_prices_eod(\"STOXX.INDX\", period=\"d\", order='a', from_=\"2018-01-01\")<\/code><\/pre>\n\n                <\/div>\n                <div class=\"code__btns\">\n                    <button class=\"code__copy\" class=\"copy\" title=\"Copy url\">\n                        <svg class=\"code__copy__icon\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n                            <use xlink:href=\"\/img\/icons\/copy.svg#copy\"><\/use>\n                        <\/svg>\n                        <img decoding=\"async\" class=\"code__copy__approve\" alt=\"\" src=\"\/img\/approve_ico.svg\" loading=\"eager\">\n                    <\/button>\n                <\/div>\n            <\/div>\n        \n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"253\" height=\"200\" src=\"https:\/\/eodhd.com\/financial-academy\/wp-content\/uploads\/2023\/11\/Screenshot-.png\" alt=\"\" class=\"wp-image-3689\"\/><\/figure>\n<\/div>\n\n\n            <div class=\"code__wrapper\">\n                <div class=\"code__content\">\n                    \n<pre class=\"wp-block-code has-white-color has-black-background-color has-text-color has-background\"><code lang=\"python\" class=\"language-python\">stoxx_ts = pd.DataFrame(stoxx_data).set_index(\"date\")[\"adjusted_close\"] \nrets = np.log(stoxx_ts\/stoxx_ts.shift(1))[1:]<\/code><\/pre>\n\n                <\/div>\n                <div class=\"code__btns\">\n                    <button class=\"code__copy\" class=\"copy\" title=\"Copy url\">\n                        <svg class=\"code__copy__icon\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n                            <use xlink:href=\"\/img\/icons\/copy.svg#copy\"><\/use>\n                        <\/svg>\n                        <img decoding=\"async\" class=\"code__copy__approve\" alt=\"\" src=\"\/img\/approve_ico.svg\" loading=\"eager\">\n                    <\/button>\n                <\/div>\n            <\/div>\n        \n\n\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"855\" height=\"525\" src=\"https:\/\/eodhd.com\/financial-academy\/wp-content\/uploads\/2023\/11\/euro_stoxx_50_price.png\" alt=\"euro-stoxx-price-time-series\" class=\"wp-image-3753\" style=\"aspect-ratio:1.6285714285714286;width:840px;height:auto\"\/><figcaption class=\"wp-element-caption\">Image by  author<\/figcaption><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-sma-volatility-estimates\">SMA Volatility Estimates<\/h3>\n\n\n\n<p>In this example we construct three different equally weighted moving average volatility estimates for the Euro Stoxx 50 index, with T = 30 days, 60 days and 90 days respectively. The pandas <em>rolling<\/em> function allows us to iterate through the times series keeping a fixed look-back period. As we are dealing with daily returns, volatilities are multiplied by the square root of 250 (business days in a year) to obtain an annualized measure. <\/p>\n\n\n\n            <div class=\"code__wrapper\">\n                <div class=\"code__content\">\n                    \n<pre class=\"wp-block-code has-white-color has-black-background-color has-text-color has-background\"><code lang=\"python\" class=\"language-python\">std30 = rets.rolling(30).std()*<em>np.sqrt(250) <\/em>\n<em>std60 = rets.rolling(60).std()<\/em>*np.sqrt(250)\nstd90 = rets.rolling(90).std()*np.sqrt(250)\nstd_roll = pd.DataFrame({'30-day vols': std30, '60-day vols': std60, '90-day vols': std90})<\/code><\/pre>\n\n                <\/div>\n                <div class=\"code__btns\">\n                    <button class=\"code__copy\" class=\"copy\" title=\"Copy url\">\n                        <svg class=\"code__copy__icon\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n                            <use xlink:href=\"\/img\/icons\/copy.svg#copy\"><\/use>\n                        <\/svg>\n                        <img decoding=\"async\" class=\"code__copy__approve\" alt=\"\" src=\"\/img\/approve_ico.svg\" loading=\"eager\">\n                    <\/button>\n                <\/div>\n            <\/div>\n        \n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"855\" height=\"525\" src=\"https:\/\/eodhd.com\/financial-academy\/wp-content\/uploads\/2023\/11\/simple_moving_average_volatility.png\" alt=\"moving-averages-simple-volatility-risk-estimates-forecast\" class=\"wp-image-3755\"\/><figcaption class=\"wp-element-caption\">Image by author<\/figcaption><\/figure>\n\n\n\n<p>As we can see, the European index reacted quite strongly to the COVID-19 news. The 30-day volatility jumped from ~15% to over 60%! The 60-day and 90-day volatility never exceed the 50%, demonstrating a higher smoothness due to the longer rolling window. It&#8217;s interesting to not how the these two, the peak was reached after compared to short-term volatilities, showing a lagging effect, and that all the volatilities have a sudden drop after exactly 30, 60 and 90 days, when nothing special happened in the market. <\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-ewma-volatility-estimates\">EWMA Volatility Estimates<\/h3>\n\n\n\n<p>The effect of using a different value of lambda in EWMA volatility forecasts can be quite substantial. The graph shows volatility estimates obtained using different lambda values, \ud835\udf06 = (0.90, 0.97, 0.99). Note how, for high levels of \ud835\udf06, the EWMA becomes much less reactive, while persistence improves. This is similar to what was obtained in the SMA case above by increasing the length of the rolling window.<\/p>\n\n\n\n            <div class=\"code__wrapper\">\n                <div class=\"code__content\">\n                    \n<pre class=\"wp-block-code has-white-color has-black-background-color has-text-color has-background\"><code lang=\"python\" class=\"language-python\">def EWMA_Volatility(rets, lam):\n    sq_rets_sp500 = (rets**2).values\n    EWMA_var = np.zeros(len(sq_rets_sp500))\n    \n    for r in range(1, len(sq_rets_sp500)):\n        EWMA_var[r] = (1-lam)*sq_rets_sp500[r] + lam*EWMA_var[r-1]\n\n    EWMA_vol = np.sqrt(EWMA_var*250)\n    return pd.Series(EWMA_vol, index=rets.index, name =\"EWMA Vol {}\".format(lam))[1:]\n\newma99_stoxx = EWMA_Volatility(rets, 0.99)\newma97_stoxx = EWMA_Volatility(rets, 0.97)\newma90_stoxx = EWMA_Volatility(rets, 0.90)\newma_all = pd.DataFrame({'\ud835\udf06=0.99': ewma99_stoxx,'\ud835\udf06=0.97': ewma97_stoxx,'\ud835\udf06=0.90': ewma90_stoxx}, index=ewma90_stoxx.index)<\/code><\/pre>\n\n                <\/div>\n                <div class=\"code__btns\">\n                    <button class=\"code__copy\" class=\"copy\" title=\"Copy url\">\n                        <svg class=\"code__copy__icon\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n                            <use xlink:href=\"\/img\/icons\/copy.svg#copy\"><\/use>\n                        <\/svg>\n                        <img decoding=\"async\" class=\"code__copy__approve\" alt=\"\" src=\"\/img\/approve_ico.svg\" loading=\"eager\">\n                    <\/button>\n                <\/div>\n            <\/div>\n        \n\n\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"855\" height=\"525\" src=\"https:\/\/eodhd.com\/financial-academy\/wp-content\/uploads\/2023\/11\/EWMA_volatility_estimates.png\" alt=\"moving-averages-exponential-volatility-risk-estimates\" class=\"wp-image-3758\" style=\"aspect-ratio:1.6285714285714286;width:840px;height:auto\"\/><figcaption class=\"wp-element-caption\">Image by author<\/figcaption><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-a-final-comparison\">A final comparison<\/h3>\n\n\n\n<p>Let&#8217;s now compare our estimates obtained using a 60-day SMA and EWMA \ud835\udf06=0.95. When displaying the results on the same graph, it is evident how the two methods produce different risk measures. In particular, the EWMA estimate yields higher volatility than the equally weighted estimate but returns to typical levels faster due to its immunity to the leverage effect.<br><\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"855\" height=\"525\" src=\"https:\/\/eodhd.com\/financial-academy\/wp-content\/uploads\/2023\/11\/SMA_EWMA_volatility_risk.png\" alt=\"moving-averages-simple-exponential-volatility-risk-estimates\" class=\"wp-image-3759\"\/><figcaption class=\"wp-element-caption\">Image by author<\/figcaption><\/figure>\n\n\n\n<p>Finally, note that when computing EWMA estimates for covariances, the same value of lambda should be applied to all the variables to guarantee a semi-definite positive covariance matrix. In practice, different asset classes may react differently to market shocks, and imposing the same smoothing constant to all time series may yield less precise results. This constraint represents one of the main disadvantages of EWMA.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-conclusion\">Conclusion<\/h2>\n\n\n\n<p>Both Simple and Exponentially Weighted Moving Averages play essential roles in time series analysis. SMAs provide a straightforward yet potentially lagging representation of trends. On the contrary, EWMA&#8217;s adaptive nature offers a more responsive volatility estimate, particularly suited for capturing short-term fluctuations. In both cases, the choice of window length and the smoothing constant plays an important role in determining the level of persistence and responsiveness. The decision between the two methods ultimately depends on the specific needs of the analysis and the desired trade-off.<\/p>\n\n\n\n<p class=\"has-text-align-center\"><strong><a class=\"maxbutton-1 maxbutton maxbutton-subscribe-to-api external-css btn\" href=\"https:\/\/eodhd.com\/register\"><span class='mb-text'>Register &amp; Get Data<\/span><\/a><\/strong><\/p>\n\n\n\n<p>Full code available <a href=\"https:\/\/github.com\/gbaglini\/baglinifinance\">here<\/a><br>Website: <a href=\"https:\/\/baglinifinance.com\/\">baglinifinance.com<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Time series analysis is a critical component of understanding and predicting trends in various fields such as finance, economics, and environmental science. Two common methods used for smoothing time series data are simple, or equally weighted, Moving Averages (SMA) and Exponentially Weighted Moving Averages (EWMA). In this article, we will delve into the characteristics, advantages, [&hellip;]<\/p>\n","protected":false},"author":22,"featured_media":3779,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[42],"tags":[],"coding-language":[30],"ready-to-go-solution":[44],"qualification":[31],"financial-apis-category":[36],"financial-apis-manuals":[39],"class_list":["post-3674","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-stocks-data-analysis-examples","coding-language-python","ready-to-go-solution-python-financial-apis-sdk","qualification-experienced","financial-apis-category-stock-market-prices","financial-apis-manuals-end-of-day","has_thumb"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v21.9 (Yoast SEO v26.7) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Estimate Volatility with SMA and EWMA in Python | EODHD APIs Academy<\/title>\n<meta name=\"description\" content=\"In this article, we delve into the characteristics, advantages, and applications of SMA and EWMA for estimating time series volatility\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/eodhd.com\/financial-academy\/stocks-data-analysis-examples\/estimate-volatility-with-sma-and-ewma-in-python\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Estimate Volatility with SMA and EWMA in Python\" \/>\n<meta property=\"og:description\" content=\"In this article, we delve into the characteristics, advantages, and applications of SMA and EWMA for estimating time series volatility\" \/>\n<meta property=\"og:url\" content=\"https:\/\/eodhd.com\/financial-academy\/stocks-data-analysis-examples\/estimate-volatility-with-sma-and-ewma-in-python\" \/>\n<meta property=\"og:site_name\" content=\"Financial Academy\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/eodhistoricaldata\" \/>\n<meta property=\"article:published_time\" content=\"2023-11-14T15:22:28+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-02-05T11:53:51+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/eodhd.com\/financial-academy\/wp-content\/uploads\/2023\/11\/c.png\" \/>\n\t<meta property=\"og:image:width\" content=\"598\" \/>\n\t<meta property=\"og:image:height\" content=\"367\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Gianluca Baglini\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@EOD_data\" \/>\n<meta name=\"twitter:site\" content=\"@EOD_data\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Gianluca Baglini\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"8 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/eodhd.com\/financial-academy\/stocks-data-analysis-examples\/estimate-volatility-with-sma-and-ewma-in-python#article\",\"isPartOf\":{\"@id\":\"https:\/\/eodhd.com\/financial-academy\/stocks-data-analysis-examples\/estimate-volatility-with-sma-and-ewma-in-python\"},\"author\":{\"name\":\"Gianluca Baglini\",\"@id\":\"https:\/\/eodhd.com\/financial-academy\/#\/schema\/person\/6c95b0cef2acc2fbaebccff191d7027f\"},\"headline\":\"Estimate Volatility with SMA and EWMA in Python\",\"datePublished\":\"2023-11-14T15:22:28+00:00\",\"dateModified\":\"2025-02-05T11:53:51+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/eodhd.com\/financial-academy\/stocks-data-analysis-examples\/estimate-volatility-with-sma-and-ewma-in-python\"},\"wordCount\":1373,\"publisher\":{\"@id\":\"https:\/\/eodhd.com\/financial-academy\/#organization\"},\"image\":{\"@id\":\"https:\/\/eodhd.com\/financial-academy\/stocks-data-analysis-examples\/estimate-volatility-with-sma-and-ewma-in-python#primaryimage\"},\"thumbnailUrl\":\"https:\/\/eodhd.com\/financial-academy\/wp-content\/uploads\/2023\/11\/c.png\",\"articleSection\":[\"Stocks Data Analysis Examples\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/eodhd.com\/financial-academy\/stocks-data-analysis-examples\/estimate-volatility-with-sma-and-ewma-in-python\",\"url\":\"https:\/\/eodhd.com\/financial-academy\/stocks-data-analysis-examples\/estimate-volatility-with-sma-and-ewma-in-python\",\"name\":\"Estimate Volatility with SMA and EWMA in Python | EODHD APIs Academy\",\"isPartOf\":{\"@id\":\"https:\/\/eodhd.com\/financial-academy\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/eodhd.com\/financial-academy\/stocks-data-analysis-examples\/estimate-volatility-with-sma-and-ewma-in-python#primaryimage\"},\"image\":{\"@id\":\"https:\/\/eodhd.com\/financial-academy\/stocks-data-analysis-examples\/estimate-volatility-with-sma-and-ewma-in-python#primaryimage\"},\"thumbnailUrl\":\"https:\/\/eodhd.com\/financial-academy\/wp-content\/uploads\/2023\/11\/c.png\",\"datePublished\":\"2023-11-14T15:22:28+00:00\",\"dateModified\":\"2025-02-05T11:53:51+00:00\",\"description\":\"In this article, we delve into the characteristics, advantages, and applications of SMA and EWMA for estimating time series volatility\",\"breadcrumb\":{\"@id\":\"https:\/\/eodhd.com\/financial-academy\/stocks-data-analysis-examples\/estimate-volatility-with-sma-and-ewma-in-python#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/eodhd.com\/financial-academy\/stocks-data-analysis-examples\/estimate-volatility-with-sma-and-ewma-in-python\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/eodhd.com\/financial-academy\/stocks-data-analysis-examples\/estimate-volatility-with-sma-and-ewma-in-python#primaryimage\",\"url\":\"https:\/\/eodhd.com\/financial-academy\/wp-content\/uploads\/2023\/11\/c.png\",\"contentUrl\":\"https:\/\/eodhd.com\/financial-academy\/wp-content\/uploads\/2023\/11\/c.png\",\"width\":598,\"height\":367,\"caption\":\"volatility-correlation-models\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/eodhd.com\/financial-academy\/stocks-data-analysis-examples\/estimate-volatility-with-sma-and-ewma-in-python#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/eodhd.com\/financial-academy\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Estimate Volatility with SMA and EWMA in Python\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/eodhd.com\/financial-academy\/#website\",\"url\":\"https:\/\/eodhd.com\/financial-academy\/\",\"name\":\"Financial APIs Academy | EODHD\",\"description\":\"Financial Stock Market Academy\",\"publisher\":{\"@id\":\"https:\/\/eodhd.com\/financial-academy\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/eodhd.com\/financial-academy\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/eodhd.com\/financial-academy\/#organization\",\"name\":\"EODHD (EOD Historical Data)\",\"url\":\"https:\/\/eodhd.com\/financial-academy\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/eodhd.com\/financial-academy\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/eodhd.com\/financial-academy\/wp-content\/uploads\/2023\/12\/EODHD-Logo.png\",\"contentUrl\":\"https:\/\/eodhd.com\/financial-academy\/wp-content\/uploads\/2023\/12\/EODHD-Logo.png\",\"width\":159,\"height\":82,\"caption\":\"EODHD (EOD Historical Data)\"},\"image\":{\"@id\":\"https:\/\/eodhd.com\/financial-academy\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/eodhistoricaldata\",\"https:\/\/x.com\/EOD_data\",\"https:\/\/www.reddit.com\/r\/EODHistoricalData\/\",\"https:\/\/eod-historical-data.medium.com\/\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/eodhd.com\/financial-academy\/#\/schema\/person\/6c95b0cef2acc2fbaebccff191d7027f\",\"name\":\"Gianluca Baglini\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/eodhd.com\/financial-academy\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/2a3c6038fdaa1636ec4863020f9191a4991c58f0935313853fd01a4b88bfbee9?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/2a3c6038fdaa1636ec4863020f9191a4991c58f0935313853fd01a4b88bfbee9?s=96&d=mm&r=g\",\"caption\":\"Gianluca Baglini\"},\"description\":\"Financial &amp; Risk Analyst, Data Scientist, Python Developer, Owner of BagliniFinance blog\",\"sameAs\":[\"https:\/\/www.linkedin.com\/in\/gianluca-baglini\/\"],\"url\":\"https:\/\/eodhd.com\/financial-academy\/author\/gianlucabaglini\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Estimate Volatility with SMA and EWMA in Python | EODHD APIs Academy","description":"In this article, we delve into the characteristics, advantages, and applications of SMA and EWMA for estimating time series volatility","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/eodhd.com\/financial-academy\/stocks-data-analysis-examples\/estimate-volatility-with-sma-and-ewma-in-python","og_locale":"en_US","og_type":"article","og_title":"Estimate Volatility with SMA and EWMA in Python","og_description":"In this article, we delve into the characteristics, advantages, and applications of SMA and EWMA for estimating time series volatility","og_url":"https:\/\/eodhd.com\/financial-academy\/stocks-data-analysis-examples\/estimate-volatility-with-sma-and-ewma-in-python","og_site_name":"Financial Academy","article_publisher":"https:\/\/www.facebook.com\/eodhistoricaldata","article_published_time":"2023-11-14T15:22:28+00:00","article_modified_time":"2025-02-05T11:53:51+00:00","og_image":[{"width":598,"height":367,"url":"https:\/\/eodhd.com\/financial-academy\/wp-content\/uploads\/2023\/11\/c.png","type":"image\/png"}],"author":"Gianluca Baglini","twitter_card":"summary_large_image","twitter_creator":"@EOD_data","twitter_site":"@EOD_data","twitter_misc":{"Written by":"Gianluca Baglini","Est. reading time":"8 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/eodhd.com\/financial-academy\/stocks-data-analysis-examples\/estimate-volatility-with-sma-and-ewma-in-python#article","isPartOf":{"@id":"https:\/\/eodhd.com\/financial-academy\/stocks-data-analysis-examples\/estimate-volatility-with-sma-and-ewma-in-python"},"author":{"name":"Gianluca Baglini","@id":"https:\/\/eodhd.com\/financial-academy\/#\/schema\/person\/6c95b0cef2acc2fbaebccff191d7027f"},"headline":"Estimate Volatility with SMA and EWMA in Python","datePublished":"2023-11-14T15:22:28+00:00","dateModified":"2025-02-05T11:53:51+00:00","mainEntityOfPage":{"@id":"https:\/\/eodhd.com\/financial-academy\/stocks-data-analysis-examples\/estimate-volatility-with-sma-and-ewma-in-python"},"wordCount":1373,"publisher":{"@id":"https:\/\/eodhd.com\/financial-academy\/#organization"},"image":{"@id":"https:\/\/eodhd.com\/financial-academy\/stocks-data-analysis-examples\/estimate-volatility-with-sma-and-ewma-in-python#primaryimage"},"thumbnailUrl":"https:\/\/eodhd.com\/financial-academy\/wp-content\/uploads\/2023\/11\/c.png","articleSection":["Stocks Data Analysis Examples"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/eodhd.com\/financial-academy\/stocks-data-analysis-examples\/estimate-volatility-with-sma-and-ewma-in-python","url":"https:\/\/eodhd.com\/financial-academy\/stocks-data-analysis-examples\/estimate-volatility-with-sma-and-ewma-in-python","name":"Estimate Volatility with SMA and EWMA in Python | EODHD APIs Academy","isPartOf":{"@id":"https:\/\/eodhd.com\/financial-academy\/#website"},"primaryImageOfPage":{"@id":"https:\/\/eodhd.com\/financial-academy\/stocks-data-analysis-examples\/estimate-volatility-with-sma-and-ewma-in-python#primaryimage"},"image":{"@id":"https:\/\/eodhd.com\/financial-academy\/stocks-data-analysis-examples\/estimate-volatility-with-sma-and-ewma-in-python#primaryimage"},"thumbnailUrl":"https:\/\/eodhd.com\/financial-academy\/wp-content\/uploads\/2023\/11\/c.png","datePublished":"2023-11-14T15:22:28+00:00","dateModified":"2025-02-05T11:53:51+00:00","description":"In this article, we delve into the characteristics, advantages, and applications of SMA and EWMA for estimating time series volatility","breadcrumb":{"@id":"https:\/\/eodhd.com\/financial-academy\/stocks-data-analysis-examples\/estimate-volatility-with-sma-and-ewma-in-python#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/eodhd.com\/financial-academy\/stocks-data-analysis-examples\/estimate-volatility-with-sma-and-ewma-in-python"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/eodhd.com\/financial-academy\/stocks-data-analysis-examples\/estimate-volatility-with-sma-and-ewma-in-python#primaryimage","url":"https:\/\/eodhd.com\/financial-academy\/wp-content\/uploads\/2023\/11\/c.png","contentUrl":"https:\/\/eodhd.com\/financial-academy\/wp-content\/uploads\/2023\/11\/c.png","width":598,"height":367,"caption":"volatility-correlation-models"},{"@type":"BreadcrumbList","@id":"https:\/\/eodhd.com\/financial-academy\/stocks-data-analysis-examples\/estimate-volatility-with-sma-and-ewma-in-python#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/eodhd.com\/financial-academy\/"},{"@type":"ListItem","position":2,"name":"Estimate Volatility with SMA and EWMA in Python"}]},{"@type":"WebSite","@id":"https:\/\/eodhd.com\/financial-academy\/#website","url":"https:\/\/eodhd.com\/financial-academy\/","name":"Financial APIs Academy | EODHD","description":"Financial Stock Market Academy","publisher":{"@id":"https:\/\/eodhd.com\/financial-academy\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/eodhd.com\/financial-academy\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/eodhd.com\/financial-academy\/#organization","name":"EODHD (EOD Historical Data)","url":"https:\/\/eodhd.com\/financial-academy\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/eodhd.com\/financial-academy\/#\/schema\/logo\/image\/","url":"https:\/\/eodhd.com\/financial-academy\/wp-content\/uploads\/2023\/12\/EODHD-Logo.png","contentUrl":"https:\/\/eodhd.com\/financial-academy\/wp-content\/uploads\/2023\/12\/EODHD-Logo.png","width":159,"height":82,"caption":"EODHD (EOD Historical Data)"},"image":{"@id":"https:\/\/eodhd.com\/financial-academy\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/eodhistoricaldata","https:\/\/x.com\/EOD_data","https:\/\/www.reddit.com\/r\/EODHistoricalData\/","https:\/\/eod-historical-data.medium.com\/"]},{"@type":"Person","@id":"https:\/\/eodhd.com\/financial-academy\/#\/schema\/person\/6c95b0cef2acc2fbaebccff191d7027f","name":"Gianluca Baglini","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/eodhd.com\/financial-academy\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/2a3c6038fdaa1636ec4863020f9191a4991c58f0935313853fd01a4b88bfbee9?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/2a3c6038fdaa1636ec4863020f9191a4991c58f0935313853fd01a4b88bfbee9?s=96&d=mm&r=g","caption":"Gianluca Baglini"},"description":"Financial &amp; Risk Analyst, Data Scientist, Python Developer, Owner of BagliniFinance blog","sameAs":["https:\/\/www.linkedin.com\/in\/gianluca-baglini\/"],"url":"https:\/\/eodhd.com\/financial-academy\/author\/gianlucabaglini"}]}},"jetpack_featured_media_url":"https:\/\/eodhd.com\/financial-academy\/wp-content\/uploads\/2023\/11\/c.png","jetpack_shortlink":"https:\/\/wp.me\/pdOdVT-Xg","jetpack_sharing_enabled":true,"acf":[],"_links":{"self":[{"href":"https:\/\/eodhd.com\/financial-academy\/wp-json\/wp\/v2\/posts\/3674","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/eodhd.com\/financial-academy\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/eodhd.com\/financial-academy\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/eodhd.com\/financial-academy\/wp-json\/wp\/v2\/users\/22"}],"replies":[{"embeddable":true,"href":"https:\/\/eodhd.com\/financial-academy\/wp-json\/wp\/v2\/comments?post=3674"}],"version-history":[{"count":57,"href":"https:\/\/eodhd.com\/financial-academy\/wp-json\/wp\/v2\/posts\/3674\/revisions"}],"predecessor-version":[{"id":6237,"href":"https:\/\/eodhd.com\/financial-academy\/wp-json\/wp\/v2\/posts\/3674\/revisions\/6237"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/eodhd.com\/financial-academy\/wp-json\/wp\/v2\/media\/3779"}],"wp:attachment":[{"href":"https:\/\/eodhd.com\/financial-academy\/wp-json\/wp\/v2\/media?parent=3674"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/eodhd.com\/financial-academy\/wp-json\/wp\/v2\/categories?post=3674"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/eodhd.com\/financial-academy\/wp-json\/wp\/v2\/tags?post=3674"},{"taxonomy":"coding-language","embeddable":true,"href":"https:\/\/eodhd.com\/financial-academy\/wp-json\/wp\/v2\/coding-language?post=3674"},{"taxonomy":"ready-to-go-solution","embeddable":true,"href":"https:\/\/eodhd.com\/financial-academy\/wp-json\/wp\/v2\/ready-to-go-solution?post=3674"},{"taxonomy":"qualification","embeddable":true,"href":"https:\/\/eodhd.com\/financial-academy\/wp-json\/wp\/v2\/qualification?post=3674"},{"taxonomy":"financial-apis-category","embeddable":true,"href":"https:\/\/eodhd.com\/financial-academy\/wp-json\/wp\/v2\/financial-apis-category?post=3674"},{"taxonomy":"financial-apis-manuals","embeddable":true,"href":"https:\/\/eodhd.com\/financial-academy\/wp-json\/wp\/v2\/financial-apis-manuals?post=3674"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}