2017-05-27 12 views
0

私はこのスクリプトを作成しましたが、問題のあるMatrixは見つかりませんでした。 これは、コール標準オプションの返信のために私のスクリプトです:あなたは、ループで計算されます/事前に割り当て結果を、初期化する必要がありmatlabサブミットされた代入ディメンションの不一致。

N=50; 
T=90/252; 
dt=T/N; 
K=102; 
S0=100; 
B0=1; 
r=0.02; 

sigma=0.25; 



for i=1:N 
    ttomat(i)=(N-i+1)*dt; %+1 serve per aggiustare il tempo 
    d1(i)=(log(S(i,:)./K)+(r+0.5*sigma^2)*ttomat(i))./(sigma*sqrt(ttomat(i))); 
    d2(i)=d1(i)-sigma*sqrt(ttomat(i)); 
    Call(i,:)=S(i,:).*normcdf(d1(i))-K*exp(-r*ttomat(i)*normcdf(d2(i))); 
    alpha(i,:)=normcdf(d1(i)); %delta della Call 
    beta(i,:)=(Call(i,:)-alpha(i,:).*S(i,:))./(B0*exp(r*(i-1)*dt)); 

end 
+0

Sは、少なくとも、それは寸法... –

+0

[ハウツー-尋ねる]これをお読みくださいを指定です....定義されていません(http://stackoverflow.com/help/how-to-ask)ガイドラインに沿って、プログラミング問題を記述するコードやエラーメッセージなどの追加情報を使用して質問を洗練してください。 – thewaywewere

答えて

0

。あなたのコードでは、結果をあらかじめ割り当てていません。事前配分は、結果を迅速に達成するのに役立ちます。必要な変数を事前に割り当てることが常にベストプラクティスです。以下のコードを確認してください。それはあなたのために働いていますか?

N=50; 
T=90/252; 
dt=T/N; 
K=102; 
S0=100; 
B0=1; 
r=0.02; 

sigma=0.25; 

S = rand(N,1) ; 

ttomat = zeros(1,N) ; 
d1 = zeros(1,N) ; 
d2 = zeros(1,N) ; 
Call = zeros(1,N) ; 
alpha = zeros(1,N) ; 
beta = zeros(1,N) ; 
for i=1:N 
    ttomat(i)=(N-i+1)*dt; %+1 serve per aggiustare il tempo 
    d1(i)=(log(S(i,:)./K)+(r+0.5*sigma^2)*ttomat(i))./(sigma*sqrt(ttomat(i))); 
    d2(i)=d1(i)-sigma*sqrt(ttomat(i)); 
    Call(i,:)=S(i,:).*normcdf(d1(i))-K*exp(-r*ttomat(i)*normcdf(d2(i))); 
    alpha(i,:)=normcdf(d1(i)); %delta della Call 
    beta(i,:)=(Call(i,:)-alpha(i,:).*S(i,:))./(B0*exp(r*(i-1)*dt)); 

end 
+0

ありがとう、今、スクリプトが動作します! –

+0

私はSをサイズN * 1のランダム行列にしていることに注意してください。ケースデータに変更します。 –

関連する問題