Volatilste US-Aktien: Volatilität in Euro gerechnet
Welche US-Aktien schwanken am stärksten? Realisierte Volatilität p.a. über 30 und 252 Handelstage, dieselbe Rechnung in Euro und der Blick auf die ruhigen Namen.
Die volatilsten US-Aktien aus dem liquiden Large-Cap-Universum kommen über die letzten 30 Handelstage auf eine annualisierte Volatilität von bis zu 210 Prozent. Am ruhigen Ende derselben Auswahl stehen Werte um 17 Prozent p.a. Beide Enden stehen unten als Panel, jeweils in Dollar gerechnet und zusätzlich in Euro, also so, wie eine unbesicherte US-Position aus dem Euroraum beim Anleger ankommt. Der Abstand zwischen den beiden Rechnungen ist kleiner, als die Diskussion über Währungsrisiko erwarten lässt, und er lässt sich auf Basispunkte genau beziffern.
Welche US-Aktien sind am volatilsten?
Das Universum für dieses Panel ist bewusst eng gezogen: Unternehmen mit mehr als 20 Milliarden US-Dollar Börsenwert, mehr als 5 Millionen Stück durchschnittlichem Tagesumsatz und einem Kurs über 10 US-Dollar. Damit bleiben marktenge Nebenwerte und Pennystocks außen vor, deren Kursausschläge sich kaum von ihren Liquiditätslücken trennen lassen. Übrig bleiben Namen, die jeder deutsche Broker im Angebot hat.
| ticker | vol_30d_pct | vol_252d_pct |
|---|---|---|
| APH | 210 | 85 |
| CRDO | 99 | 96 |
| MSTR | 94 | 80 |
| CRCL | 90 | 95 |
| EIX | 87 | 39 |
| BE | 82 | 112 |
| CRWD | 82 | 54 |
| COHR | 81 | 87 |
| COIN | 78 | 72 |
| PCG | 78 | 36 |
| MRNA | 75 | 128 |
| DELL | 74 | 72 |
Das exakte SQL hinter jeder Zahl
WITH
universe AS (
SELECT ticker
FROM global_markets.stocks_ratios
WHERE date >= today() - 150
AND ticker NOT IN ('SPCX')
GROUP BY ticker
HAVING argMax(market_cap, date) > 20000000000
AND argMax(average_volume, date) > 5000000
AND argMax(price, date) > 10
),
series AS (
SELECT
ticker,
arrayMap(t -> t.2, arraySort(t -> t.1, groupArray((date, toFloat64(close))))) AS px
FROM global_markets.stocks_daily_aggs
WHERE ticker IN (SELECT ticker FROM universe)
AND date >= today() - 420
AND date < today()
AND close > 0
GROUP BY ticker
)
SELECT
ticker,
toUInt32(round(arrayReduce('stddevSamp', arraySlice(r, -30)) * sqrt(252) * 100)) AS vol_30d_pct,
toUInt32(round(arrayReduce('stddevSamp', arraySlice(r, -252)) * sqrt(252) * 100)) AS vol_252d_pct
FROM
(
SELECT
ticker,
arrayMap((x, y) -> log(x / y),
arraySlice(px, 2),
arraySlice(px, 1, length(px) - 1)) AS r
FROM series
)
WHERE length(r) >= 252
ORDER BY vol_30d_pct DESC, ticker
LIMIT 12An der Spitze steht APH mit 210 Prozent p.a. über 30 Handelstage und 85 Prozent über das ganze Jahresfenster. Am unteren Rand der 12 Zeilen liegt DELL bei 74 Prozent. Interessant sind die beiden Spalten nebeneinander: Liegt die 30-Tage-Zahl deutlich über der 252-Tage-Zahl, ist das Papier aktuell unruhiger als im Jahresschnitt. Im umgekehrten Fall hat sich die Reihe gegenüber dem Vorjahr beruhigt.
Wie wird Volatilität p.a. berechnet?
Drei Rechenschritte, keine Magie. Zuerst die Tagesrendite als logarithmierte Veränderung von Schlusskurs zu Schlusskurs. Dann die Standardabweichung dieser Tagesrenditen über das gewählte Fenster, hier 30 oder 252 Handelstage. Zum Schluss die Skalierung auf ein Jahr mit der Wurzel aus 252, der üblichen Zahl an Handelstagen.
Eine Volatilität von 40 Prozent p.a. heißt nicht, dass ein Papier um 40 Prozent steigt oder fällt. Sie beschreibt die Streuung: Unter der üblichen Normalverteilungsannahme landet die Rendite in etwa zwei von drei Jahren innerhalb von plus/minus 40 Prozent um ihren Mittelwert. Ein Basispunkt, die Einheit im nächsten Panel, sind 0,01 Prozentpunkte. 50 Basispunkte entsprechen also einem halben Prozentpunkt Volatilität.
Was ändert sich, wenn man in Euro rechnet?
Eine US-Aktie im deutschen Depot hat zwei Preisbestandteile: den Kurs der Aktie in Dollar und den Preis des Dollars. Die Euro-Tagesrendite ist die Dollar-Rendite der Aktie minus die Tagesrendite von EUR/USD. Für die Streuung ergibt sich daraus der bekannte Varianzausdruck: Aktienvarianz plus Währungsvarianz minus dem doppelten Kovarianzterm. Der Kovarianzterm ist der spannende Teil, er kann die Euro-Zahl über oder unter die Dollar-Zahl ziehen.
Ein Zahlenbeispiel zum Mitrechnen, bewusst hypothetisch: 40 Prozent Aktienvolatilität, 7 Prozent Währungsvolatilität, Korrelation null. Die Wurzel aus 0,40 im Quadrat plus 0,07 im Quadrat ergibt 40,6 Prozent. Aus 40 werden 40,6, ein Aufschlag von 60 Basispunkten. Das Panel rechnet dasselbe mit echten Tagesreihen, für die zwölf schwankungsstärksten Namen des Universums über 252 Handelstage.
| ticker | vol_usd_pct | vol_eur_pct | delta_bp |
|---|---|---|---|
| SNDK | 113 | 113 | -21 |
| BE | 112 | 112 | -28 |
| CRDO | 96 | 96 | -28 |
| COHR | 87 | 86 | -46 |
| MU | 80 | 80 | -47 |
| CRWV | 93 | 93 | -57 |
| SMCI | 95 | 94 | -60 |
| WDC | 80 | 80 | -64 |
| CRCL | 95 | 94 | -66 |
| APH | 85 | 84 | -72 |
| MRNA | 128 | 127 | -98 |
| RKLB | 91 | 90 | -100 |
Das exakte SQL hinter jeder Zahl
WITH
universe AS (
SELECT ticker
FROM global_markets.stocks_ratios
WHERE date >= today() - 150
AND ticker NOT IN ('SPCX')
GROUP BY ticker
HAVING argMax(market_cap, date) > 20000000000
AND argMax(average_volume, date) > 5000000
AND argMax(price, date) > 10
),
fx AS (
SELECT
date,
toFloat64(close) AS eur_usd
FROM global_markets.stocks_daily_aggs
WHERE ticker = 'FXE'
AND date >= today() - 420
AND date < today()
AND close > 0
),
joined AS (
SELECT
a.ticker AS ticker,
arraySort(t -> t.1, groupArray((a.date, toFloat64(a.close), f.eur_usd))) AS series
FROM global_markets.stocks_daily_aggs AS a
INNER JOIN fx AS f ON f.date = a.date
WHERE a.ticker IN (SELECT ticker FROM universe)
AND a.date >= today() - 420
AND a.date < today()
AND a.close > 0
GROUP BY a.ticker
),
vols AS (
SELECT
ticker,
arrayReduce('stddevSamp', arraySlice(r_usd, -252)) * sqrt(252) * 100 AS v_usd,
arrayReduce('stddevSamp',
arrayMap((x, y) -> x - y,
arraySlice(r_usd, -252),
arraySlice(r_fx, -252))) * sqrt(252) * 100 AS v_eur
FROM
(
SELECT
ticker,
arrayMap((x, y) -> log(x / y),
arraySlice(arrayMap(t -> t.2, series), 2),
arraySlice(arrayMap(t -> t.2, series), 1, length(series) - 1)) AS r_usd,
arrayMap((x, y) -> log(x / y),
arraySlice(arrayMap(t -> t.3, series), 2),
arraySlice(arrayMap(t -> t.3, series), 1, length(series) - 1)) AS r_fx
FROM joined
)
WHERE length(r_usd) >= 252
)
SELECT *
FROM
(
SELECT
ticker,
toUInt32(round(v_usd)) AS vol_usd_pct,
toUInt32(round(v_eur)) AS vol_eur_pct,
toInt32(round((v_eur - v_usd) * 100)) AS delta_bp
FROM vols
ORDER BY v_usd DESC
LIMIT 12
)
ORDER BY delta_bp DESCOben in der nach dem Abstand sortierten Liste steht SNDK: 113 Prozent in Dollar, 113 Prozent in Euro, Abstand -21 Basispunkte. Am anderen Ende der 12 Zeilen liegt RKLB bei -100 Basispunkten. Gemessen an Volatilitäten von 113 Prozent ist die Umrechnung damit ein Effekt zweiter Ordnung, und genau so taucht sie hier auf: beziffert statt weggelassen.
Wie stark schwankt EUR/USD im Vergleich?
Die Größenordnung lässt sich direkt nebeneinanderlegen. Das Panel zeigt Monat für Monat die annualisierte Volatilität des breiten US-Marktes neben der von EUR/USD, dazu in der dritten Spalte die Korrelation der beiden Tagesreihen im jeweiligen Monat.
| month | vol_spy_pct | vol_eur_usd_pct | correlation_pct |
|---|---|---|---|
| 2023-09 | 12 | 6 | -7 |
| 2023-10 | 14 | 7 | 29 |
| 2023-11 | 11 | 9 | 54 |
| 2023-12 | 10 | 8 | 69 |
| 2024-01 | 11 | 6 | 38 |
| 2024-02 | 12 | 5 | 26 |
| 2024-03 | 10 | 5 | 30 |
| 2024-04 | 13 | 7 | 38 |
| 2024-05 | 9 | 4 | 69 |
| 2024-06 | 7 | 5 | 20 |
| 2024-07 | 14 | 4 | 24 |
| 2024-08 | 19 | 7 | -7 |
| 2024-09 | 14 | 5 | 29 |
| 2024-10 | 11 | 5 | -1 |
| 2024-11 | 12 | 10 | -35 |
| 2024-12 | 14 | 7 | 53 |
| 2025-01 | 14 | 9 | 35 |
| 2025-02 | 13 | 8 | 40 |
| 2025-03 | 21 | 9 | 1 |
| 2025-04 | 52 | 14 | -39 |
Das exakte SQL hinter jeder Zahl
WITH
px AS (
SELECT
date,
ticker,
toFloat64(close) AS c
FROM global_markets.stocks_daily_aggs
WHERE ticker IN ('SPY', 'FXE')
AND date >= today() - 1130
AND date < today()
AND close > 0
),
rets AS (
SELECT
ticker,
date,
log(c / lagInFrame(c) OVER (PARTITION BY ticker ORDER BY date
ROWS BETWEEN 1 PRECEDING AND 1 PRECEDING)) AS ret
FROM px
),
paired AS (
SELECT
date,
anyIf(ret, ticker = 'SPY') AS r_spy,
anyIf(ret, ticker = 'FXE') AS r_fx
FROM rets
WHERE isFinite(ret)
GROUP BY date
HAVING countIf(ticker = 'SPY') = 1
AND countIf(ticker = 'FXE') = 1
)
SELECT
formatDateTime(toStartOfMonth(date), '%Y-%m') AS month,
toUInt32(round(stddevSamp(r_spy) * sqrt(252) * 100)) AS vol_spy_pct,
toUInt32(round(stddevSamp(r_fx) * sqrt(252) * 100)) AS vol_eur_usd_pct,
toInt32(round(corr(r_spy, r_fx) * 100)) AS correlation_pct
FROM paired
GROUP BY month
HAVING count() >= 10
ORDER BY monthIm Monat 2026-09 lag die Aktienvolatilität bei 11 Prozent p.a., die Währungsvolatilität bei 4 Prozent, die Korrelation der Tagesrenditen bei 47 Prozent. Die übrigen 37 Monate stehen im Chart, und die Korrelationslinie ist dort die beweglichste der drei. Genau dieser Term entscheidet, ob die Euro-Rechnung einer Aktie leicht über oder leicht unter der Dollar-Rechnung landet.
Die andere Seite: Aktien mit geringer Volatilität
Dieselbe Liquiditätsauswahl, nur aufsteigend sortiert. Wer nach geringer Volatilität sucht, liest dieses Panel von oben.
| ticker | vol_252d_pct | vol_30d_pct |
|---|---|---|
| CNP | 17 | 16 |
| O | 17 | 15 |
| SO | 17 | 13 |
| ENB | 18 | 16 |
| ET | 18 | 15 |
| PPL | 18 | 16 |
| EXC | 19 | 16 |
| JNJ | 19 | 17 |
| KO | 19 | 14 |
| MCD | 19 | 22 |
Das exakte SQL hinter jeder Zahl
WITH
universe AS (
SELECT ticker
FROM global_markets.stocks_ratios
WHERE date >= today() - 150
AND ticker NOT IN ('SPCX')
GROUP BY ticker
HAVING argMax(market_cap, date) > 20000000000
AND argMax(average_volume, date) > 5000000
AND argMax(price, date) > 10
),
series AS (
SELECT
ticker,
arrayMap(t -> t.2, arraySort(t -> t.1, groupArray((date, toFloat64(close))))) AS px
FROM global_markets.stocks_daily_aggs
WHERE ticker IN (SELECT ticker FROM universe)
AND date >= today() - 420
AND date < today()
AND close > 0
GROUP BY ticker
)
SELECT
ticker,
toUInt32(round(arrayReduce('stddevSamp', arraySlice(r, -252)) * sqrt(252) * 100)) AS vol_252d_pct,
toUInt32(round(arrayReduce('stddevSamp', arraySlice(r, -30)) * sqrt(252) * 100)) AS vol_30d_pct
FROM
(
SELECT
ticker,
arrayMap((x, y) -> log(x / y),
arraySlice(px, 2),
arraySlice(px, 1, length(px) - 1)) AS r
FROM series
)
WHERE length(r) >= 252
ORDER BY vol_252d_pct ASC, ticker
LIMIT 10CNP kommt über 252 Handelstage auf 17 Prozent p.a., das obere Ende dieser 10 Zeilen liegt bei 19 Prozent. Zwischen den beiden Panels liegt damit ein Faktor von mehreren Einheiten, bei identischer Liquiditätshürde. Ausführlicher stehen die ruhigen Namen in Aktien mit der geringsten Volatilität.
Ein Satz, der in diese Rubrik gehört: Hohe Volatilität ist kein Kaufsignal, und geringe Volatilität ist keine Garantie. Volatilität misst die Streuung von Renditen, nicht ihre Richtung. Dass ruhige Aktien je Risikoeinheit historisch nicht hinter den unruhigen zurückblieben, ist ein in der Literatur viel diskutierter Befund, nachzulesen in Low-Volatility-Anomalie. Wer Positionsgrößen an der gemessenen Vola ausrichtet, findet die Mechanik in Positionsgrößen nach Volatilität.
Realisierte oder implizite Volatilität?
Alle Zahlen oben sind realisierte Volatilität, also gemessene Vergangenheit. Parallel dazu handelt der Optionsmarkt eine Erwartung, die implizite Volatilität. Das folgende Panel stellt für die schwankungsstärksten Namen die mittlere implizite Volatilität geldnaher Kontrakte mit 20 bis 45 Tagen Restlaufzeit der realisierten 30-Tage-Zahl gegenüber.
| ticker | rv_30d_pct | iv_30d_pct | spread_pp |
|---|---|---|---|
| APH | 210 | 42 | -168 |
| CRDO | 99 | 73 | -26 |
| MSTR | 94 | 68 | -26 |
| CRCL | 90 | 73 | -17 |
| EIX | 87 | 40 | -47 |
| BE | 82 | 80 | -2 |
| CRWD | 82 | 53 | -29 |
| COHR | 81 | 73 | -8 |
| PCG | 78 | 44 | -34 |
| COIN | 78 | 65 | -13 |
Das exakte SQL hinter jeder Zahl
WITH
universe AS (
SELECT ticker
FROM global_markets.stocks_ratios
WHERE date >= today() - 150
AND ticker NOT IN ('SPCX')
GROUP BY ticker
HAVING argMax(market_cap, date) > 20000000000
AND argMax(average_volume, date) > 5000000
AND argMax(price, date) > 10
),
series AS (
SELECT
ticker,
arrayMap(t -> t.2, arraySort(t -> t.1, groupArray((date, toFloat64(close))))) AS px
FROM global_markets.stocks_daily_aggs
WHERE ticker IN (SELECT ticker FROM universe)
AND date >= today() - 120
AND date < today()
AND close > 0
GROUP BY ticker
),
realized AS (
SELECT
ticker,
toUInt32(round(arrayReduce('stddevSamp', arraySlice(r, -30)) * sqrt(252) * 100)) AS rv_30d_pct
FROM
(
SELECT
ticker,
arrayMap((x, y) -> log(x / y),
arraySlice(px, 2),
arraySlice(px, 1, length(px) - 1)) AS r
FROM series
)
WHERE length(r) >= 30
ORDER BY rv_30d_pct DESC
LIMIT 10
),
implied AS (
SELECT
underlying_symbol AS ticker,
toUInt32(round(avg(implied_volatility) * 100)) AS iv_30d_pct,
count() AS contract_days
FROM global_markets.options_greeks
WHERE date >= today() - 30
AND iv_converged = 1
AND volume > 0
AND days_to_expiry BETWEEN 20 AND 45
AND abs(toFloat64(strike_price) / toFloat64(underlying_close) - 1) < 0.05
AND underlying_symbol IN (SELECT ticker FROM realized)
GROUP BY underlying_symbol
HAVING contract_days >= 20
)
SELECT
r.ticker AS ticker,
r.rv_30d_pct AS rv_30d_pct,
i.iv_30d_pct AS iv_30d_pct,
toInt32(i.iv_30d_pct) - toInt32(r.rv_30d_pct) AS spread_pp
FROM realized AS r
INNER JOIN implied AS i ON i.ticker = r.ticker
ORDER BY r.rv_30d_pct DESCBei APH stehen 210 Prozent realisiert gegen 42 Prozent implizit, eine Differenz von -168 Prozentpunkten über 10 Namen hinweg. Mehr als diese Gegenüberstellung soll dieser Abschnitt nicht leisten. Die Systematik der beiden Kennzahlen steht in historische gegen implizite Volatilität, die Rangliste der Erwartungen in Aktien mit der höchsten impliziten Volatilität.
Tradegate, Xetra und das dünnere Orderbuch
Viele dieser Namen sind auch in Euro handelbar, auf Tradegate, im Frankfurter Handel und teils auf Xetra. Die hier gemessene Volatilität stammt dagegen vom US-Tape, also von den Schlusskursen der amerikanischen Heimatbörsen. Eine aus deutschen Schlusskursen gerechnete Reihe ist eine andere Statistik, aus zwei nüchternen Gründen.
Erstens die Uhr. Der Xetra-Handel endet um 17:30 Uhr deutscher Zeit, Tradegate quotiert bis 22:00 Uhr. Ein Teil der US-Sitzung liegt damit zwischen zwei deutschen Schlusskursen, und eine Tagesrendite von deutschem Schluss zu deutschem Schluss schneidet das Fenster anders zu. Die Zeitfenster im Detail stehen in US-Handelszeiten in deutscher Zeit.
Zweitens das Orderbuch. Auf dem deutschen Platz entstehen pro Tag deutlich weniger Abschlüsse, die Spanne zwischen Geld und Brief ist breiter, und ein einzelner Abschluss nahe dem Handelsschluss hat mehr Gewicht im Schlusskurs. Eine Volatilität, die aus solchen Reihen gerechnet wird, enthält damit einen Mikrostruktur-Anteil, der nichts über das Unternehmen aussagt. Für Vergleiche gehören die beiden Reihen in getrennte Rechnungen.
Datenhinweise und Methodik
- Kursbasis sind Tagesschlusskurse der US-Börsen. Renditen logarithmiert, Schluss zu Schluss, Standardabweichung als Stichprobenwert, Annualisierung mit der Wurzel aus 252.
- Universum: Börsenwert über 20 Milliarden US-Dollar, Durchschnittsumsatz über 5 Millionen Stück, Kurs über 10 US-Dollar, Stand der jeweils letzten verfügbaren Kennzahlenzeile.
- Als Tagesreihe für EUR/USD dient der börsengehandelte Euro-Trust FXE, der die Kassaentwicklung des Euro gegen den US-Dollar abbildet und zu denselben Zeiten schließt wie die Aktien in den Panels. Für Renditen und Streuungen ist das der saubere Vergleich, die Verwaltungsgebühr des Trusts liegt auf Tagessicht unterhalb der dargestellten Rundung.
- Aktiensplits innerhalb des Fensters können einzelne Tagesrenditen verzerren. Die Panels filtern sie nicht heraus, ein auffälliger Einzelwert lohnt deshalb den Blick in die Splithistorie.
- Implizite Volatilität: Tagesdaten je Kontrakt, konvergierte Werte mit Umsatz größer null, Restlaufzeit 20 bis 45 Tage, Basispreis innerhalb von 5 Prozent um den Kurs des Basiswerts, gemittelt über die letzten 30 Tage.
- Vola-Spalten in ganzen Prozentpunkten, Differenzspalten in Basispunkten. Im Text stehen Dezimalkommas, die Panels geben die gerundeten Werte der Abfrage aus.
FAQ
Welche US-Aktie schwankt aktuell am stärksten?
Im liquiden Large-Cap-Universum führt APH mit 210 Prozent annualisierter Volatilität über die letzten 30 Handelstage. Die vollständige Rangliste steht im ersten Panel und rechnet sich bei jeder Aktualisierung neu.
Was bedeutet Volatilität p.a. in Prozent?
Sie ist die auf ein Jahr skalierte Standardabweichung der täglichen Kursrenditen. 20 Prozent p.a. beschreiben eine ruhige Aktie, 60 Prozent p.a. eine sehr unruhige. Die Zahl sagt nichts über die Richtung, nur über die Breite der Verteilung.
Erhöht das Währungsrisiko die Volatilität einer US-Aktie?
Bei einer unbesicherten Position kommt die Schwankung von EUR/USD hinzu, sie wird aber quadratisch verrechnet und nicht addiert. Bei 113 Prozent Aktienvolatilität und einstelliger Währungsvolatilität bleiben Abstände in der Größenordnung von -21 Basispunkten übrig.
Ist eine hohe Volatilität ein Kaufsignal?
Nein. Volatilität beschreibt die Streuung der Renditen ohne jede Richtungsaussage. Eine Aktie mit 80 Prozent Volatilität p.a. kann in beide Richtungen weit laufen, und die Kennzahl trifft keine Aussage darüber, welche davon eintritt.
Wo finde ich die ruhigen Werte derselben Auswahl?
Im unteren Panel dieser Seite, aufsteigend sortiert, sowie ausführlicher in Aktien mit der geringsten Volatilität.
Jedes Panel bringt die Abfrage mit, aus der seine Zahlen stammen. Wer das Fenster verschieben will, etwa auf 90 Handelstage, oder ein eigenes Universum testen möchte, stellt die Frage auf dem Strasmore Terminal in eigenen Worten.