⬅ חזרה לאינדקס

סקריפט חביב לאיזון תיק (לחובבי Python)

🕒 פורסם בתאריך: 19/01/2016 00:08
אהלן,



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



הקוד, בגדול, משתמש בנתונים של "כמה אחוזים מאיזו מניה" (GLOBAL: 0.4 מציין 40% לאינדקס GLOBAL). לאחר מכן הוא מבקש להזין את הערך הנוכחי של כל מרכיב בתיק ואת כמות ההפקדה (יכול להיות 0). התוצאה היא הכמות שצריך להוסיף / להחסיר על מנת שהתיק יהיה מאוזן.



מאמין שלרוב האנשים פה זה לא ידבר, אבל אולי זה יהיה שימושי למישהו :)



דוגמא לפלט:





קוד:







-------------------------------------------------------

NAME NEW AMOUNT DIFFERENCE

-------------------------------------------------------

GLOBAL 33276.8 +5.8

RUSSEL 2000 20798.0 +1268.0

MSCI EMERGING 8319.2 +3.2

MISC 4159.6 +2036.6

EURO 16638.4 +686.4

-------------------------------------------------------









ספוילר: הקוד (למעוניינים - Python 2.6)

















קוד:







import os



CURRENT_DIVISION = {

'GLOBAL': 0.4,

'EURO': 0.2,

'RUSSEL 2000': 0.25,

'MSCI EMERGING': 0.1,

'MISC': 0.05,

}



def signed(f):

return ("+" if f > 0 else "") + str(f)



def main():

values = dict(CURRENT_DIVISION)

for name in values.keys():

print "Current in %s:" % name,

values[name] = float(raw_input())

print "Deposit:",

deposit = float(raw_input())



total = sum(values.values()) + deposit



print "-" * 55

print "%-20s%-20s%15s" % ("NAME", "NEW AMOUNT", "DIFFERENCE")

print "-" * 55

for name, value in values.items():

new_amount = total * CURRENT_DIVISION[name]

print "%-20s%-20s%15s" % (name, new_amount, signed(new_amount - value))

print "-" * 55



os.system('pause')



main()
🕒 פורסם בתאריך: 19/01/2016 00:14
תודה, אבל בתור מתכנת למדתי עם השנים שתמיד עדיף להמנע מלכתוב קוד אם אפשר.



או במילים אחרות - זה הרבה יותר קל לעשות מעקב ואיזון עם Google Spreadsheet (או אפילו אקסל) מאשר ע"י כתיבת קוד.
🕒 פורסם בתאריך: 19/01/2016 00:18
אולי אני פשוט מאסכולה הזויה שחושבת שעדיף להימנע משימוש באקסל אם אפשר :)
🕒 פורסם בתאריך: 19/01/2016 07:18
אז נסה לעבוד עם גוגל spreadsheet.



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



אתה מכיר את הפתגם עם הפטיש והמסמר נכון?
🕒 פורסם בתאריך: 19/01/2016 07:28
אני משתגע כשאני רואה סטודנטים שמכינים דוחות באקסל ופרופסורים שמעבדים תמונות בPower Point או בצייר.



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



פסק הדין:



מעקב ואיזון בזמן אמת בגליון אלקטרוני.



סימולציות מס ואיזון מורכבים בשפה גבוהה.



אלגוריתמים למסחר יומי (לא ממליץ) בשפה נמוכה.
🕒 פורסם בתאריך: 20/01/2016 19:41
תוכלו לשתף את אקסל האיזון שלכם? תודה
🕒 פורסם בתאריך: 20/01/2016 22:33
לי יש עמודה של המצוי, עמודה של הרצוי ועמודה של ההפרש. זהו.
🕒 פורסם בתאריך: 20/01/2016 22:48
אפשר גם לשכלל את זה ולחלק את ההפרש במחיר הנוכחי ככה שהוא אומר כמה יחידות לקנות\למכור.



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



אשתף מתישהו, אבל זה מצריך בלמו"ס רציני ולא נראה לי רלוונטי ל-99% מהאנשים.
🕒 פורסם בתאריך: 20/01/2016 23:24
מעניין. האמת שאף פעם לא בחנתי לעומק.



מאקסל אני מתרחק כמו מאש (כמעט איבדתי שעות רבות של עבודה בגיליון דיי טריוויאלי לאחרונה), אבל אעיף מבט ב-spreadsheet. תודה!
🕒 פורסם בתאריך: 20/01/2016 23:59
כאן הבעיה. אם מדובר בשעות רבות - אקסל איננו הכלי המתאים (וכנראה שגם לא האלטרנטיבות שלו).



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



אם תמצא שרבע שעה לא הספיקה, תעבור לתוכנה אחרת במחיר נמוך.
🕒 פורסם בתאריך: 21/01/2016 09:56
חשבתי שכל העניין הוא החלק שאתה מזין כמה אתה עומד להפקיד והוא מנחה אותך איך לחלק את ההפקדה.



או שהאסטרטגיה היא פשוט לקנות את הנ"ע שההפרש בין הרצוי למצוי היא הכי גדולה, ואז אם נשאר עודף אז את נ"ע ההבא בתור, וכך הלאה, כדי לחסוך עמלות?
🕒 פורסם בתאריך: 21/01/2016 10:22
זו החלטה מאוד אישית ודי שרירותית ולכן אין כאן "נכון/לא נכון".



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



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



להלן ציטוט מהודעה פרטית ששלחתי לאחת מקוראות הפורום ממש לא מזמן בהקשר של איזון באמצעות אקסל:
🕒 פורסם בתאריך: 21/01/2016 15:45
כל זה נכנס בתא של הרצוי.
🕒 פורסם בתאריך: 21/01/2016 19:12
אם האסטרטגיה היא פשוט להפקיד עד איזון לכל הנ"ע אז זה נכון, אבל היה אפשר לעשות משהו קצת יותר מתוחכם כדי לחסוך עמלות.



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



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



* אני מניח שכמו ש @daat99 כתב, ההפקדות מתבצעות בתדירות מספיק גבוהה ובנפח מספיק גבוהה כדי שזה לא יצור מצב שבו יש הרבה זמן עם אלוקציה שונה מדי מהתכנון המקורי
🕒 פורסם בתאריך: 21/01/2016 19:44
אם התהליך נהיה מורכב, אפשר להתחיל לכתוב סקריפטים באיזו שפה שרוצים.



אני טענתי שאפשר להחליף את ~30 שורות הקוד שבפתח השרשור בשלוש עמודות בגליון, ושלא צריך להתרחק מאקסל, לא כמו מאש ולא כמו מגחלים קרות.
🕒 פורסם בתאריך: 21/01/2016 22:22
אני תוהה האם השיטה שהצעתי היא משהו מקובל שאנשים עושים, או שהמצאתי את הגלגל (וסביר להניח שלא המצאתי כלום אז אם לא מקובל כנראה יש סיבה שלא עושים את זה). מישהו פה עושה משהו דומה?
🕒 פורסם בתאריך: 21/01/2016 22:35
@liranviper ברוב המקרים שאני מוסיף כספים לתיק, אני קונה רק נייר אחד, זה שהכי רחוק מלמטה מהאיזון, בהתאם למה שהגליון איתו אני מנהל את התיק אומר לי. זה חוסך בעמלות מסחר, וגם ככה ככל שהתיק גדל הסטייה שתיגרם ע״י פעימת הפקדה בודדת ביחס לגודל התיק הופכת לחשובה פחות ופחות עם הזמן (די מהר).
🕒 פורסם בתאריך: 21/01/2016 23:32
זה מה שאני חשבתי לעשות בתקופה שחשבתי על השקעה בתיק מדדים.
🕒 פורסם בתאריך: 21/01/2016 23:44
זה מאד תלוי בתיק ובצורת הניהול שלו. לי יש חשבון לא ממוסה ללא עלויות מסחר וחשבון ממוסה עם עמלות. כך שאני תמיד יכול למכור ולאזן.