How does BoxWhiskerChart detect outliers?

iqrc = "IQRCoefficient" /. ChartElementData["BoxWhisker", "Options"];

1.5

fences = Quartiles[data][[{1, 3}]] + {-1, 1} iqrc InterquartileRange[data]

outliers = Select[Not @* Between[fences]] @ data

{-3.0844, -3.4005}

which matches the vertical coordinates of outlier glyphs:

Cases[BoxWhiskerChart[data, "Outliers", PerformanceGoal -> "Speed"], 
 Inset[_, {_, a_}] :> a, All]

{-3.0844, -3.4005}


It is actually in the help documentation as the last item. Outliers are 1.5 InterQuartileRanges (IQR) away from the nearest quartile and Far Outliers are 3 IQR distant.

 Documentation Snippet from Properties & Relations