Teknik Analiz Dünyasına Hoşgeldiniz.

Paylaşmak ◄ ► Güzeldir

DİKKAT: Formüller, Sistemler eğitim amaçlıdır. Alım satım, olası anapara kaybı ve diğer kayıplar dahil olmak üzere "YÜKSEK RİSK" içerir.

Yayından kaldırmak istediğiniz formüller için algoritmabul@gmail.com ile iletişime geçebilirsiniz...

  • DİKKAT: Formüller, Sistemler sadece eğitim amaçlıdır. Alım satım, olası anapara kaybı ve diğer kayıplar dahil olmak üzere "YÜKSEK RİSK" içerir.

ML - Python Mann-Kendall

Machine Learning Algorithms - Makine Öğrenimi Algoritmaları BORSA

algoritma

eiπ + 1 = 0
Algorithmist
Algoritma
Katılım
23 Eki 2020
Mesajlar
1,823

1. Mann-Kendall Testi Nedir?

  • Tanım: Mann-Kendall testi, zaman serilerinde trend olup olmadığını belirlemek için kullanılan bir istatistiksel testtir. Özellikle çevre bilimleri, ekonomi ve finans gibi alanlarda kullanılır.
  • Amaç: Bu test, verilerde belirgin bir artış (pozitif trend) veya azalış (negatif trend) olup olmadığını belirlemeye yardımcı olur. Test, zaman serisinin trendini analiz etmek için sıklıkla kullanılır ve verilerdeki eğilimlerin rastlantısal olup olmadığını değerlendirir.

2. Testin Yöntemi ve Kullanım Alanları

  • Yöntem: Mann-Kendall testi, sıralı veriler arasındaki ilişkileri inceleyerek trendlerin doğruluğunu test eder. Pozitif bir değer, artan bir trendi, negatif bir değer ise azalan bir trendi gösterir.
  • Kullanım Alanları: Çevresel değişkenlerin (örneğin, sıcaklık, yağış miktarı), hisse senedi fiyatlarının, ekonomik göstergelerin ve finansal zaman serilerinin analizinde yaygın olarak kullanılır.

3. Test Sonuçlarının Yorumlanması

  • Trend Sonucu (Trend Column):
    • Increasing (Artan): Zaman içinde pozitif bir eğilim olduğu anlamına gelir.
    • Decreasing (Azalan): Zaman içinde negatif bir eğilim olduğu anlamına gelir.
    • No Trend (Eğilim Yok): Zaman serisinde belirgin bir artış veya azalış eğilimi yoktur.
  • P-Değeri (P-Value):
    • Testin anlamlı olup olmadığını gösterir. P-değeri 0.05'in altında ise sonuç istatistiksel olarak anlamlıdır, yani trendin gerçek olduğu anlamına gelir.
    • P-değeri yüksekse (örneğin 0.05'ten büyük), eğilim rastlantısal olabilir ve trendin doğruluğu sorgulanabilir.

4. Örnek Olarak, P-Değeri İle Trend Yorumlaması:

  • Eğer p-değeri 0.05'ten küçükse, Mann-Kendall testi sonucu istatistiksel olarak anlamlı kabul edilir. Bu durumda trendin varlığını kabul edebiliriz.
  • Artan Trend (Increasing): Hisse senedi fiyatları veya ekonomik göstergeler zamanla artıyor.
  • Azalan Trend (Decreasing): Hisse senedi fiyatları veya ekonomik göstergeler zamanla azalıyor.

5. ADF Testi İle Birlikte Kullanımı

  • ADF Testi (Augmented Dickey-Fuller Testi) de birim kök testi yaparak verinin durağan olup olmadığını kontrol eder. Mann-Kendall testi ile birlikte, verilerin uzun dönemli trendlerinin analiz edilmesinde faydalıdır.
  • ADF Sonucu:
    • Durağan (Stationary): Verilerdeki trendin zaman içinde değişmediği, stabil olduğu anlamına gelir.
    • Durağan Değil (Non-Stationary): Verilerdeki trendin zaman içinde değiştiği anlamına gelir.

6. Eğilimler ve Karar Destek

  • Eğilimlerin Takibi: Yatırımcılar için Mann-Kendall testi, hisse senedi veya diğer finansal araçların gelecekteki performansını tahmin etmek adına önemli bir araçtır.
  • Karar Destek: Şirketler, ekonomistler veya yatırımcılar, trendlerin ne yönde olduğunu bilerek, stratejik kararlar alabilirler.

7. Grafiksel Temsil:

  • Veri Görselleştirme: Test sonuçlarını grafiklerle desteklemek, kullanıcıların eğilimleri daha hızlı ve etkili bir şekilde anlamasına yardımcı olur. Zaman serisi verilerinin çizildiği grafikler üzerinde Mann-Kendall testinin tespit ettiği trendi vurgulamak önemlidir.
  • Örneğin, bir hisse senedinin zaman içindeki kapanış fiyatlarını bir grafikle gösterirken, artış veya azalış eğilimlerini ve trend doğrularını da belirtmek faydalıdır.

8. Mann-Kendall Sonuçlarının Yatırım Stratejileri ile İlişkisi:

  • Yatırımcılar İçin Faydalar: Artan trendler (Increasing) genellikle alım fırsatı, azalan trendler (Decreasing) ise satım fırsatı olarak değerlendirilebilir. Ayrıca, no trend (eğilim yok) durumunda ise daha dikkatli bir analiz yapmak gerekir.
  • Tarihsel Performans Değerlendirmesi: Yatırımcılar, belirli bir hissenin veya endeksin geçmiş trendlerini değerlendirerek, gelecekteki olası hareketler hakkında fikir edinebilirler.

9. Testin Sınırlamaları:

  • Sadece Zaman Serileri Üzerinde Çalışması: Mann-Kendall testi, yalnızca zaman serileri üzerinde çalışır ve her veri seti için uygun olmayabilir.
  • Veri Bağımlılığı: Testin sonuçları, kullanılan zaman dilimi ve veri setine bağlı olarak değişebilir.
Kod:
from tvDatafeed import TvDatafeed, Interval
from tradingview_screener import get_all_symbols
import pandas as pd
import pymannkendall as mk
import statsmodels.tsa.stattools as ts
import numpy as np
from sklearn.linear_model import LinearRegression
import matplotlib.pyplot as plt
# her cuma yap 'ADF p-değeri': adf_p_value, sırala 0,05 den aşağı olanlar ve inc olanlar
# Mann-Kendall Testi
def mann_kendall_test(data):
    """
    Mann-Kendall Trend Testi ile zaman serisi trendi kontrolü.
    """
    result = mk.original_test(data)
    return result.trend, result.p

# ADF Testi
def adf_test(data):
    """
    Augmented Dickey-Fuller (ADF) Testi ile birim kök testi yapar.
    """
    result = ts.adfuller(data)
    return result[0], result[1]  # ADF İstatistiği, p-değeri

# Doğrusal Regresyon ile Trend Analizi
def linear_regression_trend(data):
    """
    Zaman serisi verisi için doğrusal regresyon ile trend analizi yapar.
    """
    x = np.arange(len(data)).reshape(-1, 1)  # Zaman indeksleri
    y = data.values  # Zaman serisi verisi (Close fiyatları)

    # Doğrusal regresyon modelini oluşturun
    model = LinearRegression()
    model.fit(x, y)

    # Trend doğrusal regresyon doğrusu
    trend = model.predict(x)
    return trend

# TradingView API üzerinden veri alma
tv = TvDatafeed()

# Türkiye borsasındaki tüm hisseleri al
Hisseler = get_all_symbols(market='turkey')

# Sonuçları depolamak için boş bir liste
results = []

# Her hisse için analiz yapın
for hisse in Hisseler:
    try:
        # Verileri TradingView API'sinden al (örneğin günlük veri)
        data = tv.get_hist(symbol=hisse, interval=Interval.in_daily, n_bars=365)  # Son 365 günlük veri

        # 'Close' fiyatlarını al
        close_prices = data['close']

        # Mann-Kendall Testi
        trend_mk, p_value_mk = mann_kendall_test(close_prices)

        # ADF Testi
        adf_stat, adf_p_value = adf_test(close_prices)

        # Doğrusal regresyon trendi
        trend_lr = linear_regression_trend(close_prices)

        # Sonuçları listeye ekleyin
        results.append({
            'Hisse': hisse,
            'Mann-Kendall Trend': trend_mk,
            'Mann-Kendall p-değeri': p_value_mk,
            'ADF İstatistiği': adf_stat,
            'ADF p-değeri': adf_p_value,
            'Regresyon Trend Başlangıç Değeri': trend_lr[0],  # İlk trend değeri
        })

    except Exception as e:
        print(f"Hata oluştu ({hisse}): {e}")

# Sonuçları bir DataFrame'e dönüştürün
results_df = pd.DataFrame(results)

# Excel dosyasına kaydedin
results_df.to_excel('mann_kendall_test_analiz_sonuclaritvdatafeed.xlsx', index=False)

print("Sonuçlar başarıyla Excel dosyasına kaydedildi.")
 
Son düzenleme:

Forumdan daha fazla yararlanmak için giriş yapın yada üye olun!

Forumdan daha fazla yararlanmak için giriş yapın veya kayıt olun!

Giriş yap

Eğer bir hesabınız var ise lütfen giriş yapın

Giriş yap