→ חזרה לדף הראשי

מתודולוגיה

איך המדד עובד, מאיפה מגיעים הנתונים, ולמה 37 מוצרים זה לא פשוט כמו שזה נשמע

מקור הנתונים

חוק פרסום מחירי מצרכי מזון (2014) מחייב את רשתות הסופרמרקט הגדולות לפרסם קובץ XML מדי יום עם המחיר הנוכחי של כל מוצר בכל סניף. הקבצים האלה זמינים לציבור, ופרויקט Israeli Supermarkets (Kaggle) מרכז אותם ומפרסם גרסה מאוחדת בפורמט CSV. אנחנו מורידים את הנתונים האלה מדי יום.

כל קובץ CSV מכיל שורה אחת לכל מוצר בכל סניף, כולל שדה PriceUpdateDate - תאריך העדכון האחרון של המחיר. שדה זה הוא הבסיס לשחזור הסדרה ההיסטורית.

ברקודים: מה שאנשים לא יודעים

כשמשווים מחירים בין רשתות, הדבר הכי חשוב הוא לוודא שמשווים את אותו מוצר בדיוק. כאן הברקוד נכנס לתמונה - אבל הסיטואציה מסובכת יותר ממה שנדמה.

14 מוצרים - ברקוד אוניברסלי

מותגים לאומיים (תנובה, אסם, יטבתה, עלית וכו') משתמשים בברקוד GS1 ייחודי המוגדר על ידי היצרן. ברקוד זה זהה בכל הרשתות - 7290004131074 הוא תמיד חלב תנובה 3% קרטון 1 ליטר, לא משנה אם קנינו בשופרסל או בחצי חינם.

דוגמאות: חלב, קוטג', גבינה, חמאה, אורז, סוכר, קולה, קפה, במבה, שוקולד

23 מוצרים - ברקוד לפי רשת

שני מקרים מחייבים מיפוי פרטני לכל רשת: (1) פירות, ירקות ועוף טרי הנמכרים לפי משקל - כל רשת מקצה קוד PLU משלה(ברמי לוי עגבניה היא קוד X, בשופרסל קוד Y); (2) מוצרים ארוזים שהברקוד ה"אוניברסלי" שלהם חסר או ללא מחיר בחלק מהרשתות - אז ממפים כל רשת לפריט המקביל שלה.

דוגמאות: עגבניה, מלפפון, בצל, גזר, תפוח, תפוח אדמה, חזה עוף, לחם, ספגטי, טחינה, חומוס, תה, ביצים, אפונה קפואה

למה זה משנה?

כאשר בונים סל קניות להשוואה בין-רשתית, אי אפשר לחפש "עגבניה" לפי ברקוד אחד בכל הרשתות - צריך לדעת את הקוד הספציפי שכל רשת השתמשה בו. עבור 23 המוצרים האלה, בנינו מיפוי ידני לכל רשת בנפרד. עבור 14 המוצרים הנותרים, ברקוד אחד מספיק.

מה קורה כשמחליפים מוצר במדד?

ברקודים לא חיים לנצח. רשת מפסיקה למכור פריט, ממחזרת קוד פנימי, או עוברת משיטת קידוד אחת לאחרת. לפעמים גם מתברר בדיעבד שהברקוד שמדדנו הוא בכלל לא המוצר שהתכוונו אליו - למשל זן פרימיום במקום הירק הרגיל בתפזורת. בכל המקרים האלה אין ברירה אלא להחליף את הברקוד שאנחנו מודדים.

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

דוגמה אמיתית.באחת הרשתות מדדנו "עגבניה" לפי ברקוד שהתברר כזן פרימיום במחיר 15.90 ש"ח לק"ג, בזמן שהעגבניה בתפזורת באותה רשת נמכרת ב-5.90 ש"ח לק"ג.

  • החלפה נאיביתהייתה מציגה ירידה של כ-63% ביום אחד - "העגבניות התרסקו". שקר.
  • שרשור (chain-linking) לוקח יום שבו שני הברקודים מתומחרים במקביל, מחשב את היחס ביניהם, ומחבר את הסדרה החדשה לרמה של הסדרה הקודמת. אין קפיצה מזויפת, וההיסטוריה שפורסמה לא משתנית.

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

זו לא שיטה שהמצאנו

שרשור הוא הפרקטיקה הסטנדרטית של לשכות סטטיסטיקה בכל העולם, כולל הלמ"ס בישראל, בכל פעם שמוצר בסל המדד מוחלף בדגם או בפריט אחר. ההסברים הרשמיים על אופן חישוב מדד המחירים לצרכן מתפרסמים כאן: מדד המחירים לצרכן - הגדרות והסברים, הלמ"ס.

המחיר המוצג לכל רשת: למה חציון ולא ממוצע?

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

דוגמה אמיתית מהנתונים שלנו.מלפפון ברמי לוי, 75 סניפים: 39 סניפים ב-5.90 ש"ח, 15 ב-3.90, 9 ב-6.90, 6 ב-4.90, 3 ב-8.90 ו-3 ב-1.90. הממוצע יוצא 5.50 ש"ח - מחיר שלא קיים באף סניף. החציון הוא 5.90 - המחיר שבו באמת קונים ברוב הסניפים.

הערה על מה שהשתנה: עד ה-9 באוגוסט 2026 טבלת המוצרים הציגה מחיר של סניף בודד - זה שעדכן מחיר אחרון - ולא סיכום של הרשת. מכיוון שסניף שמעדכן מחיר הוא לרוב סניף שהתחיל מבצע, המספר שהוצג נטה כלפי מטה וייצר פערים לא סבירים בין רשתות. המעבר לחציון תיקן זאת. שימו לב: המדד עצמו לא הושפע מהשינוי הזה. עד 25 בספטמבר 2026 הוא חושב מחציון הסניפים, ומאז הוא מודד שינוי מחיר על אותם סניפים - ראו הסעיף הבא.

איך מודדים שינוי מחיר יומי? אותם סניפים, אתמול מול היום

כדי לדעת בכמה השתנה מחיר של מוצר ברשת מאתמול להיום, לא מספיק להשוות את החציון של היום לחציון של אתמול. הסיבה: הסניפים שמפרסמים משתנים מיום ליום. כשסניף אחד נכנס לקובץ או יוצא ממנו, החציון יכול לזוז גם כשאף סניף לא שינה מחיר.

דוגמה אמיתית מהנתונים שלנו. עגבניות בקרפור, כ-145 סניפים, 19-25 בספטמבר 2026: החציון קפץ 9.90, 10.40, 10.90, 11.40, 10.90 ושוב 11.40 - חמש קפיצות בשישה ימים, ובארבע מהן שינה מחיר לכל היותר סניף אחד. המחירים 10.40 ו-11.40 לא קיימים באף סניף: זה הממוצע של שני הסניפים האמצעיים, שנוצר כשמספר הסניפים יוצא זוגי. בשיטה החדשה אותו שבוע נראה אחרת: אפס, אפס, ירידה של 0.08%, אפס, עלייה של 0.19% - ורק ב-25 בספטמבר, כש-52 מתוך 145 סניפים באמת העלו מחיר, נרשמה עלייה של 2.85%.

איך זה עובד

בבדיקה על כל הנתונים מאז 6 ביוני 2026, בכ-44% מהתזוזות של החציון, החציון של אותם סניפים לא זז בכלל - כל התזוזה נבעה מסניפים שנכנסו או יצאו - והן היוו כשליש מכל התנועה היומית של המדד. ב-38% מהתזוזות אף סניף לא שינה מחיר כלל. בשיטה החדשה התנועה היומית הכוללת ירדה בכמחצית, והמגמה לאורך זמן נשמרה. בפועל כמעט כל הסניפים חוזרים מיום ליום: בחציון, 100% מהסניפים של היום פרסמו גם אתמול.

גם זו לא שיטה שהמצאנו

השוואה של אותו פריט באותה נקודת מכירה לאורך זמן, וסיכום השינויים בממוצע גיאומטרי (שיטת Jevons על מדגם תואם), היא השיטה המועדפת לרמה הזאת של המדד במדריך הבינלאומי למדד המחירים לצרכן (CPI Manual 2020), שפרסמו ה-IMF, ה-ILO וארגונים בינלאומיים נוספים. חשוב להבחין: המחיר שמוצג לכל רשת בטבלאות נשאר חציון הסניפים - הוא עונה על השאלה "כמה זה עולה היום", והמדד עונה על השאלה "בכמה זה השתנה".

איך בונים מדד יומי מנתונים מ-8 רשתות?

  1. 1

    תצלום יומי של המחיר בכל סניף

    מאז 6 ביוני 2026 אנחנו שומרים כל יום snapshot של המחיר בפועל בכל סניף, לכל מוצר בסל, בכל הרשתות. השינוי היומי של רשת במוצר נמדד על אותם סניפים בלבד - כל סניף מול המחיר הקודם שלו (ראו הסעיף הקודם). שני סינוני איכות חלים כאן: יום שבו רשת פרסמה רק חלק קטן מהסניפים שלה מדולג (הערך האחרון הטוב מוחזק), ויום נכנס לחישוב רק אם המוצר נצפה ב-5 סניפים לפחות - אותו רף בדיוק שחל על טבלת המוצרים - ויש לפחות 5 סניפים שאפשר להשוות.

  2. 2

    ההיסטוריה שלפני יוני 2026 - שחזור קפוא

    לימים שלפני תחילת ה-snapshots, הסדרה שוחזרה פעם אחת משדה "תאריך עדכון אחרון" שבקבצים, הוקפאה לקובץ, ומחוברת לסדרת ה-snapshots בשיטת שרשור מדדים סטנדרטית (chain-linking) - כך ששינויים עתידיים בקבצי המקור לעולם לא משכתבים את העבר. צירוף מוצר-רשת שאין לו לא היסטוריה קפואה ולא נתוני snapshot מספקים פשוט אינו משתתף במדד.

  3. 3

    ממוצע גיאומטרי בין הרשתות

    לכל תאריך ולכל מוצר, לוקחים ממוצע גיאומטרי של המחירים מכל הרשתות שיש להן נתון. ממוצע גיאומטרי (לעומת חשבוני) מגביל את ההשפעה של מחיר קיצוני אחד על כלל המדד.

  4. 4

    סינון חריגים

    חלק מהקבצים מכילים מחירים פגומים - לעתים ממוצרים "במשקל" עם מחיר של עשרות שקלים לקילו שאינו מתעדכן מ-2019. סינון זה מוריד כל מחיר שגבוה מפי 4 מהמחיר השני-בזול לאותו מוצר, ומסיר את ההשפעה שלו מהמדד.

  5. 5

    חישוב ביחס לתאריך בסיס קבוע

    תאריך הבסיס הוא 15 ביוני 2025 = 100. כל יום מחושב ביחס לבסיס: אם סל המוצרים עלה 2.5% מאז הבסיס, המדד מציג 102.5. מחירי הבסיס עצמם קפואים - הם חושבו פעם אחת ונשמרו, כך שתנודות בקבצי המקור אינן יכולות להזיז את נקודת הייחוס שכל המדד נמדד ממנה.

למה החודשים הראשונים (יוני-נובמבר 2025) פחות אמינים?

השחזור ההיסטורי עובד טוב רק כשיש הרבה סניפים עם תאריכי עדכון שונים. כאשר 500 סניפים עדכנו את מחיר המלפפון בתאריכים שונים לאורך 6 חודשים - אנחנו "רואים" את תנועת המחיר בין כל עדכון.

הבעיה: בחודשים המוקדמים (יוני-נובמבר 2025), כשהדאטה עדיין היה דליל, מעט מאוד עדכונים שוחזרו לכל מוצר - ולכן הגרף שטוח באופן מלאכותי. זה לא אומר שהמחירים לא השתנו - זה אומר שאנחנו לא יכולים לראות את השינוי.

מה עשינו בשביל העתיד?

מה-30 במאי 2026, אנחנו שומרים snapshot יומי של מחיר 100 מוצרים בכל סניף בכל הרשתות - ומאז 6 ביוני 2026 המדד עצמו מחושב מה-snapshots האלה, לא משחזור. השחזור משמש רק כזנב היסטורי קפוא לימים שלפני כן. ככל שארכיון ה-snapshots מצטבר, החלק המדויק של הסדרה מתארך.

מגבלות ידועות

יומן עדכוני מתודולוגיה

כשאנחנו מתקנים את שיטת החישוב, כל הסדרה מחושבת מחדש לפי השיטה החדשה - ולכן ערכים היסטוריים עשויים להשתנות. כל שינוי כזה מתועד כאן, כדי שקפיצה בגרף שמקורה בשיפור השיטה לא תיקרא בטעות כתנועת מחירים אמיתית.

שאלות? צרו קשר