Content uploaded by Andreas A Aigner
Author content
All content in this area was uploaded by Andreas A Aigner on Sep 25, 2019
Content may be subject to copyright.
The Arms Index aka TRIN
Andreas A. Aigner1 & Walter Schrabmair2
TradeFlags, Vienna, Austria; Medical University Graz, Graz, Austria
25 Sept 2019
In this paper we provide an in-depth analysis of the socalled Arms Index (aka. TRIN)
which is named after Richard Arms who introduced this technical indicator in 1967. It
became a fundamental indicator widely used and published in online and print media,
Wall Street Journal and CNBC for example. The index is used as a market breadth
indicator, used to interpret overbought and oversold market environments. A critical
analysis of this index and a more detailed look at the mathematics shows some flaws
which we address and helps interpret the value and range of this indicator.
1. Introduction
The index was created by Richard Arms in 1967 when he was working at a tiny retail broker
called EF Hutton. He was looking at very common figures available on his terminal of the current
stock market the number & volume of advancing and declining shares
Picture 1: Richard Arms http://www.armsinsider.com
Richard had the idea to look at the ratios of the advancing and declining stocks numbers and
volumes and one day decided to simply look at the ratio of the two ratios.
The Arms index is therefore a ratio of the number of stocks ratio and the volume ratio of stocks
advancing and declining at any given moment. He showed this to a colleague, Newton Zinder, at
the New York office, who gave it to Alan Abelson at Barron's, who was very keen on publishing.
Soon after publishing it at Barron's it was referred to many traders and even started displaying
at the NYSE Big Board under the code TRIN which it was most commonly referred to, the
TRaders INdex [13].
"I came up with this stupidly simple indicator
that combined the volume with the advancing
and declining stocks. I was the first guy to
think of it, but if i hadn't, someone else would
have. The very simplicity is what makes it so
effective." (Richard Arms) [13]
Richard went on to develop many other indicators involving the volume of shares. He introduced
a style of plotting the share price movement like the candlestick method but where the width of
each rectangle corresponded to the stocks volume trading on that day. It is called Equivolume,
making it easier to spot low volume days or big excessie volume days just simply by a charting
technique. He is a strong believer on the importance of the share volume as much as that in an
1991 interview with the Stock & Commodities magazine he was quoted as saying
"If the market were a wristwatch, it would be
divided into shares, not hours." (Richard Arms)
[14]
Richard Arms later on won the prestigious 1995 Market Technicians Award and has written a
number of books on this subject. He is admired by many practicioners and regarded as one of the
most famous market technicians of our time until he passed away recently (2017?).
Picture 2: NYSE Big Board showing the TRIN displayed (middle right)
2. Methodology
So how is it calculated? It consists of two ratios. The first ratio is the ratio of advancing to
declining stocks.
Ratio 1 = Count of Advancing Stocks / Count of Declining Stocks
The second ratio is the ratio between the stock volume of advancing and declingin stocks.
Ratio 2 = Stock Volume of Advancing Stocks / Stock Volume of Declining Stocks.
The TRIN is the number you get when you divide Ratio 1 by Ratio 2.
Trin = Ratio 1/Ratio 2
Another way to write it would be like this
TRIN = (A/D) / (AV/DV) = ( A * DV ) / ( D * AV ) [Eq. 0]
where
A = number of advancing shares
D = number of declining shares
DV = sum over all declining volume
AV = sum over all advancing volume
and where we sum over all shares traded regardless of dollar-value and simply count the number
of shares advancing or declining similar to the ADL.
2.1 Analysis
It is clear that if you have a day where the advancing volume (AV) is zero or the count of
declining shares (D) is zero you are going to be dividing by zero which leads to a singularity or
technically infinity.
You could write the function as such
f(x,y) = A / x*y
Figure 1: Illustrative sample chart of the TRIN function for stock counts from 0
to 100 and volume from 0 to 100,000
So clearly this index is not good around the start of the trading day, because each day you start
counting at zero. It also doesnt work in the above 2 cases where either AV or D is zero. So a day
where you only have declining volume or a day where you only have advancing stocks. This
could be more frequent than you think since you are not counting stocks which are not moving
at all as either declining or advancing. Stocks which are not moving on the day, ie have the same
trade price as the previous day will not get counted towards either A or D, or AV or DV likewise.
It is also clear that when you have a day when your advancing and declining stocks are of the
same count and the advancing and declining volume are the same that you will end up with an
indicator of 1.0 since both ratios will need to necessarily be 1, or the product of A*DV and the
product of D*AV need to coincidentally be exactly the same.
TRIN = 1 = A*DV / D*AV
therefore the index is =1 if either of these cases occur.
D * AV = A * DV [Eq 1] or , A/D = 1 & AV/DV = 1
or the ratio of AV/DV is exactly the same as the ratio of A/D
AV / DV = A / D
What does Eq [0] mean for the market? If we have a very bullish market day with almost all
stocks up then A/D is going to be very high, it is highly likely that the ratio is going to be
similarly high AV/DV. If the two ratios are the same we have a TRIN =1. How are we going to
get very low levels of TRIN << 1? We are going to get this when the ratio of AV/DV is much
bigger than the ratio of A/D is. That means a very high advancing volume AV bigger than the
declining volume DV yet a lower count of advancing stocks compared to declining stocks. So
that means a bigger volume in fewer advancing stocks (TRIN<<1). Likewise the opposite case
when TRIN is much bigger than 1 (TRIN >>1) happens when we have a bigger volume in fewer
declining stocks (TRIN>>1). Since the volume count is purely absolute there is no dollar value
associated with this, we cannot say that if we are looking at tiny cap stocks getting all the
volume. One thing to note here is that while the number of stocks is fixed there is a minimum &
maximum ratio of A/D, but for AV/DV there is no such limit. The number of stocks are always
integers on a finite range but the volume is a also always integers but on a theoretically infinite
range. Lets say your number of stocks you are counting is max 100 shares for simplicity. You
will have a minimum of 1/99=0.01 and max of 99/1=99 except for the obvious extreme cases of
either one being 0. But for the volume you might have for example a case of 1/1,000,000,000 =
0.000000001 or 1,000,000,000/1 = 1,000,000,000. Leading to TRINs of
0.01/0.000000001= very big or 99/100,000,000= very tiny. Meaning that the AV/DV ratio
is most likely dominating this indicator over the A/D ratio just purely by nature of numbers. This
is why Richard Arms says that a TRIN>1 is bearish and a TRIN<1 is bullish.
Lets simplify Eq [1] by two transformations. We know the number of stocks is fixed, so the sum
of all advancing, declining and unchanged stocks is a fixed number lets call it N.
We can write
N = A+D+𝜀
and further write A in terms of D as
A = N* - D
where we assume N*=N+𝜀 is almost identical since 𝜀 is going to be small. Likewise we can
simplify the volume to assume there is a constant volume of shares traded each day which is
fixed. Then we can write similarly
M = AV + DV + 𝜇
and also
AV = M* - DV.
Substituting this into Equation [1] we get
D × ( M* - DV ) = ( N* - D) × DV
which expands leads to
DV = M*/N* × D
or if we want to express it in terms of AV
D = N* - N*/M* × AV.
This simply means that the TRIN index is equal to 1 when the ratio of Declining Volume to
Descending Stocks is the same as the ratio of total Volume to total number of stocks.
If we knew the total volume traded everyday and we already know the total number of stocks
we know exactly when the TRIN will be 1.0, precisely when the Declining Volume has the same
ratio to the Declining stocks count as the M*/N* ratio. Furthermore this means that there is a
linear relationship between the Volume and the Count where the TRIN index is 1.0. We are
going to draw this into a contour plot of Volume versus Stocks.
Using these substitions in Equation [1] we arrive at this
TRIN = ( N* / D - 1 ) × ( M* / AV - 1) [ Eq 3]
which is zero at D=N* and AV = M* which is simply the same as saying D=0 or A = 0. Trivial. It
also has singularities at D=0 and AV=0. So at the very start of counting or measuring the traded
volume, if either of them is still zero we are going to have a singularity.
In summary
• D=0 or AV=0 TRIN ---> infinite (bottom and left of chart)
• A=0 or DV=0 TRIN ---> zero (top and right of chart)
Figure 2: Contour plot of the TRIN, showing the area less than 1, greater than 1
and the line where T=1
Lets expand Equation [3]we arrive at a mixed quadratic equation
TRIN = N* M* / (D AV) - N*/D - M*/AV + 1
or write this in terms of x=D and y=AV
TRIN(x,y) = N*M*/ (x y) - N*/x - M*/y + 1
If you remember the derivative of 1/x you will remember that the first derivative of 1/x is -x^-2.
Meaning the slope of this curve decreases faster than the curve itself since its to the power 2.
We have a gently sloping function out to the max values and infinity around either side being
zero.
2.2 Applications
Lets start looking at applications. Arms considers anything above 1.25 to be oversold and values
below 0.75 to be overbought.
Michael Sincere's book [13] suggests anything above 2.0 on the close to be a buy signal. Above
4.0 is a strong buy. If the TRIN drops below 0.5 on the close it is a sell signal and below 0.3 a
strong sell.
Tim Ord (Secret Science of Price and Volume, Wiley, 2008) suggests above 3.0 is a market
panic and above 5 or 6 we can have a peak.
Newton Zinder (from EF Hutton & Co) has determined that a consecutive 2 day reading greater
equal 2.0 is bullish [14].
Robert Nurock (from WallStreetWeek TV) uses the TRIN in his Wall Street Week Index and
considers a 10 day moving average reading above 1.2 to be bullish and a reading below 0.8 to be
bearish.
Richard Arms considers a bullish signal when the 10 day moving average of the TRIN is below
0.8 and a bearish signal when the 10 day moving average of the TRIN is greater than 1.2. Other
traders consider the lower bound to be 0.5 and the upper bound to be 2.0.
Alphier and Kuhn [15] look at levels greater than 2.56 over 21 years and found that it strongly
suggests that these entry points are very likely going to be profitable. They bought at this
trigger and held for 8 months unless there was another signal in that period. They were only in a
position 54% of the time and produced 441% returns compared to a buy and hold strategy of
192% return. They note that the TRIN is a good measure of the market fear and a good indicator
for market bargains.
Richard Arms considers values below 1.0 to be bullish and above 1.0 to be bearish. He writes
that a level of 1.0 is a balance between advancing and declining stocks. But as we have derived
above, a value of TRIN =1 may be achieved without A=D and AV=DV necessarily. This special
case when A=D and AV=DV is simply the middle-point along a linear path in the space of count
and volume of stocks. This is important to note since we are saying also that if the ratio's of the
two is the same then you end up with dividing R (the Ratio) with R and R/R = 1. So it is not
necessarily the value where you have the same number of advancing as declining stocks and the
same volume of advancing as declining stocks. And is far from an equilibrium as we normally
understand it. It is simply saying that there the number of advancing shares related to declining
shares is identical to the amount of shares traded of advancing to declining shares. In that sense
maybe the market is at 'parity' or 'equally distributed' between advancing and declining stocks,
but it is far from a balance between advancing to declining stocks as Richard Arms suggests
[16].
Colby [11] finds that levels greater than 1.444 and below 0.523 were bullish and statistically
significant at the 99% confidence over a 1-year holding period. They explain that no only
extremely high levels but also extremely low levels of the index are bullish entry signals. For
shorter holding periods of 1 and 3 months readings of 0.523 or lower were also bullish but at
95% confidence. TRIN levels above 0.523 but below 1.444 had no significance [11]. Colby also
looked the performance of a 10 day moving average and found that levels greater than 1.266
were very bullish over 1 year holding period and had a confidence level of 99.9%. He also used
repeated buy signals to extend the holding period as above mentioned authors.
Richard Arms recommends levels for various moving averages on his website, they are
MA Overbought Oversold
4 day <0.75 >1.25
10 day <0.7 >1.20
21 day <0.85 >1.10
55day <0.9 > 1.05
[Note: Why does Dick choose the 21 and 55 day? He likes the Fibonacci numbers since they give
him a naturally expanding time frame and also he admits in his course [18] Fibonacci adds a
little bit of pzazz and mystique to this for his clients.]
In addition to the Index being bullish and bearish around 1.0 Arms suggests that for extreme
readings above and below they are the indicating the opposite to what they are indicating in the
vicinity. So somewhere there has to be a turning point between bullishness and bearishness and
likewise. He suggests that levels much greater than 2.0 are signs of being oversold and levels
much lower than 0.5 signal overbought situations.
Similar to Alphier and Kuhn [15] oder Colby [11] they find that being contrarian these points is
profitable.
Now we want to determine when are points at which we should be bullish and bearish and have
the biggest chance of making profitable trading decisions. Using the results we have derived
above we are going to determine them in the following section.
3. Signal Analysis
What are good level to use? You can see from above there are various different
methods and applications of this signal. Practicioners have empirically or
through statistical calculations come up with levels which they found
profitable. Their levels are applicable to their assumptions and the specific set of
stocks that they have used to calculate. What are the significant thresholds in
the real world? How do we determine them? How can we determine useful
levels from various sets of stocks?
One normally looks at averages, moving averages and standard deviations away from the mean.
Can we do this here? Standard deviations assume that the data is normally distributed, meaning
that they fluctuate equally around the mean. Statistically we can test whether data is normally
distributed, there are a number of tests developed to check for normality. However lets first
look at a histogram of the distribution and compare this visually to a normal distribution of
corresponding mean and standard deviation.
Figure 3: Distribution of NYSE TRIN data compared to a normal distribution of
the corresponding mean and standard deviation (left) and a QQ plot (right)
The average here is 1.10 and has a standard deviation of 0.47 yet you can see a mass of values
occuring around 1.0 and largely below 1.0, while fewer are above 1.0 but they are more extreme.
The distribution is not symmetric around the average is one thing to note. It also visually doesnt
seem to fit into a normal distribution just by looking at it, it has much too narrow and peaks are
too high. How do we statistically test for normality?
There are a number of tests to run on this data to see whether it passes normality. The results
are as follows
• Shapiro-Wilk : p < 2.2e-16
• Kolmogorov-Smirnov : p < 8.162e-7
• Jarque Bera : p < 2.2e-16
Since all of them are much smaller than the required level of 0.05 we can conclude that the data
is not normally distributed. Another way to evaluate normality is to do a QQ plot which is
shown above.
Again the data points don't lie within the 5% confidence interval around the ideal normal
distribution.
What would be a way to make the data possibly look more normally distributed ? We have to
realize that we are dealing with a data set that is bounded by 0 on the left ie.
TRIN ∊ [ 0, ∞]
whereas normally distributed data is ∊ [ -∞, ∞]. We could look to transform the data using the
logarithm since this function maps the range [ 0, ∞] to [ -∞, ∞]. Lets do that and visually inspect
the data now using the new mean 0.02 and standard deviation 0.42.
Figure 4: Distribution of the logarithm of the NYSE TRIN data compared to a
normal distribution of the corresponding mean and standard deviation (red)
It still looks off quite a bit and if we do the same normality tests as above we dont get any
different values than before, which is not a surprise.
We could investigate further to see if we can fit a different kind of distrubtion to the data, but a
quick look through the common ones we couldnt find any similar distributions. But in any case
what are we interested in? Similar to the standard deviation we are interested in what level of
the TRIN we are going to have outliers, or where we have a high chance of probability that the
level of the TRIN will revert. With the 1 and 2 times standard deviation we look at the common
68.2% and 95.4% of population. Here we also want to look at these percentages but we find
its more useful to look at 85% and 95.4%. That means that we are looking at cases where we
have a 85% or 95.4% chance of reversion to the mean giving us excellent odds at winning on
either up or down days.
Subsequently we are always going to chart the following number of levels
• TRIN (grey)
• TRIN 5 day moving average ( Short Term Average) (blue)
• TRIN 10 day moving average (Medium Term Average) (pink)
• TRIN 100 day moving average (Long-Term average) (black)
• TRIN4.6 — 4.6% probability (200 days) (green dotted)
• TRIN15 — 15% probability (200 days) (green)
• TRIN85 — 85% probability (200 days) (red)
• TRIN95.4 — 95.4% probability (200 days) (red dotted)
We look at a moving probability because it makes sense to monitor it as time passes, the
window of 200 is maybe too short but should be adjusted the more data is captured and will
improve accuracy of the data. But at some point one will have to compromise between moment
and long-term observations. Now lets get to the Results.
4. Results
Lets look at the official TRIN data for the NYSE. Looking at the chart you see the actual data
(grey), a 5 day moving average (blue), a 10 day moving average (pink) and a 100-day moving
average (black) together with the 4 probability levels in red and green. You also see the
reference fixed lines at 0.5 and 2. Current values for the probabilities are
TRIN15%
TRIN85%
TRIN4.6%
TRIN95.4%
0.800000
1.46
0.620000
1.87
Compare this to the levels mentioned above of 1.444 and 0.523 at 99% confidence what Colby
found. It seems almost similar except for the upper bound we would suggest to use 1.87. The
approach we use is differnet to Colby's, where he measures the performance for 6-12months
after a certain level is breached. We only look at the probability of the occurrence of such a
signal and the deviation from the equilibrium (around the mean) and we expect that significant
deviations from the mean will lead to reversals. We dont really need to look at the price
performance subsequently to know if its going to be profitable or not. We are just going to leave
this here as a conjecture, which still needs to be proven.
What else does this chart tell us? We can confirm what we saw from the data above that the
equivalent levels of 15 and 85% and 0.046% and 95.4% are not symmetric around the mean.
We also can confirm that the commonly mentioned levels of 0.5 and 2.0 fixed are good levels to
use, but you are not going to catch all the entry points you wished for since you are probably
looking at 99.9% chance of reversal, the mega-extreme cases so to speak. This is not going to
give you enough good entry points and we prefer to look at a moving probability curve over a
reasonably long time frame.
The asymmetry around the mean becomes even more apparent if we look at the TRIN for all our
US underliers. Our levels become
TRIN15%
TRIN85%
TRIN4.6%
TRIN95.4%
0.842100
1.3914
0.705900
1.5663
So while these look similar on the low end of probabilities, they look completely different on the
high end. You will need to monitor entirely different levels in this case.
Lets look at all stocks that we monitor globally, again the levels are asymmetric around the
mean as expected and they are
TRIN15%
TRIN85%
TRIN4.6%
TRIN95.4%
0.724900
1.4641
0.608800
1.9031
We will get different triggers looking at different numbers of stocks, which seems obvious. But
its important to note, since if you are trading the futures across regions, or say you dont want to
trade the US market because thats where everyone is trading and looking at, you want to look
at other regions, where you will have a bigger chance of reaping profits because simply the index
is not calculated and published as widely as on the TRIN NYSE.
Interesting also is to look at regions or countries in particular. We investigate for this study
Taiwan (TW), Hong Kong (HK), Germany (DE) and Australia (AX). And their charts are looking
like this:
Figure 5: Time Series of TRIN for Hong Kong (HK), Taiwan (TW), Australia (AX)
and Germany (DE)
5. Criticism
One critique of this index is the ratio of volumes we use. We can argue that this through the ratio of
advancing and declining volume it is overestimating the impact of smaller value stocks, that is stock
prices which are smaller, as compared to stocks with bigger stock prices. Assuming we had all stocks
pretty much all similar order of magnitude of dollar value we would be satisfied with using just simply
the volume to calculate a ratio of volumes. Yet when you have a big amount of stocks with very small
prices compared to a few stocks with very large prices, you are going to overestimate the impact of
these smaller stocks, since you will exagerate the impact a small notional of USD traded as compared
to the impact of big $ notionals traded.
It would seem reasonable to assume that the volume increases roughly with decreasing $ price of the
stock, but will drop off towards the very small illiquid names and drop off towards the really expensive
names due to illiquidity. So there is somewhere a likely linear relationship between stock price and
volume that may or may not breakdown. But why leave the possibility of this contamination in the
Index? Why not remove it?
We assume that Richard back in the old days at his then cutting-edge terminal had only the Net
Volumes available and not the $ Net Volumes. And we are pretty sure if he had had the $ Net Volumes
available he would have definitely have preferred using the $ notional ratio instead of the volume ratio.
On the other hand the ratio of advancing issues to declining issues is irrespective of $ notional as well.
Should one weight this ratio as well and count stocks of higher dollar price more than stocks of smaller
dollar value? This is probably an idea worth looking at and a point for further study. We suggest a ratio
of dollar-weighted A/D and dollar weighted volume is probably a more accurate indicator since it wont
be distorted by the dollar values of the stocks.
Whats a common distribution of stock prices on the US market. We can plot a histogram of stock
prices and bucket them in $ buckets to see how it is distributed.
Figure 6: Distribution of Prices for the US (top left) and Global (bottom left) and
closeups of US and Global (top right and bottom right)
You can see that by summing over the volume only one is equating the value of 1 stock purchase of
tiny $ price the same way as 1 stock purchase of a 1000$ stock. The Arms Index is therefore not
weighted according to the market cap of the stock which you might be forgiven to assume, but instead
to the dollar-value of the stock. The smaller $-values of the stocks contaminate the volume traded on an
otherwise equally weighted index. The case where all the stocks would have an equal weight would
only be if all the stocks had more or less the same dollar-value, which is clearly not true (see figure),
instead the $-value curve is steeply skewed towards small dollar values. You can explain this to the
laymen in very simple terms as such:
Say you were a fruit and veggie trader and you
had 'good' and 'rotten' produce, then the
number of 'good' versus 'rotten' produce was
indeed an interesting number (here A/D), but
when it comes to the count of such 'good' and
'rotten' produce, if you had to fill a truck full
of the rotten produce and you knew it was a
1000 pieces, you would want to know is it
1000 blueberries or 1000 pumpkins, since you
won't necessarily fit a 1000 pumpkins into
your truck.
Same applies here, what we are interested in is the $-volume of each stock and sum of the 'advancing'
volume ('good' volume) and 'declining' volume ('rotten' volume).
Therefore we won't touch A/D as its normalized already, and every stock is treated equally, but we
normalize the AV/DV ratio by the weight corresponding to the total net dollar-weight of all stocks.
When we do this we get the following 'Normalized TRIN' and for the US stocks it looks like this
You can see the period around December 2018/ January 2019 is a lot more pronounced towards the
SELL side than before and we think it clearly shows you it is working a lot better than non-
normalized. Lets look further back into the past we get this
Here you can see the Feb 2018 selloff peak very very clearly as a very extreme level. So high that even
the 5 day and 10 day average get pulled beyond a 97% probability level. We also see the peak in
September 2018 which is also a significant date which kind of set the start off a broader selloff that
peaked in December/January of 2018/2019.
6. Conclusion
We have analysed the TRIN Index by Richard Arms here. We have shown that there exists an infinite
amount of possibilities for a TRIN level of 1.0 along combinations of advancing stocks and declining
volumes. We have shown that this is not necessarily an equilibrium level where this occurs. We have
gone through past empirical findings and statistically analysed the TRIN distribution. Subsequently we
have derived values where the possibilities of reversals are maximized and found them to be in line
with empirical findings yet more precisely defining a level of precise statistical chance. We have
derived levels for the NYSE, the US stock market as a whole, the global stock market and specific
markets such as Australia, Germany, Taiwan and Hong Kong. In all these regions we arrive at different
levels to trade. Finally we have suggested some possible improvements over the standard TRIN index
calculation.
Acknowledgements: We thank Jon Bryan for helpful discussions we had on TRIN.
[1] https://en.wikipedia.org/wiki/TRIN_(finance)
[2] NYSE TRIN data from https://www.barchart.com/stocks/quotes/$TRIN
[3] http://www.livecharts.co.uk/MarketCharts/trin-chart.php
[4] http://www.armsinsider.com/education/whatistrin/whatistrin.asp
[5] https://www.investopedia.com/terms/a/arms.asp
[6] https://school.stockcharts.com/doku.php?id=market_indicators:arms_index
[7] https://www.cypresspoint.com/users_manual/ArmsIndex.pdf
[8] http://www.technicalanalyst.co.uk/wp-content/uploads/2014/01/ARMS.pdf
[10] "Stop and Make Money" Richard Arms, Wiley
[11] "The Encyclopedia of Technical Market Indicators" Robert Colby, McGrawHill, p92- 105-114
[12] "Technical Analysis" JP. Murphy, p.444, Chapter 18.
[13] "All about Market Indicators" Michael Sincere, 2011, p.41, [ISBN: 978-0-07-175043-1]
[14] "Market Breadth Indicators" Gregory L Morris, 2015, Chapter 9
[15] "A helping hand from the Arms Index", James Alphier & Bill Kuhn, 1987, Vol 5:4 (142:143)
Stocks & Commodities
[16] "The Arms Index" Richard W Arms Jr.
[17] https://commodity.com/technical-analysis/arms-index-trin/
[18] "The New Arms Index Course" Richard Arms DVD Oct 2008
[19] https://www.wsj.com/market-data/stocks/marketsdiary
[20] List of NYSE stocks http://www.eoddata.com/symbols.aspx
[21] List of NYSE stocks ftp://ftp.nasdaqtrader.com/symboldirectory/
[22] https://markets.cboe.com/us/equities/market_share/