כל המאמרים
Pythonyfinanceמדריך
·נכתב על ידי עדן מרגוליס

yfinance — מדריך למשיכת נתוני מניות בפייתון

מדריך yfinance מעשי: איך למשוך נתוני מחיר היסטוריים ובזמן אמת בפייתון, אילו פרמטרים חשובים, ומהן המגבלות שכדאי להכיר לפני שבונים עליה בוט מסחר.

yfinance היא ספריית פייתון חינמית שמושכת נתוני מחיר היסטוריים ובזמן אמת ממניות, מדדים ומטבעות דרך Yahoo Finance. היא הכלי הנפוץ ביותר לצעד הראשון בבניית בוט מסחר או הרצת Backtesting, בזכות היותה חינמית לחלוטין וקלה להתקנה. חשוב להכיר גם את המגבלות שלה — בעיקר עיכובים בנתוני זמן אמת ואמינות משתנה — לפני שבונים עליה מערכת קריטית.


התקנה ושימוש בסיסי

pip install yfinance
import yfinance as yf

df = yf.download("AAPL", start="2020-01-01", end="2024-01-01", interval="1d")
print(df.head())

התוצאה היא DataFrame של pandas עם עמודות Open, High, Low, Close, Volume — כל מה שצריך כדי להתחיל לחשב אינדיקטורים ולבנות אסטרטגיה.

הפרמטרים החשובים

df = yf.download(
    "AAPL",
    period="2y",        # במקום start/end: "1d", "5d", "1mo", "1y", "5y", "max"
    interval="1h",       # "1m", "5m", "15m", "1h", "1d", "1wk"
    auto_adjust=True,    # מתאם אוטומטית לפיצולי מניות ודיבידנדים
)

חשוב לגבי interval: נתונים בתדירות גבוהה (דקות/שעות) זמינים רק לתקופה מוגבלת אחורה — בדרך כלל עד 60 ימים לנתוני דקה, ועד 730 ימים לנתוני שעה. לבדיקת אסטרטגיות על שנים רבות, צריך להשתמש בנתונים יומיים (interval="1d").

משיכת כמה מניות בבת אחת

tickers = ["AAPL", "MSFT", "GOOGL", "AMZN"]
df = yf.download(tickers, start="2022-01-01", end="2024-01-01")

כשמושכים כמה מניות יחד, yfinance מחזיר DataFrame עם MultiIndex בעמודות — צריך לגשת לנתונים של מניה ספציפית עם df["Close"]["AAPL"] או דרך df.xs("AAPL", axis=1, level=1).

נתוני זמן אמת (בקירוב)

ticker = yf.Ticker("AAPL")
info = ticker.info
current_price = info.get("currentPrice")

חשוב להבין: הנתונים דרך yfinance לא באמת "בזמן אמת" — יש עיכוב (בדרך כלל 15-20 דקות), והם לא מיועדים לביצוע עסקאות אמיתיות. לבוט שמבצע עסקאות בפועל, נתוני המחיר לביצוע חייבים להגיע מה-API של הברוקר עצמו (כמו Alpaca), לא מ-yfinance — ראו מדריך חיבור לברוקר.

מגבלות שכדאי להכיר

אמינות — yfinance היא ספרייה בקוד פתוח שמושכת נתונים מ-Yahoo Finance בדרך לא רשמית (אין API רשמי ומתועד מ-Yahoo). לעיתים היא נשברת כשיאהו משנה משהו בצד שלהם, ומתעדכנת בקהילה בהתאם. לבדיקות ולימוד זה מצוין; למערכת קריטית בפרודקשן כדאי לשקול מקור נתונים בתשלום עם SLA.

Survivorship Bias — משיכת רשימת מניות "נוכחית" (כמו S&P 500 של היום) לבדיקה על תקופת עבר יוצרת הטיה — ראו מדריך Survivorship Bias להסבר המלא.

שאלות נפוצות

האם yfinance מתאים לבוט מסחר בזמן אמת?

לנתוני מחיר לצורך ניתוח וסינון — כן, בסבירות טובה. לביצוע עסקאות בפועל — לא: יש להשתמש ב-API של הברוקר עצמו (Alpaca, Interactive Brokers), שנותן מחירי ביצוע מדויקים ומעודכנים באמת.

כמה נתונים היסטוריים אפשר למשוך?

לנתונים יומיים — לרוב עד עשרות שנים אחורה, תלוי במניה. לנתונים ברמת דקות/שעות יש מגבלת זמן קצרה יותר (ימים עד חודשים אחורה), כפי שמוגדר על ידי Yahoo Finance ולא על ידי הספרייה עצמה.

מה עושים אם yfinance מחזיר שגיאה או נתונים ריקים?

זה קורה מדי פעם, בעיקר בתקופות שבהן Yahoo Finance משנה משהו בצד שלהם. מומלץ לבדוק את הגרסה המותקנת (pip install --upgrade yfinance) ולוודא שהטיקר נכון. לקוד שרץ באופן אוטומטי, כדאי להוסיף try/except וטיפול בשגיאות בסיסי.

האם צריך מפתח API כדי להשתמש ב-yfinance?

לא — זה אחד היתרונות הגדולים שלה. אין צורך בהרשמה, אימות, או מפתח API, בניגוד לרוב מקורות הנתונים הפיננסיים האחרים.

רוצה לבנות בוט כזה בעצמך?

שיחה קצרה של 20 דקות.

דברו איתנו חינם