Wer eine Aktie nahe ihrem 52-Wochen-Hoch kauft, kennt die Sorge: Was, wenn der vermeintliche Ausbruch sofort wieder zusammenfällt? Auch ein zusätzliches Volumen- oder Relative-Volume-Signal (RVOL) beantwortet diese Frage nicht zuverlässig. Für mich liegt der praktische Nutzen viel früher im Ablauf.

Ein Wert notiert fast am Jahreshoch, wird aber kaum gehandelt. Ein anderer hat plötzlich viel Volumen, ist vom Hoch jedoch weit entfernt. Wenn ich nur für wenige Kandidaten Zeit habe, welche sollte ich zuerst genauer untersuchen?

Mein grober Ablauf: erst nach der Position im 52-Wochen-Kursbereich filtern, dann nach dem absoluten Handelsvolumen. Erst bei den verbleibenden Werten schaue ich auf RVOL, Handelbarkeit und den Chart. In der tatsächlich geprüften Benutzeroberfläche waren 52W High und Volume als Filter aktiv. Die Spalte Relative Volume war für die nächste Prüfung sichtbar; einen numerischen RVOL-Grenzwert habe ich dort weder angewendet noch validiert.

Ein Screener verteilt Recherchezeit. Er erzeugt nicht automatisch ein Kaufsignal.

Zwei Filter nehmen unterschiedliche Fragen aus der Liste

Das 52-Wochen-Hoch stellt den aktuellen Kurs in den Kontext des vergangenen Jahres. Die Nähe dazu kann ein Hinweis auf relative Stärke oder Momentum sein. Ob ein Ausbruch hält oder der Kurs anschließend steigt, lässt sich daraus allein nicht ableiten.

Schon die Bedeutung von „nahe am Hoch“ muss klar sein. Die Finviz-Dokumentation zum Screener beschreibt Periodenhochs und Filter für prozentuale Abstände. „Höchstens 5 % unter dem Hoch“ lässt sich sauber als Forschungsregel berechnen. Daraus folgt aber nicht, dass eine Eingabe von 10 in das 52W-High-Feld eines anderen Produkts einen Abstand von 10 % bezeichnet.

Das Volumen spricht eine zweite Sorge an: Kann man die Aktie zu einem vernünftigen Preis überhaupt handeln? Bei dünn gehandelten Titeln muss ich Geld-Brief-Spanne, Tiefe des Orderbuchs und realistische Ein- und Ausstiegspreise genauer prüfen. Eine attraktive Kurskurve sagt nichts darüber aus, ob meine Order tatsächlich entsprechend ausgeführt würde.

Ich sehe das als Rechercheaufwand. Jeder illiquide Kandidat bedeutet eine zusätzliche Prüfung. Investor.gov erklärt Liquidität anhand der Möglichkeit, einen Vermögenswert ohne erhebliche Preiswirkung zu veräußern. Hohes Stückvolumen kann ein sinnvoller Hinweis sein, beweist aber weder einen engen Spread noch genug Tiefe im Orderbuch.

Nur nach Volumen zu filtern wäre ebenfalls unzureichend. Ein kräftiger Kursrückgang unter hohem Verkaufsdruck kann sehr umsatzstark sein. Ich nutze die Kriterien deshalb als Schnittmenge, nicht als zusammengezählte Kennzahl mit angeblich hoher Trefferquote.

Ein erfundenes Universum: von sechs Aktien auf vier, dann zwei

Ich möchte das zunächst ohne echte Kursdaten zeigen. Dafür habe ich S1 bis S6 als sechs nicht existierende Aktien angelegt und ihnen einen angenommenen aktuellen Kurs, ein angenommenes 52-Wochen-Hoch und ein fiktives Tagesvolumen zugeordnet.

Die erste Regel lässt nur Werte zu, deren aktueller Kurs mindestens 95 % des angenommenen Hochs erreicht. Die zweite verlangt mindestens eine Million gehandelte Aktien. 95 % und eine Million Stück sind frei gewählte Demonstrationswerte. Sie beschreiben weder die Einheiten noch die Funktionsweise eines produktiven Screener-Felds.

// Frei erfundene Werte, auch die Volumeneinheit dient nur dem Beispiel.
const stocks = [
  ["S1",  96, 100,  600000],
  ["S2",  49,  50, 1800000],
  ["S3", 190, 200,  900000],
  ["S4", 9.8,  10, 2400000],
  ["S5",  80, 100, 1600000],
  ["S6",  60, 100, 2200000],
];
// [Kürzel, angenommener Kurs, angenommenes 52-Wochen-Hoch, Tagesvolumen]
const nearHigh = stocks.filter(([, price, high]) => price / high >= 0.95);
const candidates = nearHigh.filter(([, , , volume]) => volume >= 1000000);
console.log(stocks.length, nearHigh.length, candidates.length); // 6 4 2
console.log(candidates.map(([id]) => id)); // ["S2", "S4"]

Die Ausgabe lautet 6, 4, 2. Nach beiden Bedingungen bleiben S2 und S4 übrig.

SchrittFiktive Aktien, die bleibenGrund für den Ausschluss
Start: 6S1, S2, S3, S4, S5, S6—
Mindestens 95 % des Hochs: 4S1, S2, S3, S4S5 und S6 liegen weiter unter ihrem Hoch
Zusätzlich mindestens 1 Mio. Stück: 2S2, S4S1 und S3 liegen unter der Volumenschwelle

Am interessantesten finde ich dabei S3. Der erfundene Kurs liegt bei 190, das Hoch bei 200 – exakt 95 %. Das Volumen beträgt aber nur 900.000 Stück, also 100.000 unter dem zweiten Grenzwert. Der Code schließt S3 sofort aus. Daraus folgt nicht, dass S3 die schlechtere Aktie ist oder keinerlei Recherche wert wäre.

Dieser Verlust von Grenzfällen gehört zu einem groben Filter dazu. Wenn ich heute nur ein paar Charts öffnen kann, akzeptiere ich den Kompromiss vielleicht. Untersuche ich ungewöhnliche Aktivität bei Aktien mit geringem Streubesitz, könnte S3 stattdessen auf eine zweite Liste mit Grenzfällen gehören. Die Schwelle priorisiert meine Zeit; sie bewertet nicht das Unternehmen.

Auch ein identisches Stückvolumen bedeutet bei verschiedenen Kursen etwas anderes. Als rein rechnerisches Beispiel entspräche eine Million Stück zu je 10 Yuan etwa 10 Mio. Yuan Handelswert; bei 100 Yuan wären es etwa 100 Mio. Yuan. Das sind keine beobachteten Transaktionen, und beide Beträge ersetzen keine Information über die Markttiefe. Handelswert, Umschlagshäufigkeit und Geld-Brief-Spanne sind oft aussagekräftiger als dieselbe Stückzahlschwelle für alle Titel.

Im echten Screener ist Filtern nicht dasselbe wie Sortieren

In einem JavaScript-Array ist die Schnittmenge zweier Bedingungen trivial. In einer echten Oberfläche muss ich zuerst sicher sein, dass ich überhaupt zwei Bedingungen hinzugefügt und nicht bloß die Reihenfolge der Tabelle geändert habe.

Dafür habe ich den NuvexLens-Screener verwendet, an dessen Pflege ich mitwirke. Direkt beobachten ließ sich: Nach Hinzufügen des zweiten Filters blieb der erste Filterchip sichtbar, und die angezeigte Zahl der Kandidaten wurde kleiner. Es ist praktisch, dafür nicht zwei Listen exportieren und von Hand abgleichen zu müssen. Ein besonderer Algorithmus des Backends ist dadurch jedoch nicht belegt.

Bei einer US-Markt-Overview-Ansicht konnte ich die Spalten Volume und Relative Volume sowie einen Filterzugang für 52W High sehen. Dass RVOL als Spalte vorhanden ist, heißt nicht, dass ein numerischer RVOL-Filter aktiv war. Die dort sichtbaren echten Einzelkurse und Wertpapierkennungen veröffentliche ich hier nicht.

Die eigentliche Beobachtung beider Filterchips stammt aus einer anderen Sitzung im CN-Markt: Über Add New Filter habe ich erst 52W High > 10 und danach Volume > 1000000 hinzugefügt. Beide Chips blieben gleichzeitig sichtbar, und die Kandidatenübersicht schrumpfte. Mehr lässt sich daraus nicht sicher ableiten: kein historischer Backtest, kein eingefrorenes identisches Aktienuniversum und kein Nachweis der internen Filterlogik. Die US-Spaltenansicht und die CN-Filteraktion gehören nicht zu einem gemeinsamen Kurssnapshot.

Bei einer Mehrfachfilterung kontrolliere ich inzwischen drei Dinge: Ist der erste Preisfilter noch vorhanden? Wurde die zweite Volumenbedingung wirklich über den Filtereditor ergänzt? Sehe ich eine gefilterte Menge oder lediglich anders sortierte Zeilen?

Das ist nicht nur eine theoretische Vorsicht. Bei einer meiner Kontrollen hatte ich das Sortiermenü der Spalte Volume geöffnet statt des numerischen Filters. Erst beim erneuten Weg über Add New Filter sah ich beide Bedingungen gleichzeitig. Sortieren ändert die Anzeige-Reihenfolge, Filtern die Auswahlmenge. Wenn sich zwischen zwei Beobachtungen Marktumfang oder Datenzeitpunkt ändern, beweist auch ein niedrigerer Zähler nicht, dass die neue Menge eine Teilmenge der alten ist.

Ebenso wenig dürfen zwei Zahlen verwechselt werden: Die fiktive Berechnung nutzt „innerhalb von 5 % des Jahreshochs“. Die tatsächliche UI-Eingabe lautete 52W High > 10. Solange die Definition und Einheit dieses Felds nicht verifiziert sind, darf ich die 10 nicht kurzerhand als „10 % Abstand zum Hoch“ interpretieren.

Die eigentliche Prüfung beginnt nach dem Aussortieren

Selbst wenn S2 und S4 echte Werte wären, würde ich wegen dieser beiden Filter nicht sofort handeln. Zuerst möchte ich wissen, wie aktiv die Aktie im Vergleich zu ihrem eigenen normalen Handelsvolumen ist. Die absolute Stückzahl dient als erster Grobfilter; danach können RVOL oder ein vergleichbar ermittelter historischer Durchschnitt helfen.

RVOL setzt aktuelles Volumen grundsätzlich ins Verhältnis zu einem passenden Durchschnitt. TradingView dokumentiert für die eigenen Funktionen unter anderem einen Ansatz mit den vorherigen zehn Perioden sowie eine andere Methode mit einem Vergleich zur gleichen Tageszeit. Das erklärt TradingViews Berechnung, nicht die verifizierte Backend-Formel des hier untersuchten Screeners. Insbesondere habe ich keinen RVOL-Filter > 1,5 angewendet oder dessen Wirkung gemessen.

Danach schaue ich auf die Kursstruktur. Nähert sich die Aktie dem alten Hoch, hat sie es gerade überwunden, oder ist sie nach einem Ausschlag bereits wieder zurückgefallen? Wo liegen mögliche Widerstände? Handelswert, Orderbuchtiefe, Spread, Stop-Level und Positionsgröße können die Entscheidung bei zwei formal ähnlichen Kandidaten völlig unterschiedlich ausfallen lassen.

Das Ergebnis 6 → 4 → 2 ist ausschließlich ein reproduzierbares fiktives Beispiel, kein Test auf realen Kursen. Die Beobachtung in der Oberfläche bestätigt nur zwei sichtbare Filterchips und die Änderung der Kandidatenanzeige. Eine Verbesserung der Rendite wurde weder gemessen noch nachgewiesen.

Die Reihenfolge ist das, was ich behalten möchte: zuerst nach Kursposition, dann nach Handelsaktivität filtern und anschließend die begrenzte Zeit auf Fragen verwenden, die wirklich eigenes Urteil erfordern. Ein Screener kann mir das Öffnen von Hunderten Charts ersparen. Er trifft trotzdem keine Anlageentscheidung für mich.

Dieser Beitrag dient ausschließlich Recherche- und Bildungszwecken und ist keine Anlageberatung.