2012年1月6日 星期五

Excel-以陣列方式計算連乘積

有個有趣的題目是:台灣證劵交易市場規定股票成交價格只能在前一個交易日的收盤價的漲、跌7%範圍內變動。如果某支股票前一個交易日的收盤價是每股100 元,假設該股票次日起連續五個交易日以跌停板收盤(即每日跌7%),接著連續五個交易日以漲停板收盤(即每日漲7%)。請問經過這十個交易日後,該支股票每股的收盤價是大於、等於或小於100 元?

或許有人以直覺來看,答案應是:等於100元。如果你以試算表來驗算(參考下圖),以四種不同的漲跌順序,但都是漲7%有五次,而跌7%也有五次,結果都一樣是:「小於100元」。

如果你想以一個公式即求得儲存格C11的結果,公式為何?

{=B1*PRODUCT((MOD(ROW(1:10),2)*2-1)*ROW(1:10)/ROW(1:10)*7%+1)}

這是陣列公式,輸入完成請按 Ctrl+Shift+Enter 鍵。

在此以 PRODUCT 來執行相乘的動作,接著以產生7%, –7%, 7%, –7%, … 的數值陣列。

MOD(ROW(1:10),2)*2-1:產生+1, –1, +1, –1, … 的數值陣列。

ROW(1:10)/ROW(1:10)*7%:產生7%, 7%, 7%, … 的數值陣列。

MOD(ROW(1:10),2)*2-1)*ROW(1:10)/ROW(1:10)*7%+1:產生1.07, –1.07, 1.07, –1.07, … 的數值陣列。

所以,以不同的交易日來看:

經過20個交易日:{=B1*PRODUCT((MOD(ROW(1:20),2)*2-1)*ROW(1:20)/ROW(1:20)*7%+1)} = 95.2

經過30個交易日:{=B1*PRODUCT((MOD(ROW(1:30),2)*2-1)*ROW(1:30)/ROW(1:30)*7%+1)} = 92.9

可見是隨著交易天數增加而數值愈來愈小。

沒有留言:

張貼留言

檢視其他文章

好康東東