{"id":2725,"date":"2021-07-20T02:33:39","date_gmt":"2021-07-20T02:33:39","guid":{"rendered":"https:\/\/www.tejwin.com\/en\/insights\/trading-strategy-by-keeping-an-eye-on-big-players\/"},"modified":"2021-07-20T02:33:39","modified_gmt":"2021-07-20T02:33:39","slug":"trading-strategy-by-keeping-an-eye-on-big-players","status":"publish","type":"insight","link":"https:\/\/www.tejwin.com\/en\/insights\/trading-strategy-by-keeping-an-eye-on-big-players\/","title":{"rendered":"Trading Strategy by Keeping an Eye on Big Players"},"content":{"rendered":"<p class=\"wp-block-paragraph\">Chip analysis and backtesting using TEJ API trial database<\/p>\n<figure class=\"wp-block-image caption-align-center\"><img decoding=\"async\" alt=\"\" src=\"https:\/\/www.tejwin.com\/en\/wp-content\/uploads\/2026\/08\/1_0C8vR-4nCFOk1sBPH.jpg\"\/><figcaption class=\"wp-element-caption\">Photo Creds:\u00a0<a href=\"https:\/\/unsplash.com\/photos\/DfjJMVhwH_8\" rel=\"noreferrer noopener\" target=\"_blank\">Usplash<\/a><\/figcaption><\/figure>\n<h2 class=\"wp-block-heading\" id=\"851a\"><strong>Preface<\/strong><\/h2>\n<p class=\"wp-block-paragraph\" id=\"c23d\">Generally speaking, big players such as institutional investors, insiders or other investors holding large amounts of shares have information advantages over retail investors. Thus, they are more likely to select stocks with potential growth and distance themselves from risky stocks. To decrease this kind of information asymmetry, The Financial Supervisory Committee in Taiwan requires firms and securities firms to release their daily trading data, allowing investors to analyze the trend of stock price by observing big players\u2019 investment. And this is so-called chip analysis.<\/p>\n<p class=\"wp-block-paragraph\" id=\"89d6\">Common indicators in chip analysis include\u00a0<strong>the net buy-and-sell of three primary institutional investors, the days of consecutive buying or selling, trading amounts by institutional investors, stock holding of directors and supervisors, the ratio of short sale and margin purchase<\/strong>. Since the TEJ API database contains a variety of chip indicators, there\u2019s no need to calculate ourselves and we can immediately carry out stock selection and backtesting based on it. This article follows the content of\u00a0<a class=\"ek-link\" href=\"https:\/\/medium.com\/tej-api-financial-data-anlaysis\/introduction-5-starting-using-tej-trial-database-223e0cb5c341\" rel=\"noopener\" target=\"_blank\">\u3010Introduction(5)\u3011Starting Using TEJ Trial Database<\/a>, so we will still obtain data from the<a href=\"https:\/\/api.tej.com.tw\/datatables.html?db=TRAIL&amp;t=%E8%A9%A6%E7%94%A8%E8%B3%87%E6%96%99%E5%BA%AB\" rel=\"noreferrer noopener\" target=\"_blank\">\u00a0trial database<\/a>\u00a0for backtesting. And for those who already applied for access to the trial database, it\u2019s recommended to do the backtesting yourself while reading this article !<\/p>\n<h2 class=\"wp-block-heading\" id=\"6932\"><strong>The Editing Environment and Modules Required<\/strong><\/h2>\n<p class=\"wp-block-paragraph\" id=\"31d3\">We use Windows OS and Jupyter Notebook in this article<\/p>\n<pre class=\"wp-block-code\"><code>import tejapi\nimport pandas as pd\nimport numpy as np\nimport matplotlib.pyplot as plt\ntejapi.ApiConfig.api_key = \u201cYour Key\u201d\ntejapi.ApiConfig.ignoretz = True<\/code><\/pre>\n<p class=\"wp-block-paragraph\" id=\"ce10\"><em>Note: Remember to replace \u2018Your Key\u2019 with the one you applied for. The last line indicates the time zone is not shown.<\/em><\/p>\n<h2 class=\"wp-block-heading\" id=\"bed5\"><strong>The Highlights of the Article<\/strong><\/h2>\n<ul class=\"wp-block-list\">\n<li>Understand the indicators of chip analysis<\/li>\n<li>Demonstrate the basic backtesting<\/li>\n<\/ul>\n<h2 class=\"wp-block-heading\" id=\"a738\"><strong>Trial Database Used<\/strong><\/h2>\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/api.tej.com.tw\/columns.html?idCode=TRAIL%2FTAPRCD\" rel=\"noreferrer noopener\" target=\"_blank\">Unadjusted daily stock price<\/a>: The code of this database is \u2018TRAIL\/TAPRCD\u2019, containing data such as stock price, trading volume, P\/E ratio and so on.<\/li>\n<li><a href=\"https:\/\/api.tej.com.tw\/columns.html?idCode=TRAIL%2FTATINST1\" rel=\"noreferrer noopener\" target=\"_blank\">Net buy-and-sell of three primary institutional investors<\/a>: The code of this database is \u2018TRAIL\/TATINST1\u2019, covering big players\u2019 investment, shareholding ratio, turnover rate and so on.<\/li>\n<\/ul>\n<h2 class=\"wp-block-heading\" id=\"36f0\"><strong>The Application of Chip Analysis Indicators<\/strong><\/h2>\n<ul class=\"wp-block-list\">\n<li>Shareholding ratio of institutional investors: The sum of shareholding ratio of foreign investors, securities investment trust companies and dealers. It can be used to\u00a0<strong>observe the distribution of each stock.<\/strong><\/li>\n<li>Net Buy-and-sell of institutional investors: The sum of net buy-and-sell of foreign investors, securities investment trust companies and dealers. The positive figure indicates net buy, while negative one means net sell. It can be employed to\u00a0<strong>trace the movement of big players.<\/strong><\/li>\n<\/ul>\n<h2 class=\"wp-block-heading\" id=\"950f\"><strong>The Design and Practice of Trading Strategy<\/strong><\/h2>\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\" id=\"a452\">Buy signal: if the institutional investors are\u00a0<strong>net-buying<\/strong>\u00a0and\u00a0<strong>their shareholding ratio is lower than the 5-day moving average,<\/strong>\u00a0the stock price may begin to rise.<\/p>\n<p class=\"wp-block-paragraph\" id=\"c6ea\">Sell signal: if the institutional investors are<strong>\u00a0net-selling\u00a0<\/strong>and<strong>\u00a0their shareholding ratio exceeds the 5-day moving average,<\/strong>\u00a0it may indicate the institutional investors may start to dump shares.<\/p>\n<p class=\"wp-block-paragraph\" id=\"2ed3\">Assumption: When the buy signal pops up, we buy the stock at\u00a0<strong>the next day\u2019s opening price<\/strong>\u00a0since the net buy-and-sell information is disclosed\u00a0<strong>after the market closes<\/strong>. During the holding period, we hold\u00a0<strong>no more than one share<\/strong>\u00a0and sell it when the sell signal is met. Transaction fee (0.1425%) and transfer tax on stock (0.3%) are considered.<\/p>\n<\/blockquote>\n<h4 class=\"wp-block-heading\" id=\"e1cf\"><strong>Step 1.\u00a0<\/strong>Obtain data after importing modules<\/h4>\n<pre class=\"wp-block-code\"><code>evergreen_chip = tejapi.get('TRAIL\/TATINST1',\n                            coid = '2603',\n                            opts = {'columns':['coid','mdate',\n                                               'ttl_ex','fld024']},\n                            chinese_column_name = True)<\/code><\/pre>\n<p class=\"wp-block-paragraph\" id=\"9f7f\">For starters, we obtain the chip data of Evergreen Marine Corporation (2603). The column codes we select are shareholding share and net buy-and-sell of institutional investors according to\u00a0<a href=\"https:\/\/api.tej.com.tw\/columns.html?idCode=TRAIL%2FTATINST1\" rel=\"noreferrer noopener\" target=\"_blank\">column description<\/a>\u00a0of the database.<\/p>\n<figure class=\"wp-block-image aligncenter\"><img decoding=\"async\" alt=\"\" src=\"https:\/\/www.tejwin.com\/en\/wp-content\/uploads\/2026\/08\/0HCE-HGmgcR4Ky2Wr.png\"\/><\/figure>\n<pre class=\"wp-block-code\"><code>evergreen_price = tejapi.get('TRAIL\/TAPRCD',\n                            coid = '2603',\n                            opts = {'columns':['mdate','open_d']},\n                            chinese_column_name = True)<\/code><\/pre>\n<p class=\"wp-block-paragraph\">To calculate the return, we also need stock price data. Here we apply\u00a0<code><em>shift(-1)<\/em><\/code><em>\u00a0<\/em>to move the opening price up one row and form a new column called next day\u2019s opening price, in order to match our buying and selling price.<\/p>\n<figure class=\"wp-block-image aligncenter\"><img decoding=\"async\" alt=\"\" src=\"https:\/\/www.tejwin.com\/en\/wp-content\/uploads\/2026\/08\/08mxlbYH9cq_bfjAk.png\"\/><\/figure>\n<pre class=\"wp-block-code\"><code>market = tejapi.get('TRAIL\/TAPRCD',\n                    coid = 'Y9997',\n                    opts = {'columns':['mdate', 'roi']},\n                    chinese_column_name = True)<\/code><\/pre>\n<p class=\"wp-block-paragraph\">We need the return of TAIEX Total Return Index as our benchmark to measure the performance of this strategy. To not confuse with strategy return, we use\u00a0<code><em>rename()<\/em><\/code>\u00a0to change the name of the return column into market return.<\/p>\n<pre class=\"wp-block-code\"><code>market = market.rename(columns = {'\u5831\u916c\u7387\uff05':'\u5e02\u5834\u5831\u916c\u7387%'})<\/code><\/pre>\n<figure class=\"wp-block-image aligncenter\"><img decoding=\"async\" alt=\"\" src=\"https:\/\/www.tejwin.com\/en\/wp-content\/uploads\/2026\/08\/04rpxAkHwKlSprWNP.png\"\/><\/figure>\n<h4 class=\"wp-block-heading\" id=\"1c2d\"><strong>Step 2.\u00a0<\/strong>Merge the data<\/h4>\n<pre class=\"wp-block-code\"><code>evergreen = evergreen_chip.merge(evergreen_price, on = '\u5e74\u6708\u65e5')\nevergreen = evergreen.merge(market, on = '\u5e74\u6708\u65e5')<\/code><\/pre>\n<p class=\"wp-block-paragraph\" id=\"5fd8\">In this step, we combine chip, stock price and market return data into one table with the usage of\u00a0<code><em>merge()<\/em><\/code>\u00a0and\u00a0<code><em>on<\/em><\/code>\u00a0based on their mutual column.<\/p>\n<figure class=\"wp-block-image aligncenter\"><img decoding=\"async\" alt=\"\" src=\"https:\/\/www.tejwin.com\/en\/wp-content\/uploads\/2026\/08\/0SSStm6IMuNyjyUL0.png\"\/><\/figure>\n<h4 class=\"wp-block-heading\" id=\"18a2\"><strong>Step 3.\u00a0<\/strong>Create signal identification column<\/h4>\n<pre class=\"wp-block-code\"><code>evergreen['\u5408\u8a08\u8cb7\u8ce3\u8d85'] = np.where(evergreen['\u5408\u8a08\u8cb7\u8ce3\u8d85(\u5343\u80a1)'] &gt;= 0, 1, 0)<\/code><\/pre>\n<p class=\"wp-block-paragraph\">Here we take advantage of\u00a0<code><em>np.where()<\/em><\/code><em>\u00a0<\/em>to create a new column and fill it with1 if the institutional investors are<strong>\u00a0net-buying<\/strong>, and 0, otherwise.<\/p>\n<pre class=\"wp-block-code\"><code>evergreen['\u6301\u80a1\u7387_5\u65e5MA'] = evergreen['\u5408\u8a08\u6301\u80a1\u7387%'].rolling(5).mean()\nevergreen['\u5408\u8a08\u6301\u80a1\u8b8a\u5316'] = np.where(evergreen['\u5408\u8a08\u6301\u80a1\u7387%'] - evergreen['\u6301\u80a1\u7387_5\u65e5MA'] &gt; 0, 1, 0)<\/code><\/pre>\n<p class=\"wp-block-paragraph\">To evaluate the change of shareholding ratio, we use the difference between shareholding ratio and its 5-day moving average to decide whether its value is relatively high or low.<\/p>\n<pre class=\"wp-block-code\"><code>evergreen = evergreen.dropna().reset_index(drop=True)<\/code><\/pre>\n<p class=\"wp-block-paragraph\" id=\"1dd2\">Finally, we utilize\u00a0<code><em>dropna()<\/em><\/code>\u00a0to remove NaN values and\u00a0<code><em>reset_index(drop=True)<\/em><\/code>\u00a0to reset the index and prevent the original index from forming a new column.<\/p>\n<figure class=\"wp-block-image aligncenter\"><img decoding=\"async\" alt=\"\" src=\"https:\/\/www.tejwin.com\/en\/wp-content\/uploads\/2026\/08\/0Pnqm0wKkZ0EDrH0n.png\"\/><\/figure>\n<h4 class=\"wp-block-heading\" id=\"87e8\"><strong>Step 4.\u00a0<\/strong>Add signal column<\/h4>\n<ul class=\"wp-block-list\">\n<li>Buy<\/li>\n<\/ul>\n<pre class=\"wp-block-code\"><code>evergreen['\u8a0a\u865f'] = np.where((evergreen['\u5408\u8a08\u8cb7\u8ce3\u8d85'] == 1)&amp;(evergreen['\u5408\u8a08\u6301\u80a1\u8b8a\u5316'] == 0), 'Buy', '')<\/code><\/pre>\n<ul class=\"wp-block-list\">\n<li>Sell<\/li>\n<\/ul>\n<pre class=\"wp-block-code\"><code>evergreen['\u8a0a\u865f'] = np.where((evergreen['\u5408\u8a08\u8cb7\u8ce3\u8d85'] == 0)&amp;(evergreen['\u5408\u8a08\u6301\u80a1\u8b8a\u5316'] == 1), 'Sell', evergreen['\u8a0a\u865f'])<\/code><\/pre>\n<p class=\"wp-block-paragraph\">Here we newly add the signal column and fill it with \u2018Buy\u2019, \u2018Sell\u2019 or empty string according to the value of the signal identification column. It\u2019s worth noting that when deciding whether or not to assign a \u2018Sell\u2019 value, we have to put the signal column in the third parameter\u00a0<strong>to not substitute the outcome of the previous assignment of \u2018Buy\u2019 signal<\/strong>. In other words, we keep the original judgement if the selling condition is not satisfied.<\/p>\n<pre class=\"wp-block-code\"><code>evergreen['\u8a0a\u865f'][len(evergreen)-1] = 'Sell'<\/code><\/pre>\n<p class=\"wp-block-paragraph\" id=\"2990\"><code><em>len(evergreen)<\/em><\/code>\u00a0represents the number of data and the index of the last data (12\/30) equals that number minus one. What we are doing is to manually assign a \u2018Sell\u2019 signal to the last day, indicating we\u2019ll close position at the end of 2020.<\/p>\n<figure class=\"wp-block-image aligncenter\"><img decoding=\"async\" alt=\"\" src=\"https:\/\/www.tejwin.com\/en\/wp-content\/uploads\/2026\/08\/0UWYUDqaxT_iwqthR.png\"\/><\/figure>\n<h4 class=\"wp-block-heading\" id=\"c55a\"><strong>Step 5.\u00a0<\/strong>Calculate strategy return<\/h4>\n<p class=\"wp-block-paragraph\" id=\"d6f7\">First of all, we create the variable\u00a0<code><em>hold<\/em><\/code><em>\u00a0<\/em>and assign 0 by default, meaning we have no stock on hand. Once\u00a0<strong>there\u2019s a buy signal and we don\u2019t have a stock<\/strong>, we assign 1 to the variable. However, if\u00a0<strong>we have a stock and meet a sell signal<\/strong>, we reset the value of the variable back to 0.<\/p>\n<pre class=\"wp-block-code\"><code>hold = 0<\/code><\/pre>\n<p class=\"wp-block-paragraph\">The value of the variable\u00a0<code><em>cost<\/em><\/code>\u00a0is also set 0 by default. If\u00a0<strong>there\u2019s a buy signal when we hold no stock<\/strong>, we will assign the next day\u2019s opening price as the cost of buying the stock.<\/p>\n<pre class=\"wp-block-code\"><code>cost = 0<\/code><\/pre>\n<p class=\"wp-block-paragraph\">Then we create the empty list\u00a0<code><em>Return<\/em><\/code>. When we\u00a0<strong>meet a sell signal while holding a stock<\/strong>, we use\u00a0<code><em>np.log()<\/em><\/code>\u00a0to calculate the holding period return. After taking friction cost into consideration, we adopt\u00a0<code><em>append()<\/em><\/code>\u00a0to add the continuous return into the list and add 0\u00a0<strong>under other circumstances\u00a0<\/strong>to make sure the length of the list matches the number of the data.<\/p>\n<pre class=\"wp-block-code\"><code>Return = []<\/code><\/pre>\n<p class=\"wp-block-paragraph\">Now we use\u00a0<code><em>for\u00a0<\/em><\/code>to loop as many times as the number of the data. Among each loop, we apply\u00a0<code><em>if\u00a0<\/em><\/code>to examine whether buy or sell signal occurs at the\u00a0<code><em>i<\/em><\/code>\u00a0day. If certain conditions are met, we calculate return and alter the value of some variables.<\/p>\n<pre class=\"wp-block-code\"><code>for i in range(len(evergreen)):\n    if evergreen['\u8a0a\u865f'][i] == '':\n        Return.append(0)\n    elif evergreen['\u8a0a\u865f'][i] == 'Buy':\n        if hold == 0:\n            cost = evergreen['\u6b21\u65e5\u958b\u76e4\u50f9'][i]\n            hold = 1\n            Return.append(0)\n        else:\n            Return.append(0)\n    elif evergreen['\u8a0a\u865f'][i] == 'Sell':\n        if hold == 1:\n            Return.append(100*(np.log(evergreen['\u6b21\u65e5\u958b\u76e4\u50f9'][i]\/cost)- 0.001425*2 - 0.003))\n            hold = 0\n        else:\n            Return.append(0)<\/code><\/pre>\n<p class=\"wp-block-paragraph\">Finally we take the list\u00a0<code><em>Return\u00a0<\/em><\/code>as our new column called chip analysis return.<\/p>\n<pre class=\"wp-block-code\"><code>evergreen['\u7c4c\u78bc\u9762\u5831\u916c\u7387(%)'] = Return<\/code><\/pre>\n<figure class=\"wp-block-image aligncenter\"><img decoding=\"async\" alt=\"\" src=\"https:\/\/www.tejwin.com\/en\/wp-content\/uploads\/2026\/08\/0sQAqG2lapljNhiKx.png\"\/><\/figure>\n<h4 class=\"wp-block-heading\" id=\"9e33\"><strong>Step 6.\u00a0<\/strong>Calculate the cumulative return and visualize the performance<\/h4>\n<pre class=\"wp-block-code\"><code>evergreen['\u7c4c\u78bc\u7d2f\u7a4d\u5831\u916c\u7387'] = evergreen['\u7c4c\u78bc\u9762\u5831\u916c\u7387(%)'].apply(lambda x: 0.01*x+1).cumprod()\nevergreen['\u5e02\u5834\u7d2f\u7a4d\u5831\u916c\u7387'] = evergreen['\u5e02\u5834\u5831\u916c\u7387%'].apply(lambda x: 0.01*x+1).cumprod()<\/code><\/pre>\n<p class=\"wp-block-paragraph\" id=\"9dd5\">We firstly use\u00a0<code><em>apply()<\/em><\/code>\u00a0to transform the form of return into<strong>\u00a0the decimal form with principal<\/strong>, then utilize\u00a0<code><em>cumprod()<\/em><\/code>\u00a0to calculate the cumulative return.<\/p>\n<figure class=\"wp-block-image aligncenter\"><img decoding=\"async\" alt=\"\" src=\"https:\/\/www.tejwin.com\/en\/wp-content\/uploads\/2026\/08\/0ihSJt-uOAHUDNok5.png\"\/><\/figure>\n<pre class=\"wp-block-code\"><code>plt.plot(evergreen['\u5e74\u6708\u65e5'], evergreen['\u7c4c\u78bc\u7d2f\u7a4d\u5831\u916c\u7387'], label = 'strategy')\nplt.plot(evergreen['\u5e74\u6708\u65e5'], evergreen['\u5e02\u5834\u7d2f\u7a4d\u5831\u916c\u7387'], label = 'market')\nplt.legend()\nplt.show()<\/code><\/pre>\n<p class=\"wp-block-paragraph\" id=\"6632\">Lastly, we present the plot with\u00a0<code><em>plt.plot()<\/em><\/code>\u00a0and<code><em>\u00a0plt.show()<\/em><\/code>\u00a0and show the label by using\u00a0<code><em>label\u00a0<\/em><\/code>and\u00a0<code><em>plt.legend()<\/em><\/code>.<\/p>\n<figure class=\"wp-block-image aligncenter\"><img decoding=\"async\" alt=\"\" src=\"https:\/\/www.tejwin.com\/en\/wp-content\/uploads\/2026\/08\/0RIwE7ZYGqozFFV3e.png\"\/><\/figure>\n<p class=\"wp-block-paragraph\" id=\"a5d3\">Obviously the cumulative return of this strategy is\u00a0<strong>much better than that of the market<\/strong>\u00a0during 2020.<\/p>\n<h4 class=\"wp-block-heading\" id=\"abf8\"><strong>Step 7.\u00a0<\/strong>Performance table<\/h4>\n<pre class=\"wp-block-code\"><code>cagr = [100*(evergreen['\u7c4c\u78bc\u7d2f\u7a4d\u5831\u916c\u7387'].values[-1]**(252\/len(evergreen)) - 1), 100*(evergreen['\u5e02\u5834\u7d2f\u7a4d\u5831\u916c\u7387'].values[-1]**(252\/len(evergreen)) - 1)]<\/code><\/pre>\n<p class=\"wp-block-paragraph\" id=\"cb5f\">We create the list\u00a0<code><em>cagr\u00a0<\/em><\/code>to store the compound annual growth rate of the strategy and market.\u00a0<code><em>values[-1]<\/em><\/code>\u00a0means we select the latest cumulative return and annualize it based on 252 trading days a year. Finally we subtract the principal from the annualized return.<\/p>\n<pre class=\"wp-block-code\"><code>std = [evergreen['\u7c4c\u78bc\u9762\u5831\u916c\u7387(%)'].std()*(252**0.5),evergreen['\u5e02\u5834\u5831\u916c\u7387%'].std()*(252**0.5)]<\/code><\/pre>\n<p class=\"wp-block-paragraph\">The list\u00a0<code><em>std\u00a0<\/em><\/code>is used to store the annualized standard deviation, which is the result of daily standard deviation adjusted by trading days a year.<\/p>\n<pre class=\"wp-block-code\"><code>sharpe_ratio = [(cagr[0] - 1)\/std[0],(cagr[1] - 1)\/std[1]]<\/code><\/pre>\n<p class=\"wp-block-paragraph\">Then we create the list\u00a0<code><em>sharpe_ratio<\/em><\/code>\u00a0to store chip analysis strategy and market\u2019s sharpe ratio. Here we assume the\u00a0<strong>riskless interest rate is 1%<\/strong>. Finally we use\u00a0<code><em>pd.DataFrame()<\/em><\/code>\u00a0to form a table<\/p>\n<pre class=\"wp-block-code\"><code>result = pd.DataFrame([cagr,std,sharpe_ratio], columns = ['\u7c4c\u78bc\u9762','\u5e02\u5834'], index = ['\u5e74\u5316\u5831\u916c(%)','\u5e74\u5316\u6a19\u6e96\u5dee(%)','\u590f\u666e\u6bd4\u7387'])<\/code><\/pre>\n<figure class=\"wp-block-image aligncenter\"><img decoding=\"async\" alt=\"\" src=\"https:\/\/www.tejwin.com\/en\/wp-content\/uploads\/2026\/08\/0X0cXcLqQyXK0aTQU.png\"\/><\/figure>\n<h2 class=\"wp-block-heading\" id=\"d0b0\"><strong>Conclusion<\/strong><\/h2>\n<p class=\"wp-block-paragraph\" id=\"9e4d\">You must have grasped the overall idea of chip analysis indicators and backtesting ! However,\u00a0<strong>there\u2019s no general strategy that guarantees profit all the time, so you must take this backtesting outcome seriously<\/strong>. If you want to have a longer backtesting period or more indicators, we highly recommend you to consider our\u00a0<a href=\"https:\/\/eshop.tej.com.tw\/E-Shop\/Edata_caseIntro\/3\" rel=\"noreferrer noopener\" target=\"_blank\">master plan<\/a>\u00a0to optimize your own strategy !<\/p>\n<h2 class=\"wp-block-heading\" id=\"f226\"><strong>Related Link<\/strong><\/h2>\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/api.tej.com.tw\/index.html\" rel=\"noreferrer noopener\" target=\"_blank\">TEJ API<\/a><\/li>\n<li><a href=\"https:\/\/eshop.tej.com.tw\/E-Shop\/Edata_intro\" rel=\"noreferrer noopener\" target=\"_blank\">TEJ E-Shop<\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Chip analysis and backtesting using TEJ API trial database Preface Generally speaking, big players such as institutional investors, insiders or other investors holding large amounts of shares have information advantages over retail investors. Thus, they are more likely to select stocks with potential growth and distance themselves from risky stocks. To decrease this kind of [\u2026]<\/p>\n","protected":false},"featured_media":2724,"template":"","tags":[46,65],"insight_category":[13],"class_list":["post-2725","insight","type-insight","status-publish","has-post-thumbnail","hentry","tag-chip-analysis","tag-python","insight_category-quant-research"],"acf":[],"_links":{"self":[{"href":"https:\/\/www.tejwin.com\/en\/wp-json\/wp\/v2\/insight\/2725","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.tejwin.com\/en\/wp-json\/wp\/v2\/insight"}],"about":[{"href":"https:\/\/www.tejwin.com\/en\/wp-json\/wp\/v2\/types\/insight"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.tejwin.com\/en\/wp-json\/wp\/v2\/media\/2724"}],"wp:attachment":[{"href":"https:\/\/www.tejwin.com\/en\/wp-json\/wp\/v2\/media?parent=2725"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.tejwin.com\/en\/wp-json\/wp\/v2\/tags?post=2725"},{"taxonomy":"insight_category","embeddable":true,"href":"https:\/\/www.tejwin.com\/en\/wp-json\/wp\/v2\/insight_category?post=2725"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}