מערכת AI לאופטימיזציה של תיק: גישות ML ו-RL

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

תחומי פיתוח AI

שאלות נפוצות

העבודות האחרונות

  • פיתוח אפליקציית ווב עבור FEEDME
    פיתוח אפליקציית ווב עבור FEEDME
    1359
  • פיתוח חנות מקוונת לחברת FURNORO
    פיתוח חנות מקוונת לחברת FURNORO
    1330
  • עיצוב לוגו לחברת B2B Advance
    עיצוב לוגו לחברת B2B Advance
    776
  • פיתוח אפליקציית ווב עבור Enviok
    פיתוח אפליקציית ווב עבור Enviok
    1077
  • פיתוח לוגו חברת AIDER
    פיתוח לוגו חברת AIDER
    1022
  • פיתוח CRM עבור Chasseurs
    פיתוח CRM עבור Chasseurs
    1113

פיתוח מערכת AI לאופטימיזציה של תיק השקעות: איפה ההיגיון נשבר

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

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

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

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

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

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

השפעות ההטמעה: מהירות תגובה ויציבות התיק

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

מהירות תגובה לאות

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

יציבות התיק

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

צמצום תיקונים ידניים

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

סוגי כשל שטופלו

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

גישות לבניית מודל: השוואת מצבים

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

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

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

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

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

  1. ביקורת נתונים. בודקים עומק ושלמות היסטוריה, חסרים ופערים, נכונות מחירי סגירה, אירועים תאגידיים, מנפיקים ששרדו ונעלמו, התכנסות של כמה מקורות. בפלט — דוח על איכות הסדרות ורשימת מכשירים שעבורם המודל בכלל רשאי לקבל החלטות.

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

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

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

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

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

מה מוסרים לידיים: קוד, סכמות, נהלים

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

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

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

מקרה בוחן: איך השתנה ניהול הרזרבות לאחר ההטמעה

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

מדד לפני ההטמעה אחרי
שיעור ההחלטות שמתקבלות ידנית כמעט כולן כחמישית — אישור שינויים גדולים
זמן תגובה לשינוי בתנאים יום עבודה או יותר דקות, טריגר אוטומטי
עומק הירידה בקטע לא חיובי 16–18% 7–9%
תיקונים לא מתוכננים בהרכב 3–4 בחודש 1 ברבעון
איזון מחדש לפי לוח שנה, פעם ברבעון לפי יציאה ממסדרון הסיכון

מה בדיוק שינו

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

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

במה למידת חיזוק שונה מאופטימיזציה קלאסית

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

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

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

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

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

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

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

ספקות טכניים: נתונים, יציבות, בקרה

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

נתונים מעטים והם לא אחידים — מה עושים?

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

איך אתם שולטים בהתאמת יתר?

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

מי אחראי להחלטות המערכת?

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

איך משלבים את זה במעגל עובד?

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

נדון במשימה: מה להכין לפגישה הראשונה

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

  • המעגל הנוכחי של החלטות: איך התיק נוצר כיום — לפי כלל, לפי לוח שנה או לפי סטייה מחלקי יעד, מי מאשר שינויים, היכן נשמרת ההיסטוריה של גרסאות התיק.
  • דרישות לנתונים: מקורות ציטוטים ועסקאות, עומק היסטוריה, מטבע ואזור זמן חשבונאי, פעולות תאגידיות (דיבידנדים, פיצולים), איך מטפלים בחסרים ובחריגים. פורמט הייצוא — CSV או Parquet, חד-פעמי או לפי לוח זמנים.
  • מגבלות סיכון: מגבלות על מכשיר ועל סקטור, ירידה מותרת, רשימת נכסים אסורים, דרישות נוהל או רגולטור שאסור להפר בשום תרחיש.
  • גישות וסביבה: גישה לנתונים לקריאה בלבד, מעגל בדיקה של ברוקר שאליו המערכת מחזירה תוצאה — קובץ, טבלה או קריאה ממערכת החשבונאות שלכם.
  • קריטריוני קבלה: במה מודדים תוצאה — תשואה ביחס לתיק ייחוס, ירידה מקסימלית, שיעור התערבויות ידניות בהמלצות.
  • הרכב הצוות והתפקידים: מי אחראי לנתונים, מי לבקרת סיכון, מי מקבל את ההחלטה הסופית בעסקה.

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