Dovrei predisporre un programma di finanza che utilizza i modelli di screening. Spiego brevemente: dopo essermi creato una matrice 3d (Giappones(1297*1*40)), ora un modello di screening ha la funzione di selezionare i titoli che secondo alcune variabili di selezione risulteranno migliori.
Cosa dovrei fare? Siccome si tratta di uno screening sequenziale allora devo prendere la prima variabile di selezione che si trova nel mio caso nella faccia 38 della matrice Giappones, e quindi prendere il primo 40 percento di questi titoli e scartare il restante 60. Trattandosi della variabile capitalizzazione e dovendo ordinare e tenere le imprese più grandi il sort sarà in ordine descent.
Fatto ciò devo ora lavorare solo sui titoli che mi sono rimasti dalla selezione e fare un’ ulteriore selezione con la variabile che si trova nella faccia 1 della matrice Giappones e tenere il primo 30 percento dei titoli (rimasti dalla precedente selezione). In questo caso però interessandomi dei titoli con il P/E più basso non dovrò imporre il comando descend ma lasciarlo così in quanto sort mi dà già di default ascend. Il problema principale è che per molti titoli non avendo il risultato ho fatto si che laddove c’era NaN il programma inserisse 0 come chiedeva la consegna ma se io li ordino poi risulteranno da selezionare solo i titoli che in realtà risultano non avere dati e che io ho sostituito con zero. (per quello quei titoli sarebbero da scartare e come vedrai ho inserito un if).
Il terzo e quarto criterio di selezione segue gli altri due quindi una volta capiti i primi due non sarà difficile proseguere.
Riporto il codice che ho tentato di sviluppare ma che non ha portato a risultati.
- Codice: Seleziona tutto
nm=size(Giappones,2);
ns=size(Giappones,1);
if Giappones(:,:,38)~=0
[smkt_cap ind_mkt_cap]=sort(Giappones(:,:,38,'descend'));
end
if Giappones(:,:,1)~=0
for j=1:518 %quaranta percento di 1297
ind_mkt_cap=ind_mkt_cap(j,:);
[spe ind_pe]=sort(Giappones(j,:,1));
if Giappones(:,:,12)~=0
for r=1:156 %trenta percento di 518
ind_pe=ind_pe(r,:);
[snet_debt ind_net_debt]=sort(Giappones(r,:,12));
if Giappones(:,:,31)~=0
[sdvd_payout_ratio ind_dvd_payout_ratio]=sort(Giappones(r,:,31));
end
end
end
end
end
Ringrazio moltissimo anticipatamente.