יום ראשון, 15 באפריל 2012

אופטימיות לגבי כלי האופטימיזציה


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

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

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

האופטימיזציה בסביבת MATLAB מתבצעת באמצעות שני כלים:

1) Optimization Toolbox – אוסף של אלגוריתמים איטרטיבים, נפוצים בתעשיה, המוצאים פתרונות אופטימליים באמצעות חישוב נגזרות (Steepest Descent). בין האלגוריתמים:
  •  fmincon- אלגוריתם למציאת מינימום לבעיות בעלות פונקצית מטרה לא לינארית, תחת אילוצים שונים (לינאריים ולא לינאריים).
  •  fminmax- אלגוריתם למציאת מינימום לבעיות MinMax, תחת אילוצים שונים.
  •  Linear Programming- לפתרון בעיות בעלות פונקצית מטרה לינארית, תחת אילוצים שונים.
  •  Quadratic Programming- לפתרון בעיות קוואדרטיות, תחת אילוצים שונים.
 האוסף העשיר של האלגוריתמים ב-Optimization Toolbox מאפשר לפתור מגוון רחב של בעיות, וזמני הריצה שלהם עד ההתכנסות לפתרון בהחלט סבירים. החסרון המרכזי של הכלי הוא שתמיד קיים סיכוי שהפתרון שמצאנו לבעיה הוא מינימום מקומי ולא מינימום גלובלי.
 2) Global Optimization Toolbox – אוסף של שיטות היוריסטיות למציאת פתרונות אופטימליים גלובלים (הכלי לא מבוסס על חישובי נגזרות). בין האלגוריתמים:
  •  Simulated Annealing- אלגוריתם הממדל את הפיסיקה של תהליך קירור של מתכת. האלגוריתם עובד טוב במיוחד כאשר מרחב חיפוש הפתרון הוא גדול והבעיה היא ללא אילוצים.
  •  Genetic Algorithm- אלגוריתם איטרטיבי זה ממדל תהליך אבולוציוני למציאת פתרונות אופטימליים, והינו נפוץ לביצוע אופטימיזציה גלובלית תחת אילוצים שונים. האלגוריתם מתאים במיוחד לפתרון בעיות אופטימיזציה קומבינטוריות (דוגמת בעית הסוכן הנוסע) בתוך מרחב חיפוש גדול .
  •  Direct Search- אלגוריתם איטרטיבי אשר בכל איטרציה מחפש בסביבה הקרובה של נקודה כלשהי נקודות בהן ערך הפונקציה נמוך יותר, ואם מוצא אחת כזו - הוא בוחר בה כנקודת התחלה לאיטרציה הבאה. האלגוריתם מתאים במיוחד לבעיות בהן פונקצית המטרה איננה גזירה או אינה רציפה. 
היתרון של ה-Global Optimization Toolbox הוא באלגוריתמים המאפשרים למצוא פתרון גלובלי בתוך אוסף גדול של מינימות מקומיות ומאפשרים לפתור בעיות אופטימזיציה קומבינטוריות.

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

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

יום ראשון, 1 באפריל 2012

MATLAB לביצוע חישובים פיננסים



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

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

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

• לנתח כמויות עצומות של מידע היסטורי (למשל, של שערי מניות בעבר)
• לפתח מודלים פיננסיים מורכבים וליצור באמצעותם חיזויים (למשל, של שערי מניות בעתיד)
• לתמחר מוצרים פיננסים (מניות, אופציות וכו')
• לנתח ולנהל סיכונים
• לפתח ולבדוק אסטרטגיות מסחר
• לבנות תיקי השקעות אופטימליים
• לשלב אלגוריתמי לימוד מכונה בתהליכים פיננסים
• לשלב אפליקציות MATLAB לתוך סביבות עבודה אחרות (מערכות בסניפי הבנקים, מחשבונים פיננסים באינטרנט וכו')

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

מימין - עקום תשואה של אג"ח. משמאל - עקום יעילות עם עשרה תיקי אג"ח שונים עליו
                                             לחצו להגדלה

להלן רשימת הכלים היעודיים של MathWorks לעולם הפיננסי:

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

Fixed-Income Toolbox - מספק פונקציות למידול ואנליזה של מוצרים בעלי ריבית מובנית. הכלי כולל כלים להתאמת עקומי ריבית, ניתן באמצעותו לחשב מחיר, ריביות ורגישויות עבור interest rate swaps, וניתן לתמחר בעזרתו גם נגזרים נוספים, למשל credit default swaps, אג"ח להמרה וחוזים עתידיים על אג"ח. הכלי מאפשר גם לנתח מוצרים פיננסים כמו אג"ח חברות, אג"ח מדינה וניירות ערך מגובי משכנתאות.

Financial Derivatives Toolbox - מרחיב את היכולות של ה-Financial Toolbox ביכולות לביצוע ניתוח ומידול של נגזרים על מניות ומדדים ומידול של נגזרים על אג"ח. ניתן להשתמש בכלי לחישובי מחיר ורגישויות של נגזרים, להצגת התפתחות מחיר מוצרים כתלות בזמן ולביצוע ניתוחי גידור באמצעות מודלים שונים.

Econometrics Toolbox - מאפשר למדל ולנתח מערכות פיננסיות וכלכליות באמצעות שיטות סטטיסטיות. הכלי עוזר לבחור מודל אקונומטרי ולכייל אותו באמצעות מידע שוק לצורך ביצוע חיזוי עתידי. עם הכלי ניתן לנתח סדרות זמן לפי מודלי ARMAX/GARCH ולכייל מודלים מסוג Vector Autoregressive. הכלי מספק שיטות מונטה קרלו לסימולוציה ופתרון בעיות דיפרנציאליות סטוכסטיות המתארות התפתחות בזמן של משתנים אקונומטריים דוגמת ריבית ומחירי נכסים.

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

האם הכרתם את הכלים של MathWorks לעולם הפיננסי? האם תעדיפו שכספי הפנסיה שלכם ינוהלו על ידי גוף שמשתמש ב-MATLAB? האם אי פעם השתמשתם ב-MATLAB לצורך ביצוע חישובים פיננסים?