熱門文章

2013年4月9日 星期二

演算法與投資策略


投資致富的步驟,要先找投資標的,然後擬定策略,再來是機械式的操作。在操作的過程,不斷的修正策略,直到策略是有效的為止。

巴菲特: 人生就像雪球。最重要的東西,是找濕漉漉的雪,以及找座斜坡夠長的山。」
濕漉漉的雪代表的是利率,斜坡夠長的山指的是時間。困難的是投資標的,因此被動式指數型基金就是投資人最佳選擇。

最近我試著用資料結構(演算法)的角度,看待投資策略這件事。
資料結構:
排序(Sorting)是指將一群資料,按特定規則調換位置,使資料具有某種次序關係(遞增或遞減)
時間複雜度
n  當資料量相當大時,排序演算法所花費的時間就顯得相當重要。
n  排序演算法的時間複雜度可分為最好情況(Best Case)、最壞情況(Worst Case)及平均情況(Average Case)。最好情況就是資料已完成排序,例如原本資料已經完成遞增排序了,如果再進行一次遞增排序所使用的時間複雜度就是最好情況。
n  最壞情況是指每一鍵值均須重新排列,簡單的例子如原本為遞增排序重新排序成為遞減,就是最壞情況
空間複雜度
n  空間複雜度就是指演算法在執行過程所需付出的額外記憶體空間。
n  例如所挑選的排序法必須藉助遞迴的方式來進行,那麼遞迴過程中會使用到的堆疊就是這個排序法必須付出的額外空間。
n  另外,任何排序法都有資料對調的動作,資料對調就會暫時用到一個額外的空間,它也是排序法中空間複雜度要考慮的問題。排序法所使用到的額外空間愈少,它的空間複雜度就愈佳。例如氣泡法在排序過程中僅會用到一個額外的空間,在所有的排序演算法中,這樣的空間複雜度就算是最好的。
排序法舉例及分析
選擇排序法是從所有待排序的資料中找出最小(或最大)鍵值,將該筆記錄與第一筆記錄對調後,再從第二筆以後的資料中重覆做一樣的動作,直到完成排序為止。
n  無論是最壞清況、最佳情況及平均情況都需要找到最大值(或最小值),因此其比較次數為:(n-1)+(n-2)+(n-3)+…+3+2+1=n(n-1)/2 次;時間複雜度為O(n2)
n  由於選擇排序是以最大或最小值直接與最前方未排序的鍵值交換,資料排列順序很有可能被改變,故不是穩定排序法。
n  只需一個額外的空間,所以空間複雜度為最佳。
n  此排序法適用於資料量小或有部份資料已經過排序。
綜合上述,選擇排序法是一種資料排序的方法,空間複雜度為O(1),時間複雜度為O(n2),此排序法適用於資料量小或有部份資料已經過排序。

我們可以將欲排序的資料,視為欲投資的標的,然後想一個演算法,也就是投資策略去得到投資報酬率。
然後去分析投資策略的最好情況(Best Case)、最壞情況(Worst Case)及平均情況(Average Case)。因此我們必需歸納各種投資略策的最好情況(Best Case)、最壞情況(Worst Case)及平均情況(Average Case)

趨勢投資法(順著股價的趨勢進行股票買賣的操作方法) 最好情況(Best Case),大概就是每次的交易都買在起漲點,然後賣在始跌點,然後始跌點減起漲點是個很大的正數。最壞情況(Worst Case),大概就是每次交易都遇到盤整盤,因為始跌點減起漲點是個很小的正數或者負數(但不會是很大的負數)。那平均情況(Average Case)呢?如果交易的次數越多,時間越久,理論上,投資報酬率應接近平均情況(Average Case)

價值型投資法比較無明確的定義,大致就是用五毛換一塊的方式投資,簡單的舉例就像市場上有人以一萬塊錢賣一台二手車,價值型投資經專業判斷,認為那台二手車應有十萬塊的價值,所以出手買進,並等待有人願出十萬塊或更高價買下。

趨勢投資法和價值型投資法哪一種方法比較好呢?很多人很喜歡去比較這兩種投資策略的優劣。但我想,這兩種策略都有最好情況(Best Case)、最壞情況(Worst Case)及平均情況(Average Case),只是投資人遇到的是哪一種情況比較多罷了。

沒有留言:

張貼留言