2026. szeptember 25., péntek

Melyik részvényt érdemes most vásárolni? írjtam rá egy python programot!

A professzionális elemzők két fő módszert kombinálnak, amelyeket Pythonban is könnyen megvalósíthatsz:Fundamentális elemzés: Olcsó, de stabil, nyereséges cégek keresése (pl. alacsony P/E ráta, magas profitmarzs).Technikai elemzés: A piaci momentum és trendek azonosítása (pl. RSI indikátor vagy mozgóátlagok segítségével).
 Kockázati figyelmeztetés: Egy egyedi részvény vásárlása mindig magas kockázattal jár, és akár a teljes befektetett tőke elvesztését is eredményezheti. A kockázatok csökkentése érdekében érdemes diverzifikált portfólióban (vagy ETF-ekben) gondolkodni.
Az alábbi program a népszerű yfinance könyvtárat használja. Letölti egy előre meghatározott részvénylista (pl. az S&P 500 legnagyobb technológiai és növekedési cégei) legfrissebb adatait, majd kiszűri azokat, amelyek fundamentálisan alulértékeltek (P/E < 30) és technikailag sincsenek még túlvásárolt állapotban (RSI < 70).
----------
import pandas as pd
import yfinance as yf
import pandas_ta as ta  # Technikai indikátorok egyszerű számításához kell telepíteni!

# 1. Definiáljuk a vizsgálni kívánt részvények listáját (példaként néhány nagyvállalat)
tickers = ["AAPL", "MSFT", "GOOGL", "AMZN", "META", "TSLA", "NVDA", "BRK-B", "JNJ", "V", "JPM", "XOM"]

def analyze_stocks(ticker_list):
    results = []
    
    print("Adatok letöltése és elemzése folyamatban...\n")
    
    for ticker_symbol in ticker_list:
        try:
            ticker = yf.Ticker(ticker_symbol)
            
            # --- FUNDAMENTÁLIS ADATOK ---
            info = ticker.info
            pe_ratio = info.get("trailingPE", None)
            forward_pe = info.get("forwardPE", None)
            profit_margin = info.get("profitMargins", None)
            company_name = info.get("longName", ticker_symbol)
            
            # --- TECHNIKAI ADATOK (Utolsó 6 hónap napi árai) ---
            history = ticker.history(period="6m")
            if history.empty or len(history) < 20:
                continue
                
            # RSI (Relative Strength Index) számítása 14 napos periódusra
            history.ta.rsi(length=14, append=True)
            # 50 napos mozgóátlag (SMA)
            history.ta.sma(length=50, append=True)
            
            latest_row = history.iloc[-1]
            current_price = latest_row["Close"]
            rsi = latest_row["RSI_14"]
            sma_50 = latest_row["SMA_50"]
            
            # Trend meghatározása: Ha az ár a 50 napos mozgóátlag felett van, a trend emelkedő
            trend = "Bika (Emelkedő)" if current_price > sma_50 else "Medve (Eső)"
            
            results.append({
                "Ticker": ticker_symbol,
                "Név": company_name,
                "Ár ($)": round(current_price, 2),
                "P/E Ráta": round(pe_ratio, 2) if pe_ratio else "N/A",
                "Profit Marzs": f"{round(profit_margin * 100, 2)}%" if profit_margin else "N/A",
                "RSI (14)": round(rsi, 2) if not pd.isna(rsi) else "N/A",
                "Trend (50 SMA)": trend
            })
            
        except Exception as e:
            print(f"Hiba történt a(z) {ticker_symbol} lekérésekor: {e}")
            
    # Adatok DataFrame-be rendezése
    df = pd.DataFrame(results)
    return df

# Elemzés futtatása
df_stocks = analyze_stocks(tickers)

# --- SZŰRÉSI STRATÉGIA ---
# Kiszűrjük azokat a cégeket, amelyek:
# 1. Rendelkeznek P/E rátával és az 30 alatti (nem túlárazott fundamentálisan)
# 2. Az RSI értékük 70 alatti (technikailag nem túlvásárolt, van még tér növekedni)
# 3. Pozitív a profit marzsuk (nyereségesek)

# Biztonsági konverzió a szűréshez
df_stocks["P/E_float"] = pd.to_numeric(df_stocks["P/E Ráta"], errors='coerce')
df_stocks["RSI_float"] = pd.to_numeric(df_stocks["RSI (14)"], errors='coerce')

Kivalasztott_reszvenyek = df_stocks[
    (df_stocks["P/E_float"] < 30) & 
    (df_stocks["RSI_float"] < 70) & 
    (df_stocks["Trend (50 SMA)"] == "Bika (Emelkedő)")
].drop(columns=["P/E_float", "RSI_float"])

# Eredmények megjelenítése
print("=== ÖSSZES LEKÉRT ADAT ===")
print(df_stocks.drop(columns=["P/E_float", "RSI_float"]).to_string(index=False))

print("\n" + "="*40)
print(" STRATÉGIA ALAPJÁN AJÁNLOTT VÉTELI CÉLPONTOK:")
print("="*40)
if Kivalasztott_reszvenyek.empty:
    print("A jelenlegi piaci feltételek mellett a listából egyik részvény sem felelt meg a szigorú kritériumoknak.")
else:
    print(Kivalasztott_reszvenyek.to_string(index=False))
-----------------------
Futtatás;https://www.w3schools.com/python/pandas/trypandas.asp?filename=demo_pandas_editor
https://colab.research.google.com/drive/1IBFmIxyM0-Ph71N2pks5lYz6z25PIeoI
---------------

Kimenet




https://medium.com/@sabirbagwan/working-in-python-using-yfinance-2aa211b909e0

Nincsenek megjegyzések:

Megjegyzés küldése