2015-05-31 52 views
-1

我是Matlab的初學者用戶,你能幫我解答一下如何把它寫成代碼。 我的輸入是:編寫一個循環或函數(簡單)MATLAB

port_returns - 196x1的列向量

VAR - 標

variance_portfolio - 標

port_returns=returns*weights'; 
    VaR=1.65*sqrt(variance_portfolio); 

我想寫一個代碼,這將需要port_returns值,小於VaR的值並取其平均值。

有人可以幫我嗎?

預先感謝您!

+2

你的僞代碼沒有意義。請修改您的代碼和問題以使其更清晰。 – user1543042

+0

謝謝,我編輯了我的問題 – 9tobed

回答

1

這應該做的伎倆:

sum(port_returns(port_returns<VaR))/length(port_returns(port_returns<VaR))

其中

sum(port_returns(port_returns<VaR))

發現在port_returns較小的所有元素比VaR和總結起來,

,然後除以數小於VaR的元素:

port_returns(port_returns<VaR)

+1

非常感謝! :) – 9tobed

+0

不客氣! – mmoment

1

假設port_returns是一個數組(矢量),你可以得到的值小於VaR通過以下:less_than_VaR = find(port_returns < VaR);,然後取它們的平均值它使用非常簡單avg = mean(less_than_VaR);

參考:

  1. Find Array Elements That Meet a Condition
  2. Average or mean value of array
+0

我自己也嘗試過,但是它返回了值的索引,而不是值本身......但是,現在我有一個解決方案,感謝您的時間和評論。 – 9tobed

+0

是的,我編輯了答案,因爲我忘了使用'find'。無論如何,值得了解這些功能,不用客氣。 –