{"id":3766,"date":"2020-08-14T06:33:46","date_gmt":"2020-08-14T06:33:46","guid":{"rendered":"https:\/\/www.aiproblog.com\/index.php\/2020\/08\/14\/quantitative-trading-101\/"},"modified":"2020-08-14T06:33:46","modified_gmt":"2020-08-14T06:33:46","slug":"quantitative-trading-101","status":"publish","type":"post","link":"https:\/\/www.aiproblog.com\/index.php\/2020\/08\/14\/quantitative-trading-101\/","title":{"rendered":"Quantitative Trading 101"},"content":{"rendered":"<p>Author: Kevin Mekulu<\/p>\n<div>\n<h1 id=\"dea6\" class=\"kp kq bj bi fo kr ks kt ku kv kw kx ky kz la lb lc ld le lf lg fr\">Summary<\/h1>\n<ul class=\"\">\n<li id=\"0cd3\" class=\"lh li bj lj b hp lk ll lm hs ln lo lp lq lr hx ls lt lu ia lv lw lx id ly lz ma mb mc fr\">Anyone can learn quantitative trading. You don&rsquo;t need to have a PhD in Quantum Astrophysics to create quantitative trading systems or perform quantitative research<\/li>\n<li id=\"8ab7\" class=\"lh li bj lj b hp md ll lm hs me lo lp lq mf hx ls lt mg ia lv lw mh id ly lz ma mb mc fr\">The process of identifying a suitable trading strategy is identical to the scientific method: It requires creating hypotheses and making assumptions based on data to identify a statistical edge.<\/li>\n<li id=\"b8a7\" class=\"lh li bj lj b hp md ll lm hs me lo lp lq mf hx ls lt mg ia lv lw mh id ly lz ma mb mc fr\">Quantitative research (data mining, hypothesis testing&hellip;) always precedes backtesting trading strategies<\/li>\n<\/ul>\n<p id=\"781d\" class=\"lh li bj lj b hp mi ll lm hs mj lo lp lq mk hx ls lt ml ia lv lw mm id ly lz gp fr\">As a trading enthusiast, I have always wondered if the best quant traders possessed predetermined trading strategies that they could use to consistently generate superior returns. I thought trading was as straightforward as solving an equation and using the solution to generate market beating returns. After doing some research and chatting with a few pro quant traders, I started familiarizing myself with quantitative analysis techniques to get a better understanding of the entire quantitative research process.<\/p>\n<p id=\"efaf\" class=\"lh li bj lj b hp mi ll lm hs mj lo lp lq mk hx ls lt ml ia lv lw mm id ly lz gp fr\">Let&rsquo;s look at what the quantitative research process looks like.<\/p>\n<p id=\"6e2e\" class=\"lh li bj lj b hp mi ll lm hs mj lo lp lq mk hx ls lt ml ia lv lw mm id ly lz gp fr\">We&rsquo;ll be analyzing the stock of the most popular company in the world: Apple stock (ticker: $AAPL).<\/p>\n<h1 id=\"ad91\" class=\"kp kq bj bi fo kr ks kt ku kv kw kx ky kz la lb lc ld le lf lg fr\"><strong class=\"ay\">STEP 1: Analyze the distribution of daily returns<\/strong><\/h1>\n<blockquote class=\"mn\">\n<p id=\"a066\" class=\"mo mp bj gx b mq mr ms mt mu mv lz bn\">Note: We will be using the research environment provided by<span>&nbsp;<\/span><a href=\"https:\/\/www.quantconnect.com\/\" class=\"cg jb kl km kn ko\" target=\"_blank\" rel=\"noopener nofollow noreferrer\">Quantconnect<\/a><span>&nbsp;<\/span>to perform our research.<\/p>\n<\/blockquote>\n<p id=\"5306\" class=\"lh li bj lj b hp mw ll lm hs mx lo lp lq my hx ls lt mz ia lv lw na id ly lz gp fr\">We start off our analysis by plotting the distribution of AAPL returns over the past 5000 days.<\/p>\n<pre class=\"jp jq jr js jt nb nc dp\"><span id=\"0b8f\" class=\"fr nd kq bj ne b cb nf ng r nh\"># import all the modules we will be using in our analysis<br>import numpy as np<br>\nimport seaborn as sns<br>\nimport matplotlib.pyplot as plt<br>\nplt.style.use('ggplot') <br>\nplt.rcParams['figure.figsize'] = [11, 8]<\/span><span id=\"0f90\" class=\"fr nd kq bj ne b cb ni nj nk nl nm ng r nh\">qb = QuantBook() # Open the QuantBook Analysis Tool from Quantconnect<br>\nspy = qb.AddEquity(\"AAPL\") # Load AAPL historical data<br>\nhistory = qb.History(qb.Securities.Keys, 5000, Resolution.Daily) # 5000 daily datapoints<\/span><span id=\"8d84\" class=\"fr nd kq bj ne b cb ni nj nk nl nm ng r nh\"># Drop pandas level<br>\nhistory = history.reset_index().drop('symbol',axis=1)<\/span><span id=\"076e\" class=\"fr nd kq bj ne b cb ni nj nk nl nm ng r nh\"># Calculate APPL returns and fillna <br>\nhistory['returns'] = (history['close'].pct_change() * 100).fillna(0)<br>\nsns.distplot(history['returns'],label='Distribution of AAPL returns')<br>\nplt.legend()<br>\nplt.show()<\/span><\/pre>\n<\/p>\n<div class=\"gj gk nn\">\n<div class=\"kb r cd fx\">\n<div class=\"no kd r\">\n<div class=\"cc jy s t u ep ai bv jz ka\"><\/div>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"Image for post\" class=\"fc vg s t u ep ai c\" width=\"652\" height=\"474\" src=\"https:\/\/miro.medium.com\/max\/652\/1*V6iWD8S6z63Ji35BmRhYHA.png\"><\/div>\n<\/div>\n<\/div>\n<p>Figure 1&ndash;1: Histogram of the distribution of Apple&rsquo;s daily returns<\/p>\n<p id=\"d1e2\" class=\"lh li bj lj b hp mi ll lm hs mj lo lp lq mk hx ls lt ml ia lv lw mm id ly lz gp fr\">The next step would be to compare this distribution to a normal distribution. (A lot of models used in quantitative finance and statistics assume a normal or<span>&nbsp;<\/span><a href=\"https:\/\/www.statisticshowto.com\/lognormal-distribution\/\" class=\"cg jb kl km kn ko\" target=\"_blank\" rel=\"noopener nofollow noreferrer\">lognormal distribution<\/a>)<\/p>\n<h1 id=\"0765\" class=\"kp kq bj bi fo kr ks kt ku kv kw kx ky kz la lb lc ld le lf lg fr\">STEP 2: Compare figure 1&ndash;1 to the normal distribution<\/h1>\n<p id=\"0e18\" class=\"lh li bj lj b hp lk ll lm hs ln lo lp lq lr hx ls lt lu ia lv lw lx id ly lz gp fr\">Let&rsquo;s generate some random data to plot the normal distribution.<\/p>\n<pre class=\"jp jq jr js jt nb nc dp\"><span id=\"5d87\" class=\"fr nd kq bj ne b cb nf ng r nh\">random = np.random.normal(scale=1.23,size=500000)<br>sns.distplot(random,label='Returns sampled from normal distribution',color='blue')<br>\nplt.legend()<br>\nrandom_series = pd.Series(random)<\/span><\/pre>\n<\/p>\n<div class=\"gj gk np\">\n<div class=\"kb r cd fx\">\n<div class=\"nq kd r\">\n<div class=\"cc jy s t u ep ai bv jz ka\"><\/div>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"Image for post\" class=\"fc vg s t u ep ai c\" width=\"649\" height=\"458\" src=\"https:\/\/miro.medium.com\/max\/649\/1*kFDAURtBZZwamT2ab51eRQ.png\"><\/div>\n<\/div>\n<\/div>\n<p>Figure 1&ndash;2: Histogram of the normal distribution (obtained by generating random data)<\/p>\n<p id=\"0a0b\" class=\"lh li bj lj b hp mi ll lm hs mj lo lp lq mk hx ls lt ml ia lv lw mm id ly lz gp fr\">Now that we have plotted both distributions, let&rsquo;s put them in one plot for comparison purposes.<\/p>\n<\/p>\n<div class=\"gj gk nn\">\n<div class=\"kb r cd fx\">\n<div class=\"nr kd r\">\n<div class=\"cc jy s t u ep ai bv jz ka\"><\/div>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"Image for post\" class=\"fc vg s t u ep ai c\" width=\"652\" height=\"476\" src=\"https:\/\/miro.medium.com\/max\/652\/1*fAv97lWufpHGs9S9sLuWXQ.png\"><\/div>\n<\/div>\n<\/div>\n<p>Figure 1&ndash;3: AAPL distribution returns vs Random normal distribution<\/p>\n<p id=\"fc1b\" class=\"lh li bj lj b hp mi ll lm hs mj lo lp lq mk hx ls lt ml ia lv lw mm id ly lz gp fr\"><strong class=\"lj ns\">Comparison Summary<\/strong><\/p>\n<ul class=\"\">\n<li id=\"0e97\" class=\"lh li bj lj b hp mi ll lm hs mj lo lp lq mk hx ls lt ml ia lv lw mm id ly lz ma mb mc fr\">The distribution of Apple stock daily returns resemble the normal distribution<\/li>\n<li id=\"1097\" class=\"lh li bj lj b hp md ll lm hs me lo lp lq mf hx ls lt mg ia lv lw mh id ly lz ma mb mc fr\">The distribution of Apple stock has &ldquo;heavier tails&rdquo;. In layman terms, we can expect outsized moves to the upside and downsize, more so than a normal distribution would suggest.<\/li>\n<li id=\"227a\" class=\"lh li bj lj b hp md ll lm hs me lo lp lq mf hx ls lt mg ia lv lw mh id ly lz ma mb mc fr\">Statisticians often use the<span>&nbsp;<\/span><a href=\"https:\/\/corporatefinanceinstitute.com\/resources\/knowledge\/other\/kurtosis\/#:~:text=Kurtosis%20is%20a%20statistical%20measure,given%20distribution%20contain%20extreme%20values.\" class=\"cg jb kl km kn ko\" target=\"_blank\" rel=\"noopener nofollow noreferrer\"><em class=\"nt\">&ldquo;kurtosis&rdquo;<\/em><\/a><span>&nbsp;<\/span>of a distribution as a statistical measure to simply identify wether the tails of a given distribution contain extreme values.<\/li>\n<\/ul>\n<h1 id=\"f274\" class=\"kp kq bj bi fo kr ks kt ku kv kw kx ky kz la lb lc ld le lf lg fr\">STEP 3: Investigate patterns in our data (the fun part)<\/h1>\n<blockquote class=\"mn\">\n<p id=\"367a\" class=\"mo mp bj gx b mq mr ms mt mu mv lz bn\">Jim Simons, arguably one of the most successful quant traders of all times once said: &ldquo;We search through historical data looking for anomalous patterns that we would not expect to occur at random.&rdquo;<\/p>\n<\/blockquote>\n<p id=\"afd8\" class=\"lh li bj lj b hp mw ll lm hs mx lo lp lq my hx ls lt mz ia lv lw na id ly lz gp fr\">Let&rsquo;s follow Jim&rsquo;s advice and explore Apple&rsquo;s historical data to see if we can uncover some interesting patterns. Let&rsquo;s look at the hourly resolution data (typically hard to find for free but easily accessible through the Quantconnect platform).<\/p>\n<pre class=\"jp jq jr js jt nb nc dp\"><span id=\"6d52\" class=\"fr nd kq bj ne b cb nf ng r nh\">aapl_hour = qb.History(qb.Securities.Keys, timedelta(days=5000), Resolution.Hour) # 5000 days of AAPL hourly data<br>aapl_hour = aapl_hour.reset_index().drop('symbol',axis=1)<br>\n# Transform datetime into hours<br>\naapl_hour['hour'] = aapl_hour['time'].apply(lambda x: x.hour)<br>\n# Calculate Hourly returns<br>\naapl_hour['returns'] = (aapl_hour['close'].pct_change() * 100).fillna(0)<br>\naapl_hour.head()<\/span><\/pre>\n<\/p>\n<div class=\"gj gk nu\">\n<div class=\"kb r cd fx\">\n<div class=\"nv kd r\">\n<div class=\"cc jy s t u ep ai bv jz ka\"><\/div>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"Image for post\" class=\"fc vg s t u ep ai c\" width=\"617\" height=\"155\" src=\"https:\/\/miro.medium.com\/max\/617\/1*Ext82QHIdo5ofH2Q2Ip0BQ.png\"><\/div>\n<\/div>\n<\/div>\n<p>Figure 1&ndash;4: AAPL hourly returns<\/p>\n<pre class=\"jp jq jr js jt nb nc dp\"><span id=\"d90e\" class=\"fr nd kq bj ne b cb nf ng r nh\">sns.barplot(x='hour',y='returns',data=aapl_hour)<\/span><\/pre>\n<\/p>\n<div class=\"gj gk nw\">\n<div class=\"kb r cd fx\">\n<div class=\"nx kd r\">\n<div class=\"cc jy s t u ep ai bv jz ka\"><\/div>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"Image for post\" class=\"fc vg s t u ep ai c\" width=\"673\" height=\"473\" src=\"https:\/\/miro.medium.com\/max\/673\/1*_H-zXlKAssoOGllvdA2CCw.png\"><\/div>\n<\/div>\n<\/div>\n<p>Figure 1&ndash;4: Boxplot of AAPL hourly returns<\/p>\n<p id=\"e190\" class=\"lh li bj lj b hp mi ll lm hs mj lo lp lq mk hx ls lt ml ia lv lw mm id ly lz gp fr\">It looks like the most substantial returns were made overnight. An interesting idea would be to &ldquo;buy at market close and sell at market open&rdquo; to capture overnight gains. You can investigate this phenomenon further by exploring this<span>&nbsp;<\/span><a href=\"https:\/\/papers.ssrn.com\/sol3\/papers.cfm?abstract_id=3546173\" class=\"cg jb kl km kn ko\" target=\"_blank\" rel=\"noopener nofollow noreferrer\">research paper<\/a><span>&nbsp;<\/span>which explains &ldquo;the overnight drift&rdquo; (Most gains are made in the after hours).<\/p>\n<p id=\"5cd2\" class=\"lh li bj lj b hp mi ll lm hs mj lo lp lq mk hx ls lt ml ia lv lw mm id ly lz gp fr\">Let&rsquo;s continue to explore the discrepancy that we previously discovered. The previous bar plot suggested that there were substantial gains made in the after hours. Let&rsquo;s plot the cumulative performance of overnight returns vs intraday returns to better visualize and confirm this discrepancy.<\/p>\n<pre class=\"jp jq jr js jt nb nc dp\"><span id=\"1455\" class=\"fr nd kq bj ne b cb nf ng r nh\">aapl_hour.query(\"hour == 10\")['returns'].cumsum().plot(label='Overnight Returns')<br>aapl_hour.query(\"hour != 10\")['returns'].cumsum().plot(label='Intraday Returns')<br>\nplt.legend()<\/span><\/pre>\n<\/p>\n<div class=\"gj gk ny\">\n<div class=\"kb r cd fx\">\n<div class=\"nz kd r\">\n<div class=\"cc jy s t u ep ai bv jz ka\"><\/div>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"Image for post\" class=\"fc vg s t u ep ai c\" width=\"653\" height=\"453\" src=\"https:\/\/miro.medium.com\/max\/653\/1*STb9ddym4UGj0Ew9D6AFjg.png\"><\/div>\n<\/div>\n<\/div>\n<p>Figure 1&ndash;5: Overnight Returns vs Intraday Returns (Apple Stock)<\/p>\n<p id=\"c4d3\" class=\"lh li bj lj b hp mi ll lm hs mj lo lp lq mk hx ls lt ml ia lv lw mm id ly lz gp fr\">Our hypothesis was correct. It&rsquo;s quite apparent that most returns are realized in the after hours.<\/p>\n<h1 id=\"908a\" class=\"kp kq bj bi fo kr ks kt ku kv kw kx ky kz la lb lc ld le lf lg fr\">STEP 4: Look for potential autocorrelations\/trends<\/h1>\n<p id=\"da52\" class=\"lh li bj lj b hp lk ll lm hs ln lo lp lq lr hx ls lt lu ia lv lw lx id ly lz gp fr\">Autocorrelation is a mathematical representation of the degree of similarity between a time series and a lagged version of itself over successive time intervals. in simpler terms, it describes how the present value of a series is related to its past values. You can learn more about autocorrelations<span>&nbsp;<\/span><a href=\"https:\/\/www.investopedia.com\/terms\/a\/autocorrelation.asp#:~:text=Autocorrelation%20is%20a%20mathematical%20representation,itself%20over%20successive%20time%20intervals.\" class=\"cg jb kl km kn ko\" target=\"_blank\" rel=\"noopener nofollow noreferrer\">here<\/a>.<\/p>\n<p id=\"f2bd\" class=\"lh li bj lj b hp mi ll lm hs mj lo lp lq mk hx ls lt ml ia lv lw mm id ly lz gp fr\">The goal of the quantitative analyst is to look for possible trends within the dataset. This can be accomplished by analyzing the Autocorrelation function plot (ACF plot).<\/p>\n<\/p>\n<div class=\"gj gk oa\">\n<div class=\"kb r cd fx\">\n<div class=\"ob kd r\">\n<div class=\"cc jy s t u ep ai bv jz ka\"><\/div>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"Image for post\" class=\"fc vg s t u ep ai c\" width=\"640\" height=\"469\" src=\"https:\/\/miro.medium.com\/max\/640\/1*upz2K85rdvia8DYe3hA6XA.png\"><\/div>\n<\/div>\n<\/div>\n<p>figure 1&ndash;6: ACF plot<\/p>\n<p id=\"6af4\" class=\"lh li bj lj b hp mi ll lm hs mj lo lp lq mk hx ls lt ml ia lv lw mm id ly lz gp fr\">It looks like there are no significantly correlated lags (we are basically looking for autocorrelations that lie outside the red band).<\/p>\n<p id=\"e7ec\" class=\"lh li bj lj b hp mi ll lm hs mj lo lp lq mk hx ls lt ml ia lv lw mm id ly lz gp fr\">If the first lag on the graph lied outside for the red band for instance, then we would have concluded that there is a negative autocorrelation at lag 1 (on the x-axis of the ACF plot). Once you have that information, you could potentially investigate the relationship between that lag and the stock&rsquo;s annual volatility.<\/p>\n<pre class=\"jp jq jr js jt nb nc dp\"><span id=\"9f15\" class=\"fr nd kq bj ne b cb nf ng r nh\">history['rolling_lag_1'] <strong class=\"ne ns\">=<\/strong> history['returns'].rolling(window<strong class=\"ne ns\">=<\/strong>100).apply(lambda x:acf(x)[1],raw<strong class=\"ne ns\">=<\/strong>True)<\/span><span id=\"ee3f\" class=\"fr nd kq bj ne b cb ni nj nk nl nm ng r nh\">history['annVol'] = history['returns'].rolling(window=100).std() * np.sqrt(252)<br>sns.regplot(x='annVol',y='rolling_lag_1',data=history)<\/span><\/pre>\n<\/p>\n<div class=\"gj gk oc\">\n<div class=\"kb r cd fx\">\n<div class=\"od kd r\">\n<div class=\"cc jy s t u ep ai bv jz ka\"><\/div>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"Image for post\" class=\"fc vg s t u ep ai c\" width=\"665\" height=\"471\" src=\"https:\/\/miro.medium.com\/max\/665\/1*wpdEowgItc7pXwIOoBP3qw.png\"><\/div>\n<\/div>\n<\/div>\n<p>Fig 1&ndash;7: Rolling lag 1 vs Annual Volatility<\/p>\n<p id=\"75ff\" class=\"lh li bj lj b hp mi ll lm hs mj lo lp lq mk hx ls lt ml ia lv lw mm id ly lz gp fr\">There seems to be a negative correlation between the volatility of AAPL and its lag 1 autocorrelation. Furthermore, we can visualize how that relationship held up over the past 5 years.<\/p>\n<pre class=\"jp jq jr js jt nb nc dp\"><span id=\"b448\" class=\"fr nd kq bj ne b cb nf ng r nh\">sns.regplot(x='annVol',y='rolling_lag_1',data=history.loc['2015-01-01':'2021-01-01'],label='2015-Now')<br>plt.legend()<\/span><\/pre>\n<\/p>\n<div class=\"gj gk oe\">\n<div class=\"kb r cd fx\">\n<div class=\"of kd r\">\n<div class=\"cc jy s t u ep ai bv jz ka\"><\/div>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"Image for post\" class=\"fc vg s t u ep ai c\" width=\"675\" height=\"465\" src=\"https:\/\/miro.medium.com\/max\/675\/1*TN3aRUTH6-pntwtH7Eh6bg.png\"><\/div>\n<\/div>\n<\/div>\n<p>Figure 1&ndash;8: Annual volatility vs Rolling lag 1 (from 2015 to now)<\/p>\n<p id=\"96e6\" class=\"lh li bj lj b hp mi ll lm hs mj lo lp lq mk hx ls lt ml ia lv lw mm id ly lz gp fr\">As expected, there is no clear consistent relationship between volatility and the rolling lag 1 correlation of Apple stock returns. This is how you would typically investigate time series data.<\/p>\n<h1 id=\"c7aa\" class=\"kp kq bj bi fo kr ks kt ku kv kw kx ky kz la lb lc ld le lf lg fr\">Conclusion<\/h1>\n<ul class=\"\">\n<li id=\"5e49\" class=\"lh li bj lj b hp lk ll lm hs ln lo lp lq lr hx ls lt lu ia lv lw lx id ly lz ma mb mc fr\">The noise to signal ratio is extremely high in quantitative analysis. Clean and consistent patterns are usually very subtle and can quickly vanish<\/li>\n<li id=\"b99c\" class=\"lh li bj lj b hp md ll lm hs me lo lp lq mf hx ls lt mg ia lv lw mh id ly lz ma mb mc fr\">Based on our research, a substantial amount of Apple stock returns is made in the after-hours<\/li>\n<\/ul>\n<p><em>Originally posted&nbsp;<a href=\"https:\/\/towardsdatascience.com\/quantitative-trading-101-e6e555ae2474?source=friends_link&amp;sk=cd810b03332abf3380a5e52d0c7e8c5a\" target=\"_self\" rel=\"noopener noreferrer\">here<\/a><\/em><\/p>\n<\/div>\n<p><a href=\"https:\/\/www.datasciencecentral.com\/xn\/detail\/6448529:BlogPost:976675\">Go to Source<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Author: Kevin Mekulu Summary Anyone can learn quantitative trading. You don&rsquo;t need to have a PhD in Quantum Astrophysics to create quantitative trading systems or [&hellip;] <span class=\"read-more-link\"><a class=\"read-more\" href=\"https:\/\/www.aiproblog.com\/index.php\/2020\/08\/14\/quantitative-trading-101\/\">Read More<\/a><\/span><\/p>\n","protected":false},"author":1,"featured_media":3767,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_bbp_topic_count":0,"_bbp_reply_count":0,"_bbp_total_topic_count":0,"_bbp_total_reply_count":0,"_bbp_voice_count":0,"_bbp_anonymous_reply_count":0,"_bbp_topic_count_hidden":0,"_bbp_reply_count_hidden":0,"_bbp_forum_subforum_count":0,"footnotes":""},"categories":[26],"tags":[],"_links":{"self":[{"href":"https:\/\/www.aiproblog.com\/index.php\/wp-json\/wp\/v2\/posts\/3766"}],"collection":[{"href":"https:\/\/www.aiproblog.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.aiproblog.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.aiproblog.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.aiproblog.com\/index.php\/wp-json\/wp\/v2\/comments?post=3766"}],"version-history":[{"count":0,"href":"https:\/\/www.aiproblog.com\/index.php\/wp-json\/wp\/v2\/posts\/3766\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.aiproblog.com\/index.php\/wp-json\/wp\/v2\/media\/3767"}],"wp:attachment":[{"href":"https:\/\/www.aiproblog.com\/index.php\/wp-json\/wp\/v2\/media?parent=3766"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.aiproblog.com\/index.php\/wp-json\/wp\/v2\/categories?post=3766"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.aiproblog.com\/index.php\/wp-json\/wp\/v2\/tags?post=3766"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}