Calculation of the SISTRIX visibility index

Along with Xovi, the SISTRIX tool is the most widely used analysis program in Germany in the area of ​​SEO. The visibility index has established itself as a quasi-standard for the visibility of a page in Google search. The parameters that are included in its calculation are, for example , explained here and here and here and here and here , but an exact calculation formula is not officially published. The following are the results of my six-month personal research, which do not claim to be complete or correct.


With

  • \(A_l\): SISTRIX keyword set (sorted amount of firmly defined keywords for a specific country, set contains constant share - collected on a 12-month average traffic basis - as well as smaller varying share)
  • \(\vert A_l \vert\) : Thickness of \(A_l\) with \(A_l\) \(\vert A_{DE} \vert = 1.000.000\) (status: 01.10.2021)
  • \(k \in A_l\): Keyword off \(A_l\)
  • \(u\): URL (to be interpreted as a domain, subdomain, directory, individual URL, depending on the format)
  • \(r_{uklgt}\) : Ranking of the URL \(u\) in the organic search results of the search engine Google for the keyword \(k\) in the country \(l\) on the device type \(g\) at the time \(t\)
  • \(s_{klgt}\) : Search volume (average search queries per month with data from SISTRIX, not from Google Keyword Planner , but according to the company's own statement, cumulated from over a dozen mostly external data providers) for the keyword \(k\) in the country \(l\) on the device type \(g\) at the time \(t\)
  • \(c_{uklgt}\) : Estimated clicks on the URL \(u\) for the keyword \(k\) in the country \(l\) on the device type \(g\) at the time \(t\)
  • \(l \in L=\{DE;...;JP\}\) : Country with \(\vert L \vert=30\) (as of: 01.06.2021)
  • \(g\in\{D;M\}\): Device type (desktop / mobile)
  • \(t\): Time (date at 00:00:00 a.m.)
  • \(S_{ulgt}\) : SISTRIX visibility index of the URL \(u\) the country \(l\) on the device type \(g\) at the time \(t\)
  • \(W_S = \, \mathbb{Q}^{+}_{0}\) values \(W_S = \, \mathbb{Q}^{+}_{0}\)

is applicable

$$S_{ulgt} = \sum_{k=1}^{\vert A_l \vert} f(r_{uklgt}, c_{uklgt})$$

with

$$\begin{multline} \mathbb{N_0} \times \mathbb{Q}^{+}_{0} \to \, \mathbb{Q}^{+}_{0}, f(r, c) = ((1-\text{sgn}(r - 1)^2) \cdot ((1-\text{ceil}(0.5 \cdot \text{sgn}(c-34{,}4796))) \cdot 0{,}0194 + \\ (\text{ceil}(0.5 \cdot \text{sgn}(c-34{,}4796))) \cdot ((1+\text{floor}(0.5 \cdot \text{sgn}(c-378{,}325))) \cdot 0{,}125 - \\ (\text{floor}(0.5 \cdot \text{sgn}(c-378{,}325))) \cdot (0{,}0004 \cdot c + 0{,}0119)))) + (\text{sgn}(r-1)^2 \cdot \\ ((1-\text{sgn}(r - 2)^2) \cdot ((1-\text{ceil}(0.5 \cdot \text{sgn}(c-17{,}418))) \cdot 0{,}0136 + \\ (\text{ceil}(0.5 \cdot \text{sgn}(c-17{,}418))) \cdot ((1+\text{floor}(0.5 \cdot \text{sgn}(c-230{,}6839))) \cdot 0{,}125 - \\ (\text{floor}(0.5 \cdot \text{sgn}(c-230{,}6839))) \cdot (0{,}0006 \cdot c + 0{,}0035)))) + (\text{sgn}(r-2)^2 \cdot \\ ((1-\text{sgn}(r - 3)^2) \cdot ((1-\text{ceil}(0.5 \cdot \text{sgn}(c-11{,}0236))) \cdot 0{,}0098 + \\ (\text{ceil}(0.5 \cdot \text{sgn}(c-11{,}0236))) \cdot ((1+\text{floor}(0.5 \cdot \text{sgn}(c-231{,}3121))) \cdot 0{,}125 - \\ (\text{floor}(0.5 \cdot \text{sgn}(c-231{,}3121))) \cdot (0{,}0006 \cdot c + 0{,}0025)))) + (\text{sgn}(r-3)^2 \cdot \\ ((1-\text{sgn}(r - 4)^2) \cdot ((1-\text{ceil}(0.5 \cdot \text{sgn}(c-8{,}8619))) \cdot 0{,}0077 + \\ (\text{ceil}(0.5 \cdot \text{sgn}(c-8{,}8619))) \cdot ((1+\text{floor}(0.5 \cdot \text{sgn}(c-219{,}6195))) \cdot 0{,}125 - \\ (\text{floor}(0.5 \cdot \text{sgn}(c-219{,}6195))) \cdot (0{,}0006 \cdot c + 0{,}002)))) + (\text{sgn}(r-4)^2 \cdot \\ ((1-\text{sgn}(r - 5)^2) \cdot ((1-\text{ceil}(0.5 \cdot \text{sgn}(c-8{,}0684))) \cdot 0{,}0068 + \\ (\text{ceil}(0.5 \cdot \text{sgn}(c-8{,}0684))) \cdot ((1+\text{floor}(0.5 \cdot \text{sgn}(c-249{,}3706))) \cdot 0{,}125 - \\ (\text{floor}(0.5 \cdot \text{sgn}(c-249{,}3706))) \cdot (0{,}0006 \cdot c + 0{,}0017)))) + (\text{sgn}(r-5)^2 \cdot \\ ((1-\text{sgn}(r - 6)^2) \cdot ((1-\text{ceil}(0.5 \cdot \text{sgn}(c-5{,}357))) \cdot 0{,}0058 + \\ (\text{ceil}(0.5 \cdot \text{sgn}(c-5{,}357))) \cdot ((1+\text{floor}(0.5 \cdot \text{sgn}(c-133{,}2103))) \cdot 0{,}1011 - \\ (\text{floor}(0.5 \cdot \text{sgn}(c-133{,}2103))) \cdot (0{,}0007 \cdot c + 0{,}0015)))) + (\text{sgn}(r-6)^2 \cdot \\ ((1-\text{sgn}(r - 7)^2) \cdot ((1-\text{ceil}(0.5 \cdot \text{sgn}(c-4{,}3643))) \cdot 0{,}0049 + \\ (\text{ceil}(0.5 \cdot \text{sgn}(c-4{,}3643))) \cdot ((1+\text{floor}(0.5 \cdot \text{sgn}(c-90{,}3704))) \cdot 0{,}0727 - \\ (\text{floor}(0.5 \cdot \text{sgn}(c-90{,}3704))) \cdot (0{,}0008 \cdot c + 0{,}0013)))) + (\text{sgn}(r-7)^2 \cdot \\ ((1-\text{sgn}(r - 8)^2) \cdot ((1-\text{ceil}(0.5 \cdot \text{sgn}(c-3{,}3292))) \cdot 0{,}0039 + \\ (\text{ceil}(0.5 \cdot \text{sgn}(c-3{,}3292))) \cdot ((1+\text{floor}(0.5 \cdot \text{sgn}(c-87{,}6123))) \cdot 0{,}0706 - \\ (\text{floor}(0.5 \cdot \text{sgn}(c-87{,}6123))) \cdot (0{,}0008 \cdot c + 0{,}0011)))) + (\text{sgn}(r-8)^2 \cdot \\ ((1-\text{sgn}(r - 9)^2) \cdot ((1-\text{ceil}(0.5 \cdot \text{sgn}(c-2{,}944))) \cdot 0{,}0029 + \\ (\text{ceil}(0.5 \cdot \text{sgn}(c-2{,}944))) \cdot ((1+\text{floor}(0.5 \cdot \text{sgn}(c-75{,}6014))) \cdot 0{,}0515 - \\ (\text{floor}(0.5 \cdot \text{sgn}(c-75{,}6014))) \cdot (0{,}0007 \cdot c + 0{,}0012)))) + (\text{sgn}(r-9)^2 \cdot \\ ((1-\text{sgn}(r - 10)^2) \cdot ((1-\text{ceil}(0.5 \cdot \text{sgn}(c-2{,}4797))) \cdot 0{,}0019 + \\ (\text{ceil}(0.5 \cdot \text{sgn}(c-2{,}4797))) \cdot ((1+\text{floor}(0.5 \cdot \text{sgn}(c-36{,}7911))) \cdot 0{,}0199 - \\ (\text{floor}(0.5 \cdot \text{sgn}(c-36{,}7911))) \cdot (0{,}0005 \cdot c + 0{,}0005)))) + (\text{sgn}(r-10)^2 \cdot 0)))))))))) \end{multline}$$

This formula was primarily extracted through reverse engineering using the official SISTRIX A PI . The basic idea was: reduce the problem to simple examples (find URLs with a positive visibility index using only one/two/three/... keywords) and then try to reproduce more complex cases.

Properties of the visibility index:

  • Only the keywords of the "permanent keyword set" of 1,000,000 keywords are included in the visibility index, not the keywords of the constantly expanding "complete database" (which adapts to current events and circumstances), which currently comprises 100,000,000 keywords (As of October 1st, 2021). The respective keyword groups can easily be filtered by selecting a value under "Date" or by setting the value extended to 0 in the API. The standard data or historical data are constant and have been collected on a weekly basis since 2008, now on a daily basis.
  • AMP hits are not included in the visibility index.
  • It is advisable to start with the analyzes in recently created countries such as Romania, Croatia, Slovenia & Bulgaria or by creating your own visibility index . The reason for this is that SISTRIX carries "historical baggage" with it in countries like Germany, which means that keywords that used to have a higher weighting are currently being included even more than one would expect, despite low search volumes (even for a long time). According to support, the whole thing should be gradually adjusted and no longer be seen in the long term.
  • Contrary to my original assumption, the search volume only plays an indirect role for the visibility index. Instead, the clicks to be expected are crucial. The relationship between search volume and estimated clicks is mainly based on the estimated search intention , which is also indicated. SISTRIX itself points this out explicitly .
  • The expected number of clicks is the driving factor of the visibility index. Its impact is capped both upwards and downwards, meaning the visibility index always fluctuates linearly between an upper and lower limit.
  • The clicks cannot be accessed via the official API, but only via the web interface or via a manual CSV export. In both cases, the values ​​are rounded, but the DOM of the "Keywords" view also contains the original values:
In addition to the rounded values, you can also find the raw values.

The following formula can also be used in Excel or Google Sheets; It calculates the visibility index for a spreadsheet in which each row contains a keyword with its position in column A and its expected clicks in column B:

=SUMME(WENN(A1:A999999=1;WENN(B1:B999999<=34,479607495389;0,0194;WENN(B1:B999999>=378,32500379436;0,125;(0,00037306471297181*B1:B999999+0,011944496557952))); WENN(A1:A999999=2;WENN(B1:B999999<=17,418044883225;0,0136;WENN(B1:B999999>=230,68394113271;0,125;(0,00055449577110866*B1:B999999+0,0035350976909409))); WENN(A1:A999999=3;WENN(B1:B999999<=11,023611716899;0,0098;WENN(B1:B999999>=231,31214231278;0,125;(0,00059715499256153*B1:B999999+0,0025455442270028))); WENN(A1:A999999=4;WENN(B1:B999999<=8,8618633829445;0,0077;WENN(B1:B999999>=219,61948739302;0,125;(0,00063710437878404*B1:B999999+0,0020405503130787))); WENN(A1:A999999=5;WENN(B1:B999999<=8,0683702817689;0,0068;WENN(B1:B999999>=249,37064996217;0,125;(0,00058906284391034*B1:B999999+0,0017391721053351))); WENN(A1:A999999=6;WENN(B1:B999999<=5,3569717824498;0,0058;WENN(B1:B999999>=133,21031841331;0,1011;(0,00074744619531311*B1:B999999+0,0015021940435474))); WENN(A1:A999999=7;WENN(B1:B999999<=4,3643109311333;0,0049;WENN(B1:B999999>=90,370431493381;0,0727;(0,00078977592541601*B1:B999999+0,0012962057526498))); WENN(A1:A999999=8;WENN(B1:B999999<=3,3291657423134;0,0039;WENN(B1:B999999>=87,612293584114;0,0706;(0,00079399080394233*B1:B999999+0,0010648385910406))); WENN(A1:A999999=9;WENN(B1:B999999<=2,9439881662062;0,0029;WENN(B1:B999999>=75,601377547472;0,0515;(0,00066458507066795*B1:B999999+0,0011972721128791))); WENN(A1:A999999=10;WENN(B1:B999999<=2,4796588403417;0,0019;WENN(B1:B999999>=36,79114711734;0,0199;(0,00052397754322654*B1:B999999+0,00053850952142599))); 0)))))))))))

This allows the following results to be produced:

CountryDeviceDate\(S_{echt}\)\(S_{berechnet}\)\(\Delta\)\(\Delta_{\%}\)Url / directory
SIM.29.10.21\( 0{,}1348 \)\( 0{,}1348 \)\( 0{,}0000 \)\( 0{,}00% \)https://support.google.com/youtube/?hl=sl
SIM.29.10.21\( 0{,}2156 \)\( 0{,}2155 \)\( 0{,}0001 \)\( 0{,}05% \)https://Me.twitter.com/youtube
SIM.29.10.21\( 0{,}3746 \)\( 0{,}3740 \)\( 0{,}0006 \)\( 0{,}16% \)https://sl.m.wikipedia.org/wiki/YouTube
SIM.29.10.21\( 0{,}6771 \)\( 0{,}6760 \)\( 0{,}0011 \)\( 0{,}16% \)https://m.facebook.com/youtube/
SIM.29.10.21\( 0{,}6836 \)\( 0{,}6830 \)\( 0{,}0006 \)\( 0{,}09% \)https://x2convert.com/en117/download-youtube-to-mp3-music
SIM.29.10.21\( 0{,}7636 \)\( 0{,}7555 \)\( 0{,}0081 \)\( 1{,}06% \)https://www.youtubekids.com/
SIM.29.10.21\( 0{,}8749 \)\( 0{,}8730 \)\( 0{,}0019 \)\( 0{,}22% \)https://www.4kdownload.com/products/youtubetomp3/6
SIM.29.10.21\( 4{,}0020 \)\( 3{,}9980 \)\( 0{,}0040 \)\( 0{,}10% \)https://ytmp3.cc/en23/
SIM.29.10.21\( 8{,}0520 \)\( 8{,}0520 \)\( 0{,}0000 \)\( 0{,}00% \)https://support.google.com/youtube/
SIM.29.10.21\( 11{,}6600 \)\( 11{,}6100 \)\( 0{,}0500 \)\( 0{,}43% \)https://m.facebook.com/events/
SIM.29.10.21\( 19{,}7000 \)\( 19{,}6890 \)\( 0{,}0110 \)\( 0{,}06% \)https://minecraft.fandom.com/wiki/
SIM.29.10.21\( 32{,}5900 \)\( 32{,}5890 \)\( 0{,}0010 \)\( 0{,}00% \)https://hr.m.wikipedia.org/wiki/
ROM.29.10.21\( 0{,}1516 \)\( 0{,}1516 \)\( 0{,}0000 \)\( 0{,}00% \)https://lol.fandom.com/wiki/LCK/2021_Season/Summer_Season
MRM.29.10.21\( 0{,}2191 \)\( 0{,}2190 \)\( 0{,}0000 \)\( 0{,}00% \)https://starwars.fandom.com/wiki/Mandalorian
BGM.03.11.21\( 0{,}3703 \)\( 0{,}3702 \)\( 0{,}0001 \)\( 0{,}03% \)https://leagueoflegends.fandom.com/wiki/List_of_champions

The difference between the actual and calculated values arises from rounding errors and the limited dataset used to train the model. The above explanations can serve as a basis for further refining the formula and, for example, calculating the relationship between search volume and expected clicks. Anyone interested in the scripts developed during my research is welcome to contact me .

Back