Branko May Trinkwald aeef4339c9 first commit
2026-01-05 17:33:41 +01:00
2026-01-05 17:33:41 +01:00

Gold Market Analysis System mit Qdrant

Ein umfassendes Python-System zur Analyse des internationalen Goldmarktes (XAUUSD) mit Vektordatenbank-Integration für langfristige Beziehungsanalysen.

🎯 Projektübersicht

Dieses System sammelt, analysiert und speichert:

  • Stündliche XAUUSD-Kursdaten von Yahoo Finance
  • Technische Indikatoren (SMA, EMA, RSI, MACD, Bollinger Bands, etc.)
  • Markt-News mit Sentiment-Analyse
  • Handelssession-Analysen (COMEX, London, Shanghai, Tokyo)
  • Ereignis-Tracking für spätere Vergleiche

Alle Daten werden in Qdrant als Vektoren gespeichert, um semantische Suchen und Beziehungsanalysen zu ermöglichen.

🚀 Features

Datensammlung

  • Yahoo Finance Integration (yfinance)
  • XAUUSD, Gold Futures (GC=F), Gold/Silver Index
  • Stündliche, tägliche, wöchentliche Daten
  • Echtzeit-Updates

Technische Analyse

  • 15+ technische Indikatoren
  • SMA (20, 50, 200), EMA (12, 26)
  • RSI, MACD, Bollinger Bands
  • ATR, Stochastic, OBV, ADX
  • Custom Gold-Indikatoren

News & Events

  • Alpha Vantage News Integration
  • Yahoo Finance News Scraping
  • Sentiment-Analyse
  • Event-Extraktion (Fed-Entscheidungen, Inflation, etc.)

Qdrant Integration

  • Vektordatenbank für semantische Suche
  • Zeitbasierte Filterung
  • Handelssession-Gruppierung
  • Ähnlichkeits-Suche für Marktbedingungen

Visualisierung & Reporting

  • Automatische Marktberichte
  • Session-Analysen
  • Statistiken & Metriken

📋 Voraussetzungen

  • Python 3.8+
  • Docker (für Qdrant)
  • Optional: Alpha Vantage API Key (für News)

🛠️ Installation

1. Repository klonen

git clone <repository-url>
cd gold-market-analysis

2. Python-Pakete installieren

pip install -r requirements.txt

3. Qdrant starten (Docker)

# Lokale Installation
docker run -p 6333:6333 -p 6334:6334 \
    -v $(pwd)/qdrant_storage:/qdrant/storage:z \
    qdrant/qdrant

# ODER: Qdrant Cloud nutzen (kostenloser Tier verfügbar)
# https://cloud.qdrant.io/

4. Konfiguration (config.py)

# Optional: API-Keys hinzufügen
export ALPHA_VANTAGE_KEY="your_key_here"

# Optional: Qdrant Cloud
export QDRANT_HOST="your-cluster.qdrant.io"
export QDRANT_API_KEY="your_api_key"

📖 Verwendung

Schnellstart

python main.py

Wählen Sie einen Modus:

  1. Einmalige Datensammlung - Sammelt historische Daten
  2. Kontinuierlicher Betrieb - Automatische Updates
  3. Analyse-Abfrage - Suche ähnliche Marktbedingungen
  4. Bericht generieren - Erstellt Marktbericht

Beispiele

1. Historische Daten sammeln

from main import GoldMarketAnalysisSystem

system = GoldMarketAnalysisSystem()
system.collect_and_store_market_data(
    ticker_key="XAUUSD",
    period="1mo",    # 1 Monat
    interval="1h"    # Stündlich
)

2. Ähnliche Marktbedingungen finden

results = system.analyze_market_conditions(
    query="hohe Volatilität mit steigendem RSI und bullischem MACD",
    limit=10
)

for result in results:
    print(f"Score: {result['score']:.3f}")
    print(f"Datum: {result['payload']['timestamp']}")
    print(f"Preis: ${result['payload']['close']:.2f}")

3. Session-Analyse

from datetime import datetime

analysis = system.get_session_analysis(
    ticker_key="XAUUSD",
    date=datetime(2025, 1, 5)
)

for session, stats in analysis.items():
    print(f"\n{session}:")
    print(f"  Durchschnittspreis: ${stats['avg_price']:.2f}")
    print(f"  Volatilität: {stats['volatility']:.2f}")
    print(f"  Volumen: {stats['total_volume']:,.0f}")

4. News & Sentiment

from news_collector import GoldNewsCollector

collector = GoldNewsCollector()
articles = collector.get_all_news(hours_back=24)
sentiment = collector.aggregate_sentiment(articles)

print(f"Sentiment: {sentiment['sentiment_label']}")
print(f"Score: {sentiment['average_score']:.2f}")

📊 Datenstruktur in Qdrant

Jeder Datenpunkt in Qdrant enthält:

{
    "timestamp": "2025-01-05T10:00:00",
    "ticker": "XAUUSD",
    "open": 2650.50,
    "high": 2655.30,
    "low": 2648.20,
    "close": 2652.80,
    "volume": 125000,
    "trading_session": "LONDON",
    "indicators": {
        "RSI_14": 65.4,
        "MACD_12_26": 5.2,
        "SMA_20": 2645.0,
        "BB_upper_20": 2670.0,
        ...
    },
    "news_sentiment": 0.15,
    "related_events": [
        "Fed: Zinsentscheidung erwartet",
        "Inflation: Neue Daten veröffentlicht"
    ]
}

🔍 Handelssessions

Das System identifiziert automatisch aktive Handelssessions:

Session Zeitzone Öffnungszeiten (UTC)
COMEX (New York) America/New_York 13:20 - 12:30 (nächster Tag)
London OTC Europe/London 08:00 - 16:30
Shanghai Gold Exchange Asia/Shanghai 01:30 - 03:30
Tokyo (TOCOM) Asia/Tokyo 00:00 - 15:00

📈 Technische Indikatoren

Trend-Indikatoren

  • SMA (20, 50, 200): Simple Moving Average
  • EMA (12, 26): Exponential Moving Average
  • ADX (14): Average Directional Index

Momentum-Indikatoren

  • RSI (14): Relative Strength Index
  • MACD (12, 26, 9): Moving Average Convergence Divergence
  • Stochastic (14, 3, 3): Stochastic Oscillator

Volatilitäts-Indikatoren

  • Bollinger Bands (20, 2): Volatilitätsbänder
  • ATR (14): Average True Range

Volumen-Indikatoren

  • OBV: On Balance Volume

Custom-Indikatoren

  • Price Momentum (ROC)
  • Volatility (Std Dev)
  • Support/Resistance Levels
  • Volume Ratio

🔄 Automatisierung

Kontinuierlicher Betrieb

python main.py
# Wähle Option 2: Kontinuierlicher Betrieb
# Gib Update-Intervall ein (z.B. 60 Minuten)

Das System führt automatisch aus:

  • Stündliche Updates: Echtzeit-Daten
  • 📅 Tägliche Sammlung: Historische Daten (08:00 UTC)
  • 📊 Tägliche Berichte: Marktanalyse (18:00 UTC)

Manuelle Zeitplanung (crontab)

# Alle 6 Stunden Daten sammeln
0 */6 * * * cd /path/to/project && python -c "from main import GoldMarketAnalysisSystem; s = GoldMarketAnalysisSystem(); s.collect_and_store_market_data()"

# Täglich um 18:00 Bericht generieren
0 18 * * * cd /path/to/project && python -c "from main import GoldMarketAnalysisSystem; s = GoldMarketAnalysisSystem(); s.generate_report()"

🎨 Erweiterte Nutzung

Custom-Embeddings

# In config.py ändern:
EMBEDDING_MODEL = "sentence-transformers/all-mpnet-base-v2"  # Bessere Qualität
EMBEDDING_DIMENSION = 768

Mehrere Tickers gleichzeitig

from yahoo_collector import YahooFinanceGoldCollector

collector = YahooFinanceGoldCollector()
data = collector.get_multiple_tickers(
    ticker_keys=["XAUUSD", "GC", "XAU"],
    period="1mo",
    interval="1h"
)

Zeitbasierte Suche

from datetime import datetime, timedelta

start = datetime.now() - timedelta(days=30)
end = datetime.now()

results = system.db.search_by_time_range(
    start_time=start,
    end_time=end,
    ticker="XAUUSD",
    limit=1000
)

📁 Projektstruktur

gold-market-analysis/
├── config.py                 # Konfiguration
├── qdrant_client.py         # Qdrant Datenbank-Client
├── yahoo_collector.py       # Yahoo Finance Datensammlung
├── technical_indicators.py  # Technische Indikatoren
├── news_collector.py        # News & Sentiment
├── main.py                  # Hauptprogramm
├── requirements.txt         # Python-Abhängigkeiten
├── README.md               # Diese Datei
└── gold_market_analysis.log # Log-Datei

🐛 Troubleshooting

Qdrant Verbindungsfehler

# Prüfe ob Qdrant läuft
curl http://localhost:6333/collections

# Neustart
docker restart <qdrant-container-id>

Yahoo Finance Rate Limits

  • Yahoo Finance hat keine offiziellen Rate Limits
  • Bei Problemen: Erhöhe Intervall zwischen Requests

Alpha Vantage API Limits

  • Free Tier: 25 Requests/Tag
  • Upgrade auf kostenpflichtigen Plan für mehr Requests

🔐 Sicherheit

  • API-Keys niemals im Code speichern
  • Nutze Umgebungsvariablen
  • .gitignore für sensible Daten

📝 Lizenz

MIT License

🤝 Contributing

Beiträge sind willkommen! Bitte öffne ein Issue oder Pull Request.

📞 Support

Bei Fragen oder Problemen:

  • GitHub Issues öffnen
  • Dokumentation prüfen
  • Logs analysieren (gold_market_analysis.log)

🎓 Ressourcen


Erstellt mit ❤️ für Gold-Markt-Analyse

Description
Gold Stock Analazer
Readme 160 KiB
Languages
Python 79.4%
HTML 14.3%
Shell 6.3%