מדוע מפת החום של שוק הקריפטו מעוותת את התמונה
מפת החום של שוק הקריפטו נראית כמו חתך אובייקטיבי של השוק, אך היא תוצאה של כמה טרנספורמציות בלתי תלויות: סקירת מקורות, אגרגציה של נתוני בורסה, חישוב מטריקה ופריסת אריחים. כל חוליה מוסיפה עיוות, והם מצטברים — הסוחר מקבל החלטה לפי תמונה שכבר לא הייתה קיימת בשוק.
הפער הראשון — אי-התאמה בין מקורות. אותו נכס נסחר במחירים שונים בפלטפורמות שונות, והאגרגטור או ממצע את המחיר, או לוקח את האחרון הזמין: הממוצע אינו בר-ביצוע, והאחרון עשוי להגיע מפלטפורמה עם נזילות דקה. מעל לכך מונחת השהיית הציטוטים — בעדכון של שנייה האריח מציג מחיר שכבר אינו קיים בספר הפקודות.
הפער השני — משקל האריח. שטח האלמנט אמור לקודד מטריקה אחת, אך המקורות מספקים אותה בצורות שונות: במקום אחד נפח במטבע בסיס, במקום אחר במטבע מצוטט, ובמקום שלישי — רק עסקאות מהשעה האחרונה. כשמחברים מספרים כאלה, מתקבלים שטחים שאינם ברי-השוואה בין אריחים, ושחקן גדול נראה קטן.
לכן נרמול המטריקות חייב להיות מפורש: למה ממירים, על פני איזה חלון זמן, ומה עושים עם חוסרים והפסקות מסחר.
בסופו של דבר הסוחר קורא אריחים שאינם ברי-השוואה ומחירים מיושנים, והשגיאה בכניסה מוכפלת בגודל הפוזיציה. בהמשך נסביר כיצד זה נסגר.
מה נותן ויזואלייזר עצמאי: מהירות ודיוק
הדרך הסטנדרטית היא סקירה של ממשק ציבורי כל כמה שניות. בשוק חי זה לא מספיק: בין הסקירות עובר חלק ניכר מהתנועה, וזינוקי עומס יוצרים שורות של עדכונים שהוחמצו.
לכן העסקאות זורמות דרך חיבור מתמיד, התצלום נבנה מחדש באופן אינקרמנטלי, וההשהיה מעסקה ועד ציור מחדש של האריח נכנסת לפריים אחד — המפה מציגה את המתרחש כעת.
חישוב מחדש של אריחים הוא משימה נפרדת. חישוב מלא של הפריסה בכל עדכון על אלף כלים יוצר עומס מתמיד ורעידות של הקנבס. הפריסה נבנית פעם אחת, ומכאן והלאה זזים רק הצמתים שנפגעו: שינויים שהגיעו בין פריימים מצטברים ומיושמים בחבילה עם הגבלת תדירות. האריחים לא "קופצים" מתחת לסמן, וגבולות הבלוקים נשארים ברי-השוואה בין עדכונים.
קטיעת מקור לא צריכה להפיל את המפה. הזרם מכל פלטפורמה מתנהל בנפרד: הקטיעה נרשמת כמצב של המקור, הערכים התקפים האחרונים שלו נשארים בפריסה, ולאחר השחזור הערוץ משלים את החסר.
מחלקת הכשלים מצטמצמת — במקום מסך ריק המשתמש רואה מפה עם סימון מפורש של אזורים מיושנים ומבין לאילו נתונים עדיין אפשר לתת אמון.
ההשוואה מול הבורסה אינה חד-פעמית בעת ההפעלה: מחירים ונפחים מושווים באופן מתמיד לאגרגטורי ייחוס כמו CoinGecko ולליבת המסחר של הפלטפורמה. אי-התאמה בכלי מסוים נראית מיד — לפני שהמשתמש מדווח עליה.
עדכון ציטוטים של שוק הקריפטו: השוואת גישות
מפת החום מציגה את מצב השוק בדיוק במידה שבה הנתונים שמתחת לאריחים טריים. כאן מתנגשות שתי מגבלות: ההשהיה בין שינוי המחיר לציור מחדש, והמגבלות על בקשות אצל מקור הציטוטים. בחירת סכמת האספקה היא פשרה בין טריות הנתונים לבין העמידות במגבלות אלה.
להלן ארבע סכמות שביניהן בוחרים בפועל בעת בניית מפת חום של שוק הקריפטו עם מאות אריחים.
| אפשרות | מתי מתאימה | מגבלות |
|---|---|---|
| זרם ציטוטים מתמיד | עשרות נכסים, תגובה כמעט מיידית, המסך פתוח באופן קבוע | חיבור לכל לקוח; בעת קטיעה נדרשת הרשמה מחדש והשלמת החסר |
| סקירה תקופתית | מאות נכסים, עדכון כל 5–30 שניות מספיק | ההשהיה שווה למרווח, בקשות סרק כשהמחירים לא משתנים, המגבלה מנוצלת על ידי כל הלקוחות בבת אחת |
| סכמה משולבת | מפת סקירה בתוספת אריח מפורט של הנכס הנבחר | שני נתיבי נתונים בלתי תלויים מתאחדים למצב אחד, קשה יותר לדיבאג |
| אגרגטור עצמאי | כמה מקורות, נדרש שליטה על ההשהיה ועמידות בכשלים | תשתית עצמאית, מטמון וכללי מיזוג, תחזוקה מתמדת |
בפועל בוחרים את הסכמה בהתאם למספר האריחים ולתדירות העדכון הנדרשת. למסך סקירה מספיקה סקירה תקופתית, וזרם מתמיד מפעילים רק עבור הנכס הנבחר — כך מגבלות המקור נשארות ברזרבה.
כיצד אנו בונים ויזואלייזר: שלבי העבודה
רצף העבודה זהה גם לויזואלייזר בורסאי וגם לפאנל אנליטי: תחילה מנתחים את מקורות הנתונים, לאחר מכן מחשבים את המטריקה, ורק אז מציירים את האריח. שגיאה במקור או במשקל מבטלת את כל התמונה, ולכן השלבים מתנהלים בסדר קפדני.
- ביקורת מקורות. מרכיבים רשימה של פלטפורמות ואגרגטורים, בודקים זמינות של ממשקים ציבוריים, יציבות של זרמי עסקאות, ומאמתים את כתיבת הטיקרים. מתעדים את השהיית העדכון, המגבלות על תדירות הבקשות והתנהגות המקור בעת קטיעת חיבור.
- סכמת אגרגציה. מסכמים כיצד מנרמלים שמות זוגות, כיצד מחברים עסקאות מפלטפורמות שונות ומה עושים עם נכסים הנסחרים במקום אחד. הפלט הוא טבלת מטריקות אחידה וכלל חישוב מחדש.
- חישוב מטריקות ומשקלים. בוחרים מה קובע את שטח האריח ומה את הצבע: שווי שוק, נפח יומי, מספר עסקאות או שינוי מחיר. מכיילים את המשקלים כך שהנכסים הגדולים ביותר לא ידכאו את האחרים והמפה תישאר קריאה.
- הרכבת סכמת האריחים. פורסים מלבנים באלגוריתם Treemap: השטח שומר על פרופורציית המשקל, הכיתובים אינם חופפים, ובשינוי החלון המפה נבנית מחדש תוך שמירה על ההיררכיה.
- בדיקת התכנסות. מאמתים את סכום השטחים מול המשקלים המקוריים, מריצים את המפה על חתכים היסטוריים, ובוחנים את ההתנהגות בעת קטיעת זרם וזינוק חד בנפח. אי-התאמה מעל לסף שנקבע היא פגם חוסם.
- מסירת הפרויקט. מוסרים תיאור של המקורות והמטריקות, קונפיגורציה של המשקלים, הוראות לחיבור פלטפורמה חדשה וניתוח של כשלים אופייניים. את הרכב הנכסים ואת כללי החישוב משנה צוות הלקוח באופן עצמאי, ללא מעורבות המפתח.
מה נשאר בפרויקט לאחר המסירה
פרויקט נחשב למסור לא כאשר המפה נפתחת בעמדת דמו, אלא כאשר צוות הלקוח יכול לבנות אותה מחדש, להרחיב ולתקן בלעדינו. לכן המסירה כוללת לא רק קוד מקור, אלא גם את כל התשתית שעושה את מפת החום לשחזורית: כללי חישוב, סכמות נתונים ונהלי תחזוקה.
- מודול החישוב — אגרגציה של נתוני בורסה, נרמול לפי מקורות, חישוב משקלים וספי סולם הצבעים; הלוגיקה מכוסה בבדיקות על חתכים היסטוריים של השוק.
- סכמת זרמי הנתונים — המסלול מקבלת הציטוטים ועד ציור האריחים: היכן הנתונים נצברים, היכן מחושבים מחדש, היכן נמסרים מהמטמון ומה קורה בעת אובדן המקור.
- תיאור המטריקות והמשקלים — איזו מטריקה קובעת את גודל האריח, איזו את הצבע, כיצד מחושבים מדדים נגזרים וכיצד משנים משקלים בלי לערוך את קוד החישוב.
- נהלי העדכון — תדירות החישוב מחדש, סדר פרסום גרסה חדשה של האלגוריתם, התנהגות המפה כאשר הנתונים מיושנים או חסרים.
- קונפיגורציות של סביבות והרשאות — משתני סביבה, סודות, תפקידים, חלוקת הרשאות לצפייה ולשינוי של פרמטרי החישוב.
- מדריך לצוות — פריסה מאפס, אבחון של כשלים אופייניים, סדר החזרה לגרסה קודמת של האלגוריתם.
- ניטור והתראות — בקרה על השהיית הנתונים, על שיעור הרשומות שנזרקו ועל זמינות המקורות; ספים שמעליהם התורן מקבל התראה.
קייס: כיצד צמצמנו את השהיית תצלום השוק
לפני: המפה פיגרה אחרי השוק
האגרגטור אסף ציטוטים מכמה מקורות וצייר מחדש את מפת החום כולה לפי טיימר. התצלום נבנה תוך 4-6 שניות, וברגעים של תנועות חדות — עד 12, ולכן האריח החליף צבע כבר לאחר שהמחיר נעלם.
לכך נוספו קטיעות של המקור: המפה קפאה על התצלום המוצלח האחרון עד שפג התוקף של החיבור, והמשתמש לא הבין שהוא מסתכל על נתונים שאינם עדכניים. שיעור האריחים עם מחירים מיושנים בתקופות שיא הגיע ל-18%.
מה שינינו
- הפרדנו בין קבלת הנתונים לבין הציור: זרם הציטוטים שומר את הערך התקף האחרון במטמון עבור כל טיקר, והציור קורא אותו באופן בלתי תלוי.
- עברנו לעדכון אינקרמנטלי — מחושבים מחדש רק האריחים שמחירם השתנה, ולא המפה כולה.
- את הפריסה בונים מחדש רק בשינוי הרכב או משקלים, ולא בכל עדכון מחיר.
- הוספנו בקרת טריות: אם הערך ישן מהסף שנקבע, האריח מסומן כמיושן — רואים שהנתונים מוטלים בספק.
- ההתחברות מחדש למקור מתבצעת בהשהיה הולכת וגדלה, עם השלמה של הקטע החסר מהמטמון.
מה היה לתוצאה
התצלום נבנה בפחות משנייה, ושיעור האריחים עם מחירים מיושנים נשאר מתחת ל-1% גם בשעות שיא. לאחר קטיעת מקור, המפה חוזרת לנתונים חיים תוך 1-2 שניות במקום המתנה לפקיעת תוקף, והקטע החסר מושלם ללא פער בהיסטוריה. הפריסה הפסיקה "להתנועע" בכל טיק: קונפיגורציית האריחים יציבה כל עוד הרכב השוק לא משתנה.
מקור הציטוטים הוא הממשקים הפתוחים של CoinGecko ושל בורסות גדולות; את התשתית כתבנו בהתאם למגבלות הבקשות שלהן, כדי שהמפה לא תיתקל במגבלות עם גידול מספר המנויים.
במה נבדלת סכמת האריחים Treemap מגרף ומטבלה
סכמת האריחים מקודדת שלושה גדלים בעת ובעונה אחת: שטח האריח — משקל הנכס או הסקטור, המיקום — קיבוץ לפי סקטורים, הצבע — השינוי בתקופה. צפיפות הנתונים כאן גבוהה מזו של כל ייצוג אחר: על מסך אחד נכנסים מאות כלים, והקבוצות הדומיננטיות נראות מיד, בלי לדפדף ברשימה.
הגרף עונה על השאלה "מה היה", הטבלה — "כמה בדיוק", וסכמת האריחים — "איך זה בנוי כעת": רואים שהסקטור תופס רבע מהשוק, ובתוכו מחצית מהמשקל נופלת על מטבע אחד.
במקום שבו חשוב היחס בין גדלי הקבוצות, הסכמה עולה על שני הפורמטים, אך מפסידה בדיוק קריאת הערכים — לפי שטח האריח אי אפשר להבחין בשינוי של כמה אחוזים — ובמידע ההיסטורי: הדינמיקה נפתחת רק בתוך כלי בודד.
| ייצוג | מתי מתאים | מגבלות |
|---|---|---|
| סכמת האריחים | סקירת שוק, השוואת סקטורים, איתור חריגות לפי צבע | השטח נקרא באופן מוערך, ההיסטוריה — רק עבור נכס בודד |
| גרף | דינמיקת מחיר ונפח, רמות טכניות | כלי אחד או שניים, אין תמונה כוללת של השוק |
| טבלה | ערכים מדויקים, מיון, ייצוא, חישובים | צפיפות נתונים נמוכה, את מבנה הקבוצות צריך להרכיב בראש |
בפועל זה נסגר בהיבריד: המפה משמשת כסקירה וכניווט, ובחירת אריח חושפת גרף וטבלה עם מספרים מדויקים. מסופים ציבוריים כמו TradingView בנויים על העיקרון הזה, ובצד הפיתוח משמעות הדבר היא אגרגטים בצד השרת לפי סקטורים — הלקוח אינו מחשב מחדש מאות אריחים אצלו, אלא טוען פרטים לפי דרישה.
ספקות לגבי נתונים, עומס ודיוק
לגבי החלק ההנדסי של מפת החום של שוק הקריפטו, הספקות בדרך כלל זהים: עד כמה טריים הנתונים שמגיעים לציור, מה קורה בעת קטיעת זרם מהפלטפורמה וכיצד האגרגטור מתנהג כשהמחירים בבורסות נבדלים. להלן תשובות לשאלות שנשמעות לרוב בשיחות טכניות.
הדיוק במפה נקבע לא לפי מהירות הציור, אלא לפי האופן שבו נאספות העסקאות וכיצד נבחר מחיר הייחוס. אנו מחזיקים חיבור מתמיד עם הפלטפורמה במקום סקירות תקופתיות, ואת אי-ההתאמה בין המקורות מנטרלים ברמת החישוב, ולא ברמת התמונה.
עד כמה התמונה מפגרת אחרי העסקאות בפועל?
מעסקה בפלטפורמה ועד ציור מחדש של האריח עוברת פחות משנייה בערוץ תקין — צוואר הבקבוק כאן הוא הרשת והאגרגציה, ולא אלגוריתם הפריסה. תפוקת הקיבול מחושבת מראש: המפה עומדת בשעות שיא, כשזרם העסקאות גדל פי כמה.
אם התור לא מספיק להתעבד, האריחים מתעדכנים בתדירות נמוכה יותר, אך אינם "קופאים" ואינם מציגים מחיר ישן כחי.
מה עם המגבלות של הפלטפורמות?
ממשקים ציבוריים מגבילים את תדירות הפניות: בסקירה של מאות זוגות אנו נתקלים במהירות במגבלה ומקבלים חסימה זמנית. לכן הזרם העיקרי עובר דרך חיבור מתמיד, ואת ההיסטוריה טוענים בבקשות מנות נדירות. המגבלה מנוצלת לשחזור חוסרים, ולא לסקירה מתמדת.
מדוע המחירים בפלטפורמות נבדלים ומה אנו מציגים?
לכל בורסה ספר פקודות משלה ונזילות משל עצמה, ולכן אותו זוג נסחר במחירים שונים — בזוגות דקים הפער בולט יותר. המפה מחשבת את השינוי ממחיר ייחוס משוקלל לפי נפח, ולא מפלטפורמה אחת. כך אי-ההתאמה בין המקורות אינה הופכת לאות שווא, והאריח אינו "מתנועע" בגלל עסקה גדולה אחת.
מה יקרה בעת קטיעת הזרם?
ניתוק חיבור הוא מצב שגרתי, ולא תקלה. מודול האיסוף מתחבר מחדש בהשהיה הולכת וגדלה, מסמן את הכלי כ"נתונים מיושנים" ומציג את זמן העדכון האחרון. לאחר השחזור נטענות העסקאות החסרות מתקופת הקטיעה, והמצב מחושב מחדש — בלי חורים בהיסטוריה ובלי קפיצות בגרף.
האם אפשר להוסיף מטריקות משלכם?
כן: מקורות משלכם ומדדים פנימיים, נפחים לפי קבוצות הכלים שלכם, ספי הדגשה משלכם וכללי מיון של אריחים. המטריקות שלכם מתווספות כשכבה נפרדת מעל נתוני השוק ומתעדכנות לפי אותה סכמה, ולכן אינן מתערבבות עם אלה הבורסאיות ואינן שוברות את החישוב בעת כשל של מקור אחד.
נדון במשימה: מה לשלוח לצורך הערכה
כשהנתונים הראשוניים ברורים, ההערכה אורכת ימים ולא שבועות: המהנדסים לא צריכים לנחש אילו פלטפורמות מחוברות ובאיזו תדירות הנתונים צריכים להתעדכן. להלן רשימה של מה שמאיץ את הניתוח. שלחו את מה שכבר קיים, גם אם זה טיוטה או צילום מסך של הממשק הנוכחי.
- רשימת פלטפורמות: מאילו בורסות ואגרגטורים לוקחים נתונים, האם דרושים מקורות מבוזרים, והאם יש מגבלות גישה לממשקים שלהם.
- סט מטריקות: שווי שוק, נפח מסחר, שינוי מחיר בתקופה, תנודתיות — מה בדיוק קובע את גודל האריח והצבע במפת החום של שוק הקריפטו.
- כללי קיבוץ: לפי סקטורים, רשתות או שווי שוק, כמה רמות קינון צריך אלגוריתם Treemap לשאת וכיצד האריחים נבנים מחדש בשינוי התקופה.
- דרישות לעדכון: ההשהיה המותרת בין שינוי המחיר לציור מחדש של המפה, האם נדרשת אספקת נתונים רציפה או שמספיקה דגימה תקופתית.
- נכסים קיימים: תיאור הארכיטקטורה הנוכחית, סכמות נתונים, קטעי קוד, גישות לסביבת בדיקה — זה מסיר מחצית מהשאלות.
- עומס ועמידות בכשלים: כמה משתמשים צופים במפה בו-זמנית, מה אנו מציגים בעת קטיעת מקור הנתונים.
- תוכניות להמשך: מה נדרש לקראת ההשקה הקרובה, ומה ניתן להוציא לשלב שני.
אנו מנתחים את הנתונים הראשוניים, מבהירים נקודות שנויות במחלוקת וחוזרים עם הערכת לוחות זמנים ותוכנית עבודה לפי שלבים. תארו את המשימה — ככל שהרשימה מפורטת יותר, כך יש פחות הנחות בהערכה.







