{"id":2756,"date":"2023-10-20T14:26:25","date_gmt":"2023-10-20T14:26:25","guid":{"rendered":"https:\/\/eodhd.com\/financial-academy\/?p=2756"},"modified":"2025-02-05T12:08:06","modified_gmt":"2025-02-05T12:08:06","slug":"detecting-ranging-and-trending-markets-with-choppiness-index-in-python","status":"publish","type":"post","link":"https:\/\/eodhd.com\/financial-academy\/backtesting-strategies-examples\/detecting-ranging-and-trending-markets-with-choppiness-index-in-python","title":{"rendered":"Detecting Ranging and Trending Markets with Choppiness Index in Python"},"content":{"rendered":"\n<p id=\"0259\">Every technical indicator out there is simply great and unique in its own perspective and usage. But most of them never fail to fall into one and the same pitfall &#8211; which is the ranging markets. What is a ranging market? Ranging markets are markets that show no trend or momentum but move back and forth between specific high and low price ranges (these markets are also called choppy, sideways, and flat markets). Technical indicators are prone to revealing false entry and exit points while markets are ranging. Fortunately, we have a set of indicators that are designed particularly to observe whether a market is ranging or not. Such indicators are called volatility indicators.<\/p>\n\n\n\n<p id=\"e52f\">There are a lot of them that come under this category, but the one that dominates the game is the Choppiness Index. In this article, we will first understand the concept of the Choppiness Index and how it\u2019s being calculated and then code the indicator from scratch in Python. We will also discuss how to use the Choppiness Index to detect ranging and trending periods in a market.<\/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<h1 class=\"wp-block-heading\" id=\"487d\">Volatility and ATR<\/h1>\n\n\n\n<p id=\"7471\">Before jumping on to exploring&nbsp;the Choppiness Index, it is essential to have&nbsp;some basic idea of two important concepts: Volatility&nbsp;and&nbsp;Average True Range (ATR).&nbsp;Volatility is the measure of the magnitude of price variation or dispersion. The higher the volatility, the higher the risk, and vice-versa. People having expertise in this concept will have the possibility to hold a tremendous edge in the market. We have tons of tools to calculate the Volatility of a market, but none can achieve a hundred percent accuracy in measuring&nbsp;it; however, there are some that have the potential to calculate with more accuracy. One such tool is the&nbsp;Average True Range, shortly known as ATR.<\/p>\n\n\n\n<p id=\"bedc\">Founded by Wilder Wiles, the&nbsp;Average True Range is a technical indicator that measures how much an asset moves on average.&nbsp;It is a lagging indicator meaning that&nbsp;it takes into account the historical data of an asset to measure the current value&nbsp;but it\u2019s&nbsp;not capable of predicting the future data points.&nbsp;This is not considered as a drawback while using ATR as it\u2019s one of the indicators to&nbsp;track the volatility of a market&nbsp;more accurately. Along with being a lagging indicator, ATR is also a non-directional indicator meaning that the movement of ATR is inversely proportional to the actual movement of the market. To calculate ATR, it is requisite to follow two steps:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Calculate&nbsp;True Range (TR):&nbsp;A True Range of an asset is&nbsp;calculated by taking the greatest values of three price differences&nbsp;which are: market&nbsp;high minus market low,&nbsp;market high minus previous market close,&nbsp;and previous market close minus market low. It can be represented as follows:<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-preformatted has-background\" style=\"background-color:#abb7c217\">MAX [ {HIGH - LOW}, {HIGH - P.CLOSE}, {P.CLOSE - LOW} ]\n\nwhere,\nMAX = Maximum values\nHIGH = Market High\nLOW = Market Low\nP.CLOSE = Previous market close<\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Calculate ATR:&nbsp;The calculation for the&nbsp;Average True Range is simple.&nbsp;We just have to&nbsp;take a smoothed average of the previously calculated True Range values for a specified number of periods.&nbsp;The smoothed average is not just any SMA or EMA but an own type of smoothed average created by Wilder Wiles himself but there aren&#8217;t any restrictions in using other MAs too. In this article, we will be using SMA rather than the custom moving average created by the founder of the indicator to make things simple. The&nbsp;calculation of ATR with a traditional setting of 14 as the number of periods can be represented as follows:<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-preformatted has-background\" style=\"background-color:#abb7c217\">ATR 14 = SMA 14 [ TR ]\n\nwhere,\nATR 14 = 14 Period Average True Range\nSMA 14 = 14 Period Simple Moving Average\nTR = True Range<\/pre>\n\n\n\n<p>While using ATR as an indicator for trading purposes, traders must ensure that&nbsp;they are more cautious than ever, as the indicator is very lagging.&nbsp;Now that we have an understanding of what volatility and Average True Range are, let\u2019s dive into the main concept of this article: the Choppiness Index.<\/p>\n\n\n\n<h1 class=\"wp-block-heading\" id=\"2a35\">Choppiness Index<\/h1>\n\n\n\n<p id=\"9d15\">The Choppiness Index is a volatility indicator&nbsp;that is used to identify whether a market is ranging or trending. The characteristics of the Choppiness Index are almost similar to ATR. It is a&nbsp;lagging and non-directional indicator&nbsp;whose&nbsp;values rise when the market is bound to consolidate&nbsp;and&nbsp;decrease in value when the market shows high momentum or price actions. The calculation of the Choppiness Index involves two steps:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>ATR calculation:&nbsp;In this step, the ATR of an asset is calculated with one as the specified number of periods.<\/li>\n\n\n\n<li>Choppiness Index calculation:&nbsp;To calculate the&nbsp;Choppiness Index with a traditional setting of 14 as the lookback period is calculated by first taking log 10 of the value received by dividing the 14-day total of the previously calculated ATR 1 by the difference between the 14-day highest high and 14-day lowest low.&nbsp;This value is then divided by log 10 of the lookback period and finally multiplied by 100. This might sound confusing but will be easy to understand once you see the representation of the calculation:<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-preformatted has-background\" style=\"background-color:#abb7c217\">CI14 = 100 * LOG10 [14D ATR1 SUM\/(14D HIGHH - 14D LOWL)] \/ LOG10(14)\n\nwhere,\nCI14 = 14-day Choppiness Index\n14D ATR1 SUM = 14-day sum of ATR with 1 as lookback period\n14D HIGHH = 14-day highest high\n14D LOWL - 14-day lowest low<\/pre>\n\n\n\n<p>This concludes our theory part on the Choppiness Index. Now let\u2019s code the indicator from scratch in Python. Before moving on, a note on disclaimer: This article\u2019s sole purpose is to educate people and must be considered as an information piece but not as investment advice or so.<\/p>\n\n\n\n<h1 class=\"wp-block-heading\" id=\"f50e\">Implementation in Python<\/h1>\n\n\n\n<p id=\"c7e8\">Our process starts with importing the essential packages into our Python environment. Then, we will be pulling the historical stock data of Tesla using the <code>eod<\/code> Python package provided by&nbsp;<a href=\"https:\/\/eodhd.com\/\" target=\"_blank\" rel=\"noreferrer noopener\">EOD Historical Data<\/a>&nbsp;(EODHD). After that, we will build the Choppiness Index from scratch.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"2010\">Step-1: Importing Packages<\/h2>\n\n\n\n<p id=\"7b26\">Importing the required packages into the Python environment is a non-skippable step. The primary packages are going to be eodhd for extracting historical stock data, Pandas for data formatting and manipulations, NumPy to work with arrays and for complex functions, and Matplotlib for plotting purposes. The secondary packages are going to be Math for mathematical functions and Termcolor for font customization (optional).<\/p>\n\n\n\n<p id=\"b44c\"><strong>Python Implementation:<\/strong><\/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\"># IMPORTING PACKAGES\n\nimport numpy as np\nimport matplotlib.pyplot as plt\nimport pandas as pd\nfrom termcolor import colored as cl\nfrom math import floor\nfrom eodhd import APIClient\n\nplt.rcParams['figure.figsize'] = (20,10)\nplt.style.use('fivethirtyeight')<\/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>With the required packages imported into Python, we can proceed to fetch historical data for Tesla using EODHD&#8217;s <code>eodhd<\/code> Python library. Also, if you haven\u2019t installed any of the imported packages, make sure to do so using the&nbsp;<code>pip<\/code>&nbsp;command in your terminal.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"a9f4\">Step-2: API Key Activation<\/h2>\n\n\n\n<p id=\"c710\">It is essential to register the EODHD API key with the package in order to use its functions. If you don\u2019t have an EODHD API key, firstly, head over to their&nbsp;<a href=\"https:\/\/eodhd.com\/\" target=\"_blank\" rel=\"noreferrer noopener\">website<\/a>, then, finish the&nbsp;<a href=\"https:\/\/eodhd.com\/register\" target=\"_blank\" rel=\"noreferrer noopener\">registration<\/a>&nbsp;process to create an EODHD account, and finally, navigate to the \u2018<a href=\"https:\/\/eodhd.com\/cp\/settings\" target=\"_blank\" rel=\"noreferrer noopener\">Settings<\/a>\u2019 page where you could find your secret EODHD API key. It is important to ensure that this secret API key is not revealed to anyone. You can activate the API key by following this code:<\/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\">api_key = '&lt;YOUR API KEY&gt;'\nclient = APIClient(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 id=\"fd3d\">The code is pretty simple. In the first line, we are storing the secret EODHD API key into the&nbsp;<code>api_key<\/code>&nbsp;and then in the second line, we are using the&nbsp;<code>APIClient<\/code>&nbsp;class provided by the&nbsp;<code>eodhd<\/code>&nbsp;package to activate the API key and stored the response in the&nbsp;<code>client<\/code>&nbsp;variable.<\/p>\n\n\n\n<p id=\"4634\">Note that you need to replace&nbsp;<code>&lt;YOUR API KEY&gt;<\/code>&nbsp;with your secret EODHD API key. Apart from directly storing the API key with text, there are other ways for better security such as utilizing environmental variables, and so on.<\/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<h2 class=\"wp-block-heading\" id=\"8568\">Step-3: Extracting Historical Data<\/h2>\n\n\n\n<p id=\"ac40\">Before heading into the extraction part, it is first essential to have some background about historical or end-of-day data. In a nutshell, historical data consists of information accumulated over a period of time. It helps in identifying patterns and trends in the data. It also assists in studying market behavior. Now, you can easily extract the historical data of any tradeable assets using the&nbsp;<code>eod<\/code>&nbsp;package by following this code:<\/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\"># EXTRACTING HISTORICAL DATA\n\ndef get_historical_data(ticker, start_date):\n    json_resp = client.get_eod_historical_stock_market_data(symbol = ticker, period = 'd', from_date = start_date, order = 'a')\n    df = pd.DataFrame(json_resp)\n    df = df.set_index('date')\n    df.index = pd.to_datetime(df.index)\n    return df\n\ntsla = get_historical_data('TSLA', '2020-01-01')\ntsla.tail()<\/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 id=\"c103\">In the above code, we are using the&nbsp;<code>get_eod_historical_stock_market_data<\/code>&nbsp;function provided by the <code>eodhd<\/code> package to extract the split-adjusted historical stock data of Tesla. The function consists of the following parameters:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>the&nbsp;<code>ticker<\/code>&nbsp;parameter where the symbol of the stock we are interested in extracting the data should be mentioned<\/li>\n\n\n\n<li>the&nbsp;<code>period<\/code>&nbsp;refers to the time interval between each data point (one-day interval in our case).<\/li>\n\n\n\n<li>the&nbsp;<code>from_date<\/code>&nbsp;and&nbsp;<code>to_date<\/code>&nbsp;parameters which indicate the starting and ending date of the data respectively. The format of the input should be \u201cYYYY-MM-DD\u201d<\/li>\n\n\n\n<li>the&nbsp;<code>order<\/code>&nbsp;parameter which is an optional parameter that can be used to order the dataframe either in ascending (<code>a<\/code>) or descending (<code>d<\/code>). It is ordered based on the dates.<\/li>\n<\/ul>\n\n\n\n<p id=\"a294\">After extracting the historical data, we are performing some data-wrangling processes to clean and format the data. The final dataframe looks like this:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"941\" height=\"455\" src=\"https:\/\/eodhd.com\/financial-academy\/wp-content\/uploads\/2023\/10\/image-11.png\" alt=\"\" class=\"wp-image-2758\"\/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"e0a6\">Step-3: Choppiness Index Calculation<\/h2>\n\n\n\n<p id=\"2e85\">In this step, we are going to calculate the values of the Choppiness Index with 14 as the lookback period using the Choppiness Index formula we discussed before.<\/p>\n\n\n\n<p id=\"d3f9\"><strong>Python Implementation:<\/strong><\/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 get_ci(high, low, close, lookback):\n    tr1 = pd.DataFrame(high - low).rename(columns = {0:'tr1'})\n    tr2 = pd.DataFrame(abs(high - close.shift(1))).rename(columns = {0:'tr2'})\n    tr3 = pd.DataFrame(abs(low - close.shift(1))).rename(columns = {0:'tr3'})\n    frames = [tr1, tr2, tr3]\n    tr = pd.concat(frames, axis = 1, join = 'inner').dropna().max(axis = 1)\n    atr = tr.rolling(1).mean()\n    highh = high.rolling(lookback).max()\n    lowl = low.rolling(lookback).min()\n    ci = 100 * np.log10((atr.rolling(lookback).sum()) \/ (highh - lowl)) \/ np.log10(lookback)\n    return ci\n\ntsla['ci_14'] = get_ci(tsla['high'], tsla['low'], tsla['close'], 14)\ntsla = tsla.dropna()\ntsla.tail()<\/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 id=\"f10c\"><strong>Output:<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1094\" height=\"461\" src=\"https:\/\/eodhd.com\/financial-academy\/wp-content\/uploads\/2023\/10\/image-12.png\" alt=\"\" class=\"wp-image-2759\"\/><\/figure>\n\n\n\n<p id=\"f335\"><strong>Code Explanation:<\/strong>&nbsp;First we are defining a function named \u2018get_ci\u2019 that takes the stock\u2019s high price data (\u2018high\u2019), low price data (\u2018low\u2019), close price data (\u2018close\u2019), and the lookback period as parameters.<\/p>\n\n\n\n<p id=\"d5da\">Inside the function, we are first finding the three differences that are essential for the calculation of True Range. To calculate TR, we are picking the maximum values from those three differences using the \u2018max\u2019 function provided by the Pandas package. With the lookback period as 1, we are taking the SMA of TR using the \u2018rolling\u2019 and \u2018mean\u2019 function to calculate the Average True Index and stored the values into the \u2018atr\u2019 variable. Next, we are defining two variables \u2018highh\u2019 and \u2018lowl\u2019 to store the highest high and lowest low of the stock for a specified lookback period. Now, we are substituting all the calculated values into the formula we discussed before to get the values of the Choppiness Index.<\/p>\n\n\n\n<p id=\"2669\">Finally, we are calling the defined function to get the Choppiness Index values of Tesla with the traditional lookback period of 14.<\/p>\n\n\n\n<h1 class=\"wp-block-heading\" id=\"b408\">Using Choppiness Index<\/h1>\n\n\n\n<p id=\"5d2e\">The values of the Choppiness Index bound between 0 to 100, hence acting as a range-bound oscillator. The closer the values \u0444\u043a\u0443 to 100, the higher the choppiness, and vice-versa. Usually, two levels are constructed above and below the Choppiness Index plot which is used to identify whether a market is ranging or trending. The above level is usually plotted at a higher threshold of 61.8 and if the values of the Choppiness Index are equal to or above this threshold, then the market is considered to be ranging or consolidating. Likewise, the below level is plotted at a lower threshold of 38.2 and if the Choppiness Index has a reading of or below this threshold, then the market is considered to be trending. The usage of the Choppiness Index can be represented as follows:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted has-background\" style=\"background-color:#abb7c217\">IF CHOPPINESS INDEX &gt;= 61.8 --&gt; MARKET IS CONSOLIDATING\nIF CHOPPINESS INDEX &lt;= 38.2 --&gt; MARKET IS TRENDING<\/pre>\n\n\n\n<p id=\"71a1\">Now let\u2019s use the Choppiness Index to identify the ranging and trending market periods of Tesla by plotting the calculated values in python.<\/p>\n\n\n\n<p id=\"7be1\"><strong>Python Implementation:<\/strong><\/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\">ax1 = plt.subplot2grid((11,1,), (0,0), rowspan = 5, colspan = 1)\nax2 = plt.subplot2grid((11,1,), (6,0), rowspan = 4, colspan = 1)\nax1.plot(tsla['close'], linewidth = 2.5, color = '#2196f3')\nax1.set_title('TSLA CLOSING PRICES')\nax2.plot(tsla['ci_14'], linewidth = 2.5, color = '#fb8c00')\nax2.axhline(38.2, linestyle = '--', linewidth = 1.5, color = 'grey')\nax2.axhline(61.8, linestyle = '--', linewidth = 1.5, color = 'grey')\nax2.set_title('TSLA CHOPPINESS INDEX 14')\nplt.show()<\/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 id=\"cba6\"><strong>Output:<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1801\" height=\"809\" src=\"https:\/\/eodhd.com\/financial-academy\/wp-content\/uploads\/2023\/10\/image-13.png\" alt=\"\" class=\"wp-image-2760\"\/><\/figure>\n\n\n\n<p id=\"df54\">The above&nbsp;chart is separated into two panels: the above panel with the closing price of Tesla and the lower panel with the values of the 14-day Choppiness Index of Tesla. As you can see, there are two lines plotted above and below the Choppiness Index plot which represents the two thresholds used to identify the market movement. Tesla, being a volatile stock with higher price movements, has frequent readings below the lower threshold of 38.2. This means, that Tesla shows huge momentum with higher volatility. We can confirm the readings of the Choppiness Index by seeing the actual price movements parallelly. Likewise, in some places, the Choppiness Index readings exceed the higher threshold of 61.8, representing that the stock is consolidating. This is the traditional and the right way to use the Choppiness Index in the real-world market.<\/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<h1 class=\"wp-block-heading\" id=\"a600\">Final Thoughts!<\/h1>\n\n\n\n<p id=\"5f90\">After a long process of theory and coding, we have successfully gained some understanding of what the Choppiness Index is all about and its calculation and usage. It might seem to be a simple indicator but it\u2019s very useful while trading and saves you from depleting your capital. Since the Choppiness Index is very lagging, ensure that you\u2019re more cautious than ever while using it for trading purposes. Also, you should not completely rely just on the Choppiness Index for generating entry and exit points but can be used as a filter for your actual trading strategy. There are two things to remember while using the Choppiness Index in the real-world market:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Strategy Optimization:<\/strong>&nbsp;The Choppiness Index is not just about the higher and lower threshold but it has the potential to be more. So, before entering the real-world market, make sure that you have a robust and optimized trading strategy that uses the Choppiness Index as a filter.<\/li>\n\n\n\n<li><strong>Backtesting:<\/strong>&nbsp;Drawing conclusions by just backtesting the algorithm in one asset or so won\u2019t be effective and sometimes can even lead to unexpected turns. The real-world market doesn&#8217;t work the same every time. In order to make better trades, try backtesting the trading strategy with different assets and modify the strategy if needed.<\/li>\n<\/ul>\n\n\n\n<p id=\"c2f3\">That\u2019s it! Hope you learned something useful from this article. Happy learning!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Every technical indicator out there is simply great and unique in its own perspective and usage. But most of them never fail to fall into one and the same pitfall &#8211; which is the ranging markets. What is a ranging market? Ranging markets are markets that show no trend or momentum but move back and [&hellip;]<\/p>\n","protected":false},"author":18,"featured_media":2757,"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":[65,42],"tags":[],"coding-language":[30],"ready-to-go-solution":[56],"qualification":[31],"financial-apis-category":[36],"financial-apis-manuals":[39],"class_list":["post-2756","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-backtesting-strategies-examples","category-stocks-data-analysis-examples","coding-language-python","ready-to-go-solution-eodhd-python-financial-library","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>Mastering the Trending Markets Choppiness Index Python | EODHD APIs Academy<\/title>\n<meta name=\"description\" content=\"Find out how the Choppiness Index in Python can help you navigate choppy markets and make better trading decisions\" \/>\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\/backtesting-strategies-examples\/detecting-ranging-and-trending-markets-with-choppiness-index-in-python\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Detecting Ranging and Trending Markets with Choppiness Index in Python\" \/>\n<meta property=\"og:description\" content=\"Find out how the Choppiness Index in Python can help you navigate choppy markets and make better trading decisions\" \/>\n<meta property=\"og:url\" content=\"https:\/\/eodhd.com\/financial-academy\/backtesting-strategies-examples\/detecting-ranging-and-trending-markets-with-choppiness-index-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-10-20T14:26:25+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-02-05T12:08:06+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/eodhd.com\/financial-academy\/wp-content\/uploads\/2023\/10\/image-10.png\" \/>\n\t<meta property=\"og:image:width\" content=\"828\" \/>\n\t<meta property=\"og:image:height\" content=\"621\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Nikhil Adithyan\" \/>\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=\"Nikhil Adithyan\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"11 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/eodhd.com\/financial-academy\/backtesting-strategies-examples\/detecting-ranging-and-trending-markets-with-choppiness-index-in-python#article\",\"isPartOf\":{\"@id\":\"https:\/\/eodhd.com\/financial-academy\/backtesting-strategies-examples\/detecting-ranging-and-trending-markets-with-choppiness-index-in-python\"},\"author\":{\"name\":\"Nikhil Adithyan\",\"@id\":\"https:\/\/eodhd.com\/financial-academy\/#\/schema\/person\/67681e71050cf7d8d0efb91fee5f0402\"},\"headline\":\"Detecting Ranging and Trending Markets with Choppiness Index in Python\",\"datePublished\":\"2023-10-20T14:26:25+00:00\",\"dateModified\":\"2025-02-05T12:08:06+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/eodhd.com\/financial-academy\/backtesting-strategies-examples\/detecting-ranging-and-trending-markets-with-choppiness-index-in-python\"},\"wordCount\":2220,\"publisher\":{\"@id\":\"https:\/\/eodhd.com\/financial-academy\/#organization\"},\"image\":{\"@id\":\"https:\/\/eodhd.com\/financial-academy\/backtesting-strategies-examples\/detecting-ranging-and-trending-markets-with-choppiness-index-in-python#primaryimage\"},\"thumbnailUrl\":\"https:\/\/eodhd.com\/financial-academy\/wp-content\/uploads\/2023\/10\/image-10.png\",\"articleSection\":[\"Backtesting Strategies Examples\",\"Stocks Data Analysis Examples\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/eodhd.com\/financial-academy\/backtesting-strategies-examples\/detecting-ranging-and-trending-markets-with-choppiness-index-in-python\",\"url\":\"https:\/\/eodhd.com\/financial-academy\/backtesting-strategies-examples\/detecting-ranging-and-trending-markets-with-choppiness-index-in-python\",\"name\":\"Mastering the Trending Markets Choppiness Index Python | EODHD APIs Academy\",\"isPartOf\":{\"@id\":\"https:\/\/eodhd.com\/financial-academy\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/eodhd.com\/financial-academy\/backtesting-strategies-examples\/detecting-ranging-and-trending-markets-with-choppiness-index-in-python#primaryimage\"},\"image\":{\"@id\":\"https:\/\/eodhd.com\/financial-academy\/backtesting-strategies-examples\/detecting-ranging-and-trending-markets-with-choppiness-index-in-python#primaryimage\"},\"thumbnailUrl\":\"https:\/\/eodhd.com\/financial-academy\/wp-content\/uploads\/2023\/10\/image-10.png\",\"datePublished\":\"2023-10-20T14:26:25+00:00\",\"dateModified\":\"2025-02-05T12:08:06+00:00\",\"description\":\"Find out how the Choppiness Index in Python can help you navigate choppy markets and make better trading decisions\",\"breadcrumb\":{\"@id\":\"https:\/\/eodhd.com\/financial-academy\/backtesting-strategies-examples\/detecting-ranging-and-trending-markets-with-choppiness-index-in-python#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/eodhd.com\/financial-academy\/backtesting-strategies-examples\/detecting-ranging-and-trending-markets-with-choppiness-index-in-python\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/eodhd.com\/financial-academy\/backtesting-strategies-examples\/detecting-ranging-and-trending-markets-with-choppiness-index-in-python#primaryimage\",\"url\":\"https:\/\/eodhd.com\/financial-academy\/wp-content\/uploads\/2023\/10\/image-10.png\",\"contentUrl\":\"https:\/\/eodhd.com\/financial-academy\/wp-content\/uploads\/2023\/10\/image-10.png\",\"width\":828,\"height\":621},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/eodhd.com\/financial-academy\/backtesting-strategies-examples\/detecting-ranging-and-trending-markets-with-choppiness-index-in-python#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/eodhd.com\/financial-academy\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Detecting Ranging and Trending Markets with Choppiness Index 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\/67681e71050cf7d8d0efb91fee5f0402\",\"name\":\"Nikhil Adithyan\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/eodhd.com\/financial-academy\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/eb53ce41bde412555cee22b8b4c09c2ff51625fff05ba3696b20cac7a7c0d938?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/eb53ce41bde412555cee22b8b4c09c2ff51625fff05ba3696b20cac7a7c0d938?s=96&d=mm&r=g\",\"caption\":\"Nikhil Adithyan\"},\"description\":\"Founder at BacktestZone | Streamlit Student Ambassador | FinTech &amp; Quantitative Finance enthusiast\",\"url\":\"https:\/\/eodhd.com\/financial-academy\/author\/nikhiladithyan\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Mastering the Trending Markets Choppiness Index Python | EODHD APIs Academy","description":"Find out how the Choppiness Index in Python can help you navigate choppy markets and make better trading decisions","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\/backtesting-strategies-examples\/detecting-ranging-and-trending-markets-with-choppiness-index-in-python","og_locale":"en_US","og_type":"article","og_title":"Detecting Ranging and Trending Markets with Choppiness Index in Python","og_description":"Find out how the Choppiness Index in Python can help you navigate choppy markets and make better trading decisions","og_url":"https:\/\/eodhd.com\/financial-academy\/backtesting-strategies-examples\/detecting-ranging-and-trending-markets-with-choppiness-index-in-python","og_site_name":"Financial Academy","article_publisher":"https:\/\/www.facebook.com\/eodhistoricaldata","article_published_time":"2023-10-20T14:26:25+00:00","article_modified_time":"2025-02-05T12:08:06+00:00","og_image":[{"width":828,"height":621,"url":"https:\/\/eodhd.com\/financial-academy\/wp-content\/uploads\/2023\/10\/image-10.png","type":"image\/png"}],"author":"Nikhil Adithyan","twitter_card":"summary_large_image","twitter_creator":"@EOD_data","twitter_site":"@EOD_data","twitter_misc":{"Written by":"Nikhil Adithyan","Est. reading time":"11 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/eodhd.com\/financial-academy\/backtesting-strategies-examples\/detecting-ranging-and-trending-markets-with-choppiness-index-in-python#article","isPartOf":{"@id":"https:\/\/eodhd.com\/financial-academy\/backtesting-strategies-examples\/detecting-ranging-and-trending-markets-with-choppiness-index-in-python"},"author":{"name":"Nikhil Adithyan","@id":"https:\/\/eodhd.com\/financial-academy\/#\/schema\/person\/67681e71050cf7d8d0efb91fee5f0402"},"headline":"Detecting Ranging and Trending Markets with Choppiness Index in Python","datePublished":"2023-10-20T14:26:25+00:00","dateModified":"2025-02-05T12:08:06+00:00","mainEntityOfPage":{"@id":"https:\/\/eodhd.com\/financial-academy\/backtesting-strategies-examples\/detecting-ranging-and-trending-markets-with-choppiness-index-in-python"},"wordCount":2220,"publisher":{"@id":"https:\/\/eodhd.com\/financial-academy\/#organization"},"image":{"@id":"https:\/\/eodhd.com\/financial-academy\/backtesting-strategies-examples\/detecting-ranging-and-trending-markets-with-choppiness-index-in-python#primaryimage"},"thumbnailUrl":"https:\/\/eodhd.com\/financial-academy\/wp-content\/uploads\/2023\/10\/image-10.png","articleSection":["Backtesting Strategies Examples","Stocks Data Analysis Examples"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/eodhd.com\/financial-academy\/backtesting-strategies-examples\/detecting-ranging-and-trending-markets-with-choppiness-index-in-python","url":"https:\/\/eodhd.com\/financial-academy\/backtesting-strategies-examples\/detecting-ranging-and-trending-markets-with-choppiness-index-in-python","name":"Mastering the Trending Markets Choppiness Index Python | EODHD APIs Academy","isPartOf":{"@id":"https:\/\/eodhd.com\/financial-academy\/#website"},"primaryImageOfPage":{"@id":"https:\/\/eodhd.com\/financial-academy\/backtesting-strategies-examples\/detecting-ranging-and-trending-markets-with-choppiness-index-in-python#primaryimage"},"image":{"@id":"https:\/\/eodhd.com\/financial-academy\/backtesting-strategies-examples\/detecting-ranging-and-trending-markets-with-choppiness-index-in-python#primaryimage"},"thumbnailUrl":"https:\/\/eodhd.com\/financial-academy\/wp-content\/uploads\/2023\/10\/image-10.png","datePublished":"2023-10-20T14:26:25+00:00","dateModified":"2025-02-05T12:08:06+00:00","description":"Find out how the Choppiness Index in Python can help you navigate choppy markets and make better trading decisions","breadcrumb":{"@id":"https:\/\/eodhd.com\/financial-academy\/backtesting-strategies-examples\/detecting-ranging-and-trending-markets-with-choppiness-index-in-python#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/eodhd.com\/financial-academy\/backtesting-strategies-examples\/detecting-ranging-and-trending-markets-with-choppiness-index-in-python"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/eodhd.com\/financial-academy\/backtesting-strategies-examples\/detecting-ranging-and-trending-markets-with-choppiness-index-in-python#primaryimage","url":"https:\/\/eodhd.com\/financial-academy\/wp-content\/uploads\/2023\/10\/image-10.png","contentUrl":"https:\/\/eodhd.com\/financial-academy\/wp-content\/uploads\/2023\/10\/image-10.png","width":828,"height":621},{"@type":"BreadcrumbList","@id":"https:\/\/eodhd.com\/financial-academy\/backtesting-strategies-examples\/detecting-ranging-and-trending-markets-with-choppiness-index-in-python#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/eodhd.com\/financial-academy\/"},{"@type":"ListItem","position":2,"name":"Detecting Ranging and Trending Markets with Choppiness Index 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\/67681e71050cf7d8d0efb91fee5f0402","name":"Nikhil Adithyan","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/eodhd.com\/financial-academy\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/eb53ce41bde412555cee22b8b4c09c2ff51625fff05ba3696b20cac7a7c0d938?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/eb53ce41bde412555cee22b8b4c09c2ff51625fff05ba3696b20cac7a7c0d938?s=96&d=mm&r=g","caption":"Nikhil Adithyan"},"description":"Founder at BacktestZone | Streamlit Student Ambassador | FinTech &amp; Quantitative Finance enthusiast","url":"https:\/\/eodhd.com\/financial-academy\/author\/nikhiladithyan"}]}},"jetpack_featured_media_url":"https:\/\/eodhd.com\/financial-academy\/wp-content\/uploads\/2023\/10\/image-10.png","jetpack_shortlink":"https:\/\/wp.me\/pdOdVT-Is","jetpack_sharing_enabled":true,"acf":[],"_links":{"self":[{"href":"https:\/\/eodhd.com\/financial-academy\/wp-json\/wp\/v2\/posts\/2756","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\/18"}],"replies":[{"embeddable":true,"href":"https:\/\/eodhd.com\/financial-academy\/wp-json\/wp\/v2\/comments?post=2756"}],"version-history":[{"count":11,"href":"https:\/\/eodhd.com\/financial-academy\/wp-json\/wp\/v2\/posts\/2756\/revisions"}],"predecessor-version":[{"id":6245,"href":"https:\/\/eodhd.com\/financial-academy\/wp-json\/wp\/v2\/posts\/2756\/revisions\/6245"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/eodhd.com\/financial-academy\/wp-json\/wp\/v2\/media\/2757"}],"wp:attachment":[{"href":"https:\/\/eodhd.com\/financial-academy\/wp-json\/wp\/v2\/media?parent=2756"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/eodhd.com\/financial-academy\/wp-json\/wp\/v2\/categories?post=2756"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/eodhd.com\/financial-academy\/wp-json\/wp\/v2\/tags?post=2756"},{"taxonomy":"coding-language","embeddable":true,"href":"https:\/\/eodhd.com\/financial-academy\/wp-json\/wp\/v2\/coding-language?post=2756"},{"taxonomy":"ready-to-go-solution","embeddable":true,"href":"https:\/\/eodhd.com\/financial-academy\/wp-json\/wp\/v2\/ready-to-go-solution?post=2756"},{"taxonomy":"qualification","embeddable":true,"href":"https:\/\/eodhd.com\/financial-academy\/wp-json\/wp\/v2\/qualification?post=2756"},{"taxonomy":"financial-apis-category","embeddable":true,"href":"https:\/\/eodhd.com\/financial-academy\/wp-json\/wp\/v2\/financial-apis-category?post=2756"},{"taxonomy":"financial-apis-manuals","embeddable":true,"href":"https:\/\/eodhd.com\/financial-academy\/wp-json\/wp\/v2\/financial-apis-manuals?post=2756"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}