מדוע ניתוח קורלציות של מטבעות קריפטו נותן אותות שווא
הכשל הקלאסי נראה כך: מטריצת הקשרים בין נכסים מחושבת פעם אחת על פני כל ההיסטוריה הזמינה, וכל זוג מקבל מקדם אחד — לדוגמה 0.68 בין שני מטבעות גדולים. על המספרים האלה בונים תיק, מחשבים סיכון ובוחרים במה לסגור פוזיציה. הבעיה היא שמקדם כזה מתאר ממוצע על פני כמה שווקים שונים בבת אחת, ולא את המצב שבו ההחלטה תבוצע.
שוק מטבעות הקריפטו אינו סטציונרי: תקופות של תנועה צדית שקטה, מכירות חדות וצמיחה מבודדת של סיפורים בודדים מתחלפות זו בזו בתוך ימים ספורים.
בתוך משטר אחד הנכסים נעים בקשר של 0.6–0.8, בעת החלפת משטר הוא יורד ל-0.2, ולעיתים משנה סימן — נכס ש'ביטח' את האחרים מתחיל למשוך את התיק למטה יחד איתם.
מבנה הקובריאנס משתנה מהר יותר משמצליחים לחשב אותו מחדש, לכן סטטיסטיקה על פני תקופה ארוכה מערבבת משטרים ומפסיקה לחזות דבר בדיוק ברגע שבו היא נחוצה.
הקצה הנגדי — טעות בחלונות קצרים. אם לחשב קשר לפי עשרות נקודות אחרונות, האומדן נעשה כה רועש שרוחב רווח הסמך דומה למקדם עצמו: 0.7 ו-−0.1 אינם ניתנים להבחנה פורמלית. הוסיפו השוואות מרובות — במטריצה של כמה מאות זוגות תמיד יימצאו עשרה ערכים שחצו את הסף במקרה. אלה הם אותות הקורלציה הכוזבים: הם נראים כמו חוקיות שנמצאה, אך בפועל משקפים את נפח הסריקה.
המחיר של טעות כזו נמדד לא באחוזי סטייה, אלא בסוג הכשלים. תיק שנבנה כ'מגוון' מתנהג בעת החלפת משטר כמו הימור גדול אחד, והסיכון המחושב מתגלה כנמוך פי כמה — עד לתנועה אמיתית ראשונה.
בהמשך נפרט איך זה נסגר: חלונות נעים עם בקרת מובהקות, סימון משטרים וחישוב מחדש של קשרים לפני שמתחילים לקבל עליהם החלטות.
מה נותן ניתוח קשרים רציף במקום הפקות חד-פעמיות
הפקה חד-פעמית נותנת תמונת מצב ברגע ההפעלה: הקשרים בין הנכסים חושבו מחדש, הדוח הוגש. כעבור כמה שעות דחף חדשותי וגל חיסולים משנים את התמונה — חלק מהזוגות מתפצלים, חלק מתחילים לנוע בסנכרון — וההחלטה עדיין מתקבלת לפי המספרים של אתמול. חישוב מחדש רציף סוגר את הפער הזה: מטריצת הקשרים חיה יחד עם השוק.
- מטריצת קשרים אחודה מתעדכנת לפי לוח זמנים, ולא לפי דרישה: מחלקת המסחר, ניהול הסיכונים וההנהלה רואים אותה קבוצת מקדמים, ופערים בדוחות נעלמים.
- חישוב מחדש אוטומטי של קשרים מתבצע על חלון נע — תצפיות ישנות נדחקות החוצה, ולכן זוגות מגיבים להחלפת משטר בשוק, ולא נגררים אחרי קשר מלפני חודש.
- ניתוח קשרים בין נכסים חוסם תלויות חלשות ומקריות לפי סף מובהקות: שיעור אותות השווא בדוח יורד בערך בחצי.
- ניטור קשרי התיק מציג את התרומה של כל פוזיציה לסיכון הכולל — רואים היכן התיק מחזיק באותו הימור בכלים שונים.
- צמצום חישובים ידניים: הפקות ובנייה מחדש של טבלאות מוחלפות בלוח זמנים והתראות, והאנליסט עוסק בפרשנות הנתונים ולא בהכנתם.
- היסטוריית השינויים נשמרת: אפשר לשלוף כיצד נראתה המטריצה לפני אירוע ולהסביר החלטה בדיעבד.
סף ההתראה מוגדר בהתאם למשימה: המערכת כותבת כאשר קשר יוצא מהמסדרון הרגיל, במקום קריאה יומית של טבלאות. המקורות — נתוני בורסה ואגרגטורים כמו CoinGecko, עם בדיקה לחסרים ולחוסר סנכרון בחותמות זמן.
מצבי חישוב קשרים: חלון, משקלים, היסטוריה מלאה
מצבי חישוב קשרים נבדלים בקבוצת המחירים שלפיה מחושב המקדם: לפי N הנרות האחרונים, לפי כל ההיסטוריה עם משקלים דועכים או לפי ההיסטוריה המלאה ללא משקלים. בחירת המצב קובעת אם המטריצה תציג את משטר השוק הנוכחי או תמונה ממוצעת על פני שנים — וכמה מהר המערכת תגיב לפער בזוג.
| אפשרות | מתי מתאימה | מגבלות |
|---|---|---|
| חלון נע | נדרשת תגובה למשטר הנוכחי: היפוכים, פערים, זוגות לטווח קצר | אורך חלון התצפית קובע אינרציה: חלון קצר רועש ונותן קשרים כוזבים, חלון ארוך מפגר |
| שקלול אקספוננציאלי | נדרש פשרה: תצפיות טריות מקבלות משקל גדול יותר, אך ההיסטוריה אינה נזרקת | דורש כיול מקדם הדעיכה, והתוצאה רגישה לערכו |
| היסטוריית מחירים מלאה | הערכת קשר מבני, ארוך טווח, בין נכסים | אינו משקף החלפת משטר: באופק ארוך הקשר נמחק בממוצע ומאבד את האות |
כיצד אנו בוחרים את אורך החלון
אורך חלון התצפית נבחר לפי יציבות, ולא לפי העין: מחשבים את המטריצה בקטעים שונים ובודקים אילו קשרים נשמרים בכל הווריאציות. זוגות יציבים נכנסים לאותות, לא יציבים — לרשימה נפרדת למעקב. כך נחסמים קשרים שמחזיקים רק בקטע מוצלח אחד.
את הנתונים אנו לוקחים מהיסטוריית מחירים מלאה מכמה פלטפורמות ומצליבים עם CoinGecko — פער מחירים בין המקורות כשלעצמו מעוות קורלציה. מצב החישוב נשמר כפרמטר, ולכן מעבר בין חלון לשקלול אינו דורש בנייה מחדש של המערכת.
שלבי ההטמעה: ביקורת מקורות, סכמה, כיול, מסירה
מערכת ניתוח הקורלציות נשענת על נתונים מכמה בורסות, והפער הראשון נוצר עוד לפני החישובים: מרווחי נרות שונים, אזורי זמן, חסרים בשעות הלילה, הבדל בין מחיר העסקה האחרונה למחיר הממוצע. אם לא מיישרים את הסדרות לרשת זמן אחודה, מטריצת הקשרים תציג ארטיפקטים במקום תלויות אמיתיות. לכן העבודה מתבצעת בשלבים מוגדרים היטב.
- ביקורת מקורות מחירים. קובעים את רשימת הבורסות והזוגות, בודקים גישה ל-API, מגבלות בקשות, עומק ושלמות ההיסטוריה, פערי חותמות זמן בין הפלטפורמות.
- תכנון סכמת הנתונים. מאחדים את הסדרות לתדירות אחודה, מתארים כללים למילוי חסרים ולפסילת נרות אנומליים, וקובעים היכן נשמרות הסדרות ההיסטוריות.
- כיול חישוב הקשרים. מגדירים חלון נע, מדד קשר, עמידות לחריגים וסף מובהקות — כך שהתוצאה תגיב להחלפת משטר בשוק, ולא לרעש.
- בדיקה על נתונים היסטוריים. מריצים את החישוב על תקופות עבר, כולל תנועות חדות, ומצליבים עם מימוש בלתי תלוי — הפער צריך להיכנס לטווח השגיאה שהוגדר.
- הרצה תעשייתית וניטור. מגדירים לוח זמנים לחישוב מחדש, בקרה על עיכובי הגעת מחירים והתראות על חסרים, כדי שהערכים לא ייתקעו על נתונים מיושנים.
- מסירת נהלים והדרכת הצוות. מוסרים תיעוד על המקורות, כללי חישוב מחדש, הוראות לטיפול בתקלות ומקיימים סקירה עם האנליסטים שלכם.
ארטיפקטים של המסירה: סכמות צינור עיבוד, נהלים, תיעוד
ערכת המסירה נבנית כך שאפשר להפעיל ולפתח את המערכת בלי ההשתתפות שלנו: מהנדס אצל הלקוח פותח את הסכמה, מאתר את הצומת הדרוש, משנה פרמטר ומחשב מחדש את תצוגת הנתונים בלי לחפש התכתבות איתנו.
לכן הארטיפקטים כוללים לא רק קוד מקור, אלא גם תיאורים של ההחלטות שהתקבלו — מדוע חלון הקורלציה נבחר כך, מה קורה בעת ניתוק בזרימת המחירים והיכן גבולות הסטיות המותרות.
- סכמת צינור החישוב — מקבלת נרות ועסקאות ועד פרסום המטריצה: צמתים, תורים, נקודות שמירת מצב, התנהגות בעת דילוג מרווחים.
- נוהל חישוב מחדש — לוח זמנים להרצות מתוכננות, חלונות ולאגים, כללים להפעלה ידנית מחדש עבור תקופות עבר וסדר הצלבה של התוצאה עם החתך הקודם.
- מדיניות גישה לנתונים — תפקידים ותחומי צפייה: מי עובד עם זרמים גולמיים, מי רק עם תצוגות, למי זמינות הפקות, וכיצד מתנהל יומן פניות.
- תיעוד המערכת — תיאור מודולים ומילון מדדים (חלון, לאג, מקדם, סימן קשר), הוראות פריסה, עדכון וחזרה לגרסה קודמת.
- קונפיגורציות — פרמטרים של מקורות מחירים, רשימות נכסים וזוגות במעקב, ספי הפעלה להתראות על פער.
- מערך בדיקות — בדיקות לנכונות חישוב המקדמים ודוגמאות בקרה שמראות שאחרי שינויים הקשרים מחושבים נכון.
- נוהל אירועים — סיווג תקלות, סדר פעולות, נקודות הסלמה ורשימה של מה שמתוקן בצד הלקוח.
- העברת ידע — סקירות של החלטות ארכיטקטורה, גישות למאגרי קוד ולרישום אימג'ים, אנשי קשר אחראיים לכל מודול.
ערכה כזו סוגרת את סיכון התחזוקה המרכזי: שינויים מוכנסים לפי מסמך, ולא לפי הזיכרון של מפתח מסוים. תארו את המשימה — נחזור עם הערכה ותוכנית, כולל הרכב הארטיפקטים האלה.
מקרה בוחן: חישוב קשרים בזמן אמת במקום טבלאות ידניות
הלקוח — קבוצת אנליטיקה שניהלה פוזיציות בכמה פלטפורמות במקביל ונשענה על מטריצת קורלציות: אילו נכסים נעים יחד ואילו מתפצלים. את המטריצה אספו ידנית — הפקת מחירים מ-CoinGecko ודוחות בורסה, נוסחאות בטבלאות, הצלבה בעין. ביותר מארבעים כלים חישוב מלא מחדש נמשך 3–4 שעות, ועד למועד המוכנות חלק מהקשרים כבר הספיקו להשתנות.
איך זה היה
החלון הנע חושב לפי נוסחה קבועה, הספים הוגדרו כקבועים ותוקנו ביד. שגיאה בתא אחד גררה את כל המסקנה, ופער בין חלון קצר לארוך איש לא ראה עד לישיבה. ניתוק קשר שהוחמץ התגלה רק אחרי שההחלטה כבר התקבלה.
מה השתנה
העברנו את החישוב לשירות שמחזיק זרם מחירים ומחשב מחדש חלונות נעים באופן רציף, ואת התוצאות מאחסן במאגר עם היסטוריה לכל זוג. את הסף הוצאנו להגדרות: כלל עוקב אחרי הזוג ומעלה התראה כאשר הקשר שלו נשבר או משנה סימן. במקום שעות, ההשהיה הצטמצמה לשניות, ופעולות ידניות במחזור לא נותרו.
- השהיית הקשר עם השוק: שעות → שניות;
- חישובים ידניים מחדש: משמרת יומית → אפס;
- כיסוי: 40+ זוגות, שתי סקלות חלון, היסטוריה לכולם;
- התראות: לפי גילוי בדיעבד → אוטומטית בעת ניתוק קשר.
בחודש הראשון התברר שכשליש מהזוגות ה'יציבים' על חלון ארוך התפרקו על חלון קצר — פערים כאלה פשוט לא נכנסו קודם לטבלה. האנליסט הפסיק להיות מפעיל הפקות והחל לעסוק בפרשנות אותות, ולא במילוי תאים. כל התראה נבדקת מול נתונים היסטוריים: רואים מתי הקשר באמת השתנה ומתי זה היה רעש.
מה לעשות אם הקשרים בין נכסים נשברים בהחלפת משטר?
קורלציה בין נכסים אינה גודל קבוע, אלא פרמטר של המשטר הנוכחי. כל עוד השוק במגמה רגועה, הקשר בין זוגות מחזיק שבועות ועליו בונים מבני גידור וארביטראז'.
בהחלפת משטר — אחרי תנועה חדה, מעבר נזילות או תמחור סיכון מחדש — סימן התלות מתהפך בתוך שעות, בעוד שחלון ממוצע עוד מציג יום שלם את הערך הקודם.
לכן המערכת מחשבת קשר לא כמספר אחד, אלא כמערכת חלונות באורכים שונים — משעתיים ועד שבועיים — ועוקבת אחרי הפער ביניהם. פער חד בין חלון קצר לארוך יחד עם שינוי במשטר התנודתיות משמש סימן מוקדם לניתוק: הזוג לא נזרק מיד, אלא עובר להסגר עם משקל מופחת, עד שהקשר יאושר מחדש על נתונים טריים.
השכבה השנייה — יציבות התלויות. האומדנים מחושבים בשיטות דירוג עם חיתוך חריגים, וסף המובהקות מותאם לריבוי השוואות: בלי תיקון, באלפי זוגות שיעור המקריים נותן עשרות הפעלות שווא ביום. קשר מוכר כעובד רק אם הסימן וסדר הגודל נשמרים בכמה חלונות, באופקים שונים ובבדיקה מחוץ למדגם.
ההגנה מפני אותות שווא חיה ברמת הביצוע, ולא רק ברמת החישוב. משקל האות פרופורציונלי ליציבות הנוכחית של הזוג, בעת ניתוק קשרים גודל הפוזיציה מצטמצם אוטומטית, והלוגיקה מועברת לכלים פחות קשורים.
כל החלפת משטר נרשמת בתגית נפרדת יחד עם מצב התיק — לפי ההיסטוריה הזו רואים אילו כללים פעלו באופן כוזב, ומדייקים אותם עד להיפוך הבא.
ספקות טכניים נפוצים: חלונות, חסרי נתונים, כלים חדשים
ספקות טכניים לפני התחלה כמעט תמיד נוגעים לנתונים: האם ההיסטוריה תספיק, מה לעשות עם חורים בסדרות, איך לחשב קשר כשהרכב הכלים משתנה כל שבוע. נענה על מה שמהנדסים מבקשים להבהיר לרוב בשלב ההערכה — בדרך כלל זה מסיר את רוב השאלות עוד לפני החישוב.
איך לחשב קורלציה אם בסדרה יש חסרים?
את החסרים מחלקים לשני סוגים: תקלת מקור משחזרים מספק שני ומסמנים, ואילו מרווחים ללא מסחר משאירים ריקים — מילוי אחורה יוצר סנכרון כוזב. החלון מחושב רק לפי נקודות שבהן יש נתונים לשני הכלים.
איך לבחור אורך חלון?
חלון אינו קבוע אחד, אלא מערכת: חלון קצר לוכד תנועות משותפות מהירות, חלון ארוך מציג קשר יציב. מחשבים כמה אורכים במקביל כדי לראות היכן הקשר מחזיק והיכן מתפרק לרעש. את האורך לוקחים מאופק החזקת הפוזיציה.
מה לעשות כשכלי חדש נרשם למסחר?
קודם הסגר: הכלי צובר היסטוריה ורק אחר כך נכנס למטריצת הקשרים. כך רישום טרי לא מושך קשרים כוזבים ולא מזיז את המשקלים של האחרים. את העלייה במספר הכלים לוקחים בחשבון מראש — מספר הזוגות גדל מהר יותר, ולכן מרחיבים את החישוב לפי זוגות.
השהיות במחירים שוברות את החישוב?
מקורות מוסרים נתונים בהשהיה שונה, ואם ליישר אותם לפי זמן קבלה ולא לפי זמן האירוע, הקשר מוסט. מאחדים את הסדרות לפי חותמת האירוע, ופער מעל הסף מסומן ומוחרג מהחלון. אם הזרם מפגר, הכלי נושר זמנית מהחישוב.
נדון במשימה: אילו נתונים יש ומה מחשבים ראשון
כדי שההערכה ותוכנית העבודה יישענו על עובדות ולא על הנחות, אנחנו צריכים מכם סט קצר של נתוני מקור. לפיו, במעבר אחד, אנחנו קובעים את היקף החלק החישובי, הרכב האינטגרציות וזמני ההטמעה בפועל — בלי שלב של 'נבהיר אחר כך'.
- רשימת בורסות, מקורות מחירים וזוגות מסחר שלפיהם מחשבים קורלציות: פלטפורמות ריכוזיות, אגרגטורים, זרמים עצמאיים.
- עומק ההיסטוריה וצעד הנרות — מדקות ועד ימים, עם ציון האם נדרשת חותמת זמן סנכרונית לכל הכלים.
- הרכב הכלים: רק זוגות נזילים, סטייבלקוינים, מדדים נגזרים — נפחים, תנודתיות, מרווח.
- חלונות חישוב ושיטת הנרמול: חלונות נעים, תשואות לוגריתמיות או מחירים, כללים לטיפול בחסרים ובקרעים בנתונים.
- תרחישי שימוש: סינון שוק, איתור פערים בין זוגות, התראות ביציאת קורלציה מהמסדרון, ייצוא לאנליטיקה שלכם.
- דרישות לרעננות התוצאה: כמה כלים ובאיזו תדירות מחשבים מחדש, מי ומאיפה צופה בדוח.
- גישות ותשתית: היכן פורסים — בסביבה שלכם או במשאבים ייעודיים, אילו מגבלות רשת ואחסון קיימות.
בתמורה אתם מקבלים הערכה ותוכנית עבודה: שלבים, הרכב המסירה, נקודות קבלה וזמני הטמעה עם מרווח לאינטגרציה עם המקורות. תארו את המשימה — נחזור עם תוכנית ושאלות הבהרה לגבי הנתונים.







