Sunteți pe pagina 1din 23

4. Optimizarea portofoliilor de aciuni.

Abordri clasice i de natur


genetic


4.1. Randamentul / riscul unui portofoliu. Definirea problemelor de optimizare

n cele ce urmeaz este prezentat calculul randamentului ateptat, respectiv al
riscului asociat unui portofoliu de aciuni. (Bartholomeu-Biggs, 2005)
Considerm disponibil istoricul randamentelor procentuale pe m perioade de timp
pentru fiecare aciune dintr-un grup de n aciuni i notm cu

, randamentul aciunii i n perioada j;


, fraciunea investit n aciunea i, astfel nct

, variana aciunii i;

, covariana dintre aciunile i i k.


Portofoliul este definit de fraciunile de investiii

.

Randamentul mediu al fiecrei aciuni , notat cu

, este calculat prin


()
Randamentul ateptat al portofoliului este dat prin

()

Variana fiecrei aciuni , respectiv covariana dintre oricare dou
aciuni , sunt calculate prin

()

)(

()

Variana portofoliului este definit prin

()

i este utilizat ca msur a riscului portofoliului.

Funciile randament, respectiv risc, definite prin relaiile (4.2), respectiv (4.5) sunt
reprezentate matriceal prin

()

()

unde
(



De asemenea, n reprezentare matriceal relaia


devine

()
unde ( )

este vectorul unitar n-dimensional.



Problema primar de minimizare a riscului, RISCMIN0, este formulat prin
(Bartholomeu-Biggs, 2005)
RISCMIN0:
Minimizeaz


cu restricia

.

Observaie. RISCMIN0 poate fi modificat prin eliminarea restriciei i a variabilei

) .

n multe situaii practice, investitorul este interesat att n minimizarea riscului, ct
i n optimizarea randamentului portofoliului ales. n general, un portofoliu este considerat
optim dac el furnizeaz cel mai mare randament cu cel mai mic risc.

O modalitate de a determina un astfel de portofoliu este prin considerarea funciei
de tip compozit

()
unde constanta pozitiv controleaz raportul dintre randament i risc. Cu aceste
modificari se obine problema de optimizare RISC-RANDAMENT1, (Bartholomeu-Biggs,
2005)
RISC-RANDAMENT1:
Minimizeaz


cu restricia

.
.

Observaie. RISC-RANDAMENT1 poate fi modificat prin eliminarea restriciei i
a variabilei

).

O variant alternativ pentru a determina portofoliul optim este de a fixa o valoare
int pentru randament, de exemplu de Rp procente, i de a considera problema de
optimizare RISCMIN1, (Bartholomeu-Biggs, 2005)
RISCMIN1:
Minimizeaz


cu restriciile

.

sau, alternativ, problema modificat RISCMIN1M,
RISCMIN1M:
Minimizeaz

()
cu restricia

.
Constanta pozitiv semnific raportul dintre randament i risc.

O problem des ntlnit n practic este aceea n care este selectat un nivel
acceptabil de risc,

, i este maximizat randamentul ateptat. Modelul matematic revine la


problema de minimizare cu constrngeri RANDAMENTMAX1:
RANDAMENTMAX1:
Minimizeaz


cu restriciile

.

sau, alternativ, problema modificat RANDAMENTMAX1M, (Bartholomeu-Biggs, 2005):
RANDAMENTMAX1M:
Minimizeaz

()

cu restricia

.

Constanta pozitiv semnific relaia existent ntre randamentul i riscul
portofoliului.

Observaie. RISCMIN1M i respectiv RANDAMENTMAX1M pot fi modificate
prin eliminarea restriciei i a variabilei

).


4.2. Optimizarea portofoliilor cu n aciuni

Definirea problemelor de optimizarea portofoliilor cu n aciuni n termenii
problemelor de optimizare fr constrngeri

Prin utilizarea relaiei (4.8), variabila

este poate fi eliminat,

()
i funciile randament i risc sunt exprimate exclusiv n termenii

. n plus,
restricia (4.8) poate fi eliminat din problemele de optim n care apare.
Fie (

, vector de dimensiune n-1, ( )

vector n-
dimensional, cu unicul element nenul

i B matrice de dimensiune ( ), cu
primele linii liniile corespunztoare matricei unitate

i ultima linie format cu


elementul -1,

(

.
Cu aceste notaii, obinem
()

Similar celor prezentate n n 4.1, procedura MINRISC0 definete problema
primar de minimizare a riscului n cazul unui portofoliu definit de fraciunile de investiii

. Prin utilizarea relaiei (4.13), rezult (Bartholomeu-Biggs, 2005):


MINRISC0: (4.14)
Minimizeaz
( )

( )

Relaia (4.14) definete o problem de optimizare fr constrngeri, n n-1 variabile.
Dac

este o soluie a problemei (4.14), atunci portofoliul de risc


minim, notat

, este definit prin

()

O serie de metode care rezolv problema minimizrii unei funcii de mai multe
variabile utilizeaz vectorul derivatelor pariale de ordinul I, numit gradient. Dac V este
funcie de m variabile, atunci gradientul lui V, notat sau

, este definit prin


(


.
Gradientul funciei obiectiv din relaia (4.14) este
(4.16) ( ) Bx Q B QBx B Q B + = + = V
T T T
V 2 2 2

Pentru rezolvarea problemelor de optim, unele metode necesit i calculul
derivatelor pariale de ordinul II, adic a matricei Hessian. Dac V este funcie de m
variabile, atunci matricea Hessian, notat V
2
V sau
xx
V , este definit prin
m j
m i
j i
x x
V
V
s s
s s
|
|
.
|

\
|
c c
c
= V
1
1
2
2

Hessianul funciei obiectiv din relaia (4.14) este
(4.17) QB B
T
V 2
2
= V

Problema RISCMIN1M, definit n n 4.1, poate fi exprimat n termenii unei
probleme de optimizare fr restricii prin utilizarea relaiei (4.13), astfel (Bartholomeu-
Biggs, 2005):


RISCMIN1M (4.18)
Minimizeaz
( )

( )



Pentru calculul vectorului gradient i al matricei Hessian pentru funcia F definit n
(4.18), considerm reprezentarea
(


unde
( )

( )

( )

Sunt obinute relaiile


unde

( )
i



Similar, este obinut matricea Hessian, prin
( )
T
x x xx xx
R R V F 2 + =
unde
QB B V
xx
T
2 = i
( )
T
x x
R R este o matrice cu rangul 1, pentru orice i,j, 1 , 1 s s n j i ,
( ) ( )
j i
j i
T
x
R
x
R
c
c
c
c
=
, x x
R R

Problema RANDAMENTMAX1 este reformulat n termenii
RANDAMENTMAX1M (vezi n 4.1) i, prin utilizarea relaiei (4.13) rezult problema de
optimizare fr restricii (Bartholomeu-Biggs, 2005):
RANDAMENTMAX1M (4.19)
Minimizeaz

( )

(( )

( )



Expresiile care definesc gradientul i Hessianul funciei definite n (4.19) sunt
obinute prin reprezentarea
( )
2
ac
V V R F + = ,
unde
( ) Bx r + =
T
R
( ) ( ) Bx Q Bx + + =
T
V i
( )
2
acc
V

= .
Rezult
( )
x x
V r B F
a
T
V V + = 2
( ) ( ) ( )
xx x x xx
V V V F
a
T
V V + = 2
unde ( )
T
x x
V V este matrice de rangul I; pentru orice i,j, 1 , 1 s s n j i ,
( ) ( )
j i
j i
T
x
V
x
V
c
c
c
c
=
, x x
V V .

Observaii.
1. n cadrul problemelor enuate n acesast seciune, nu este impus codiia ca
fiecare

s fie pozitiv. O valoare negativ a unei fraciuni de investiii

are
semnificaia urmtoare: strategia optim de investiie implic vnzarea de tip short
selling, adic vnzarea unor active pe care investitorul nu le deine, prin mprumutul
acestora de la broker cu intenia de a le returna ulterior. Aceast strategie este
efectiv doar n situaia n care preul aciunilor este n scdere, deoarece
achiziionarea lor la un moment de timp ulterior investiiei curente implic un cost
mai mic dect preul obinut prin vnzarea activelor mprumutate la momentul
efecturii investiiei curente.
2. n general, soluia unei probleme de risc minim nu implic situaia de tip
short selling dac randamentul dorit

este ales corespunztor, adic n


conformitate cu randamentele medii calculate

pentru activele care vor fi


incluse n portofoliu.

4.3. Metode clasice de optimizare a funciilor de n variabile

Condiii de optimalitate
Fie ( )
n
x x x F ,..., ,
2 1
funcie de variabile, continu i difereniabil. Caracterizarea
punctului de minim atins de F este realizat n termenii vectorului gradient i a matricei
Hessian
T
n
x
F
x
F
x
F
F
|
|
.
|

\
|
c
c
c
c
c
c
= V ,..., ,
2 1
, notat n continuare cu g sau cu
x
F , respectiv
n j
n i
j i
x x
F
F
s s
s s
|
|
.
|

\
|
c c
c
= V
1
1
2
2
, matrice notat n continuare cu G sau
xx
F

Observaie. n cazul n care F este dublu difereniabil, matricea Hessian G este
simetric.

Definiia 4.1. Matricea simetric A este pozitiv definit dac i numai dac, pentru
orice 0 x = , are loc relaia,
0 > Ax x
T
.

Definiia 4.2.Fie ( ) ( )
n
x x x F ,..., , ,
2 1
= x x funcie de n variabile i
*
x cu proprietile
(4.20) ( ) 0 x g =
*
i ( )
*
x G este pozitiv definit.
Atunci
*
x este punct de minim local al lui F.

Dac o funcie F are mai multe minime locale (puncte ce ndeplinesc (4.20)), atunci
minimul global este acel minim local pentru care este obinut cea mai mic valoare a lui F.

Observaie. Problema RISCMIN0 poate fi rezolvat prin abordare analitic.
Deoarece funcia gradient este
QBx B Q B
T T
V 2 2 + = V ,
valoarea optimal a lui x este obinut prin rezolvarea sistemului linia
Q B QBx B
T T
=

Metode directe de cutare a optimului
n general, n problemele de optimizare a portofoliilor, vectorul gradient i matricea
Hessian pot fi n general calculate, funciile obiectiv fiind n general dublu difereniabile.
Pentru situaiile de acest gen sunt folosite metode de tip gradient. n cazul n care
optimizarea nu poate fi realizat prin utilizarea relaiilor (4.20), o variant de rezolvare a
problemelor de optimizare o constituie metodele de cutare direct, bazate exclusiv pe
analizarea valorile funciei obiectiv.
Cutarea direct a valorii minime a unei funcii obiectiv F este realizat prin
evaluarea lui F n punctele unei reele de valori posibile ale vectorului variabil a
funciei. Dei metodele de acest tip nu sunt n general eficiente, exist situaii n care
valoarea minim poate fi aproximat prin considerarea unei variante a lui F discretizat pe
un set de puncte aleatoare i utilizarea unor argumente de natur statistic pentru
estimarea probabilitii de determinare a minimului ntr-n anumit numr de ncercri.

Cutarea univariant
Metoda implic utilizarea unei metode directe de cutare (ca, de exemplu, metoda
biseciei) pentru generarea unei secvene de tip minimizarea unidimensional a lui F astfel
nct, la fiecare etap i, n i s s 1 , F este minimizat n raport cu
i
x . Cu alte cuvinte, punctul
optim este cutat de-a lungul direciilor date de fiecare coordonat pe rnd. Dei uneori
metoda funcioneaz eficient, ea nu poate fi general aplicabil deoarece nu este
convergent.

Metoda Hooke i Jeeves
Tehnica Hooke&Jeeves utilizeaz metoda cutrii pe o singura ax pe baza
urmtorului raionament. Dac x x
~
, sunt estimri ale punctelor de minim ale lui ( ) x F la
momentul iniial, respectiv la momentul final al ciclului de cutare, atunci minimizarea
unidimensional a alui F este realizat pe direcia x x
~
printr-o estimare de tipul
(4.21) ( ) x x x x
~

~
+ = ,
unde este o constant scalar. Metoda continu prin efectuarea ciclurilor de cutare
univariant urmate de estimri de forma (4.21).

Metode de aproximare a derivatelor
Una dintre cele mai uzuale metode de minimizarea a lui ( ) x F exclusiv pe baza
valorilor funciei F este prin adaptarea metodelor de tip gradient la estimrile de tip
diferen finit ale derivatelor funciei. De exemplu, pentru derivatele de ordinul I poate fi
utilizat estimarea diferen centrat
( ) ( ) ( )
h
x x h x F x x h x F
x
x x x F
n n n
2
,..., , ,..., , ,..., ,
2 1 2 1
1
2 1
+
~
c
c

Abordrile care implic estimarea derivatelor funciei obiectiv sunt dezvoltate pe
baza presupunerii c F este difereniabil. n plus, metodele din aceast clas nu sunt n
general aplicate problemelor pentru care derivatele funciei F nu sunt funcii continue.


Metode de tip gradient
Aa cum a fost menionat, n problemele de optimizare a portofoliilor funciile
obiectiv sunt dublu difereniabile i relaiile (4.20) pot fi verificate. Optimizarea funciilor
n n variabile i care ndeplinesc proprietile din definiia 4.2 poate fi realizat prin metode
de tip gradient, respectiv de tip Newton. Sunt prezentate n continuare metoda celei mai
rapide (abrupte) descreteri i metoda Newton. Ambele metode presupun construcia cte
unui ir care, n anumite condiii de regularitate impuse funciei obiectiv, converge ctre
soluia optimal a problemei de optimizare.

Metoda celei mai rapide descreteri
Tehnica celei mai rapide descreteri este justificat geometric astfel. Presupunem c
() este funcia de minimizat i

este punctul construit la momentul curent. Un punct


mai bun (n sensul c valoare funciei obiectiv descrete n acel punct fa de punctul
curent) poate fi determinat prin deplasarea pe direcia de cutare care determin
descreterea cea mai rapid a lui F, adic pe direcia gradientului negativ.

Metoda celei mai rapide descreteri de tip perfect line search este descris astfel
(Bartholomeu-Biggs, 2005):

Selecteaz

, estimare iniiale a punctului de minim al lui () i


Repet pentru

)
calculeaz

care minimizeaz () (

)
aplic regula de actualizare


Pn cnd (

)

Observaie. O serie de metode de optimizare utilizeaz n construcia irului tipare
similare celui prezentat n algoritmul de mai sus; fiecare iteraie const n dou etape:
alegerea direciei de cutare (calculul lui

) i respectiv procedura de determinare a


demarcaiei (line search) n scopul stabilirii unei valori adecvate a pasului

.

Definiia 4.3. Procedura de determinare a demarcaiei
*
s care minimizeaz
( ) ( )
k k
s F s p x + = se numete perfect sau exact.

Definiia 4.4. O procedur de determinare a demarcaiei prin care este acceptat
orice valoare a pasului s care ndeplinete ( ) ( ) 0 < +
k k k
F s F x p x i este mrginit se
numete inexact sau slab.

n continuare este prezentat teorema de convergen a metodei.

Propoziia 4.1. Fie ( ) x F o funcie dublu difereniabil, cu derivatele continue i
mrginit inferior i pentru care este ndeplinit proprietatea
( )
2
2
z z x z M F
T
s V
pentru orice vector z , unde 0 > M este constant scalar. Atunci irul definit prin
( )
k k k
F
M
x x x V =
+
1
1
(
1
= M s )
are proprietatea
( ) 0 V
k
F x cnd k .


Metoda Newton
Tehnica celei mai abrupte descreteri are inconvenientul c nu folosete informaia
dat de cea de-a doua derivat. Pot fi obinute metode mai eficiente pe baza proprietii
funciilor ptratice, ( ) x Q , de a avea matricea Hessian constant. Fie
(4.22) ( ) c Q
T T
+ + = x b Ax x x
2
1
.
Gradientul este
( ) b Ax x + = VQ .
Punctul staionar rezult prin rezolvarea sistemului de ecuaii liniare
(4.23) b Ax = .

Soluia sistemului (4.23) este punct de minim dac matricea Hessian, A, este pozitiv
definit. Dac A este negativ definit, soluia sistemului (4.23) este punct de maxim. Dac
A este oarecare, soluia lui (4.23) este punct a. Dac A este nesingular, atunci (4.22) are
un unic punct staionar.
Principiile expuse mai sus pot fi aplicate pentru minimizarea unei funcii generale,
( ) x F . Fie
k
x estimaia punctului de minim al lui F la momentul curent i ( )
k k
F x g V = ,
( )
k k
F x G
2
V = . Utiliznd dezvoltarea Taylor n jurul lui
k
x obinem
(4.24) ( ) ( ) ( ) ( ) p G p g p x p p x
k
T
k
T
k k
F Q F
2
1
+ + = ~ + i
(4.25) ( ) ( ) p G g p p x
k k k
Q F + = V ~ + V
Rezult c, dac
k
G este pozitiv definit,
(4.26)
k
T
k
g G p =
Este obinut astfel urmtorul algoritm:

Metoda Newton
Selecteaz
0
x , estimare iniiale a punctului de minim al lui ( ) x F i 0 > c
Repet pentru ,... 2 , 1 , 0 = k
( )
k k
F x g V = , ( )
k k
F x G
2
V =
Dac
k
G este pozitiv definit, atunci calculeaz
k
T
k k
g G p =
Altfel
k k
g p =
calculeaz
*
s astfel nct ( )
k k
s F p x + ndeplinete condiiile Wolfe 2 i 3
(Bartholomeu-Biggs, 2005)
aplic regula de actualizare
k k k
s p x x *
1
+ =
+

Pn cnd ( ) c < V
+1 k
F x

Observaie. n cazul problemei RISCMIN1M, matricea Hessian corespunztoare
funciei obiectiv este

)(



deci este matrice constant (nu depinde de x). G este pozitiv definit i simetric. Constanta
M din propoziia 4.1 (convergena metodei celei mai rapide descreteri) poate fi setat
astfel.

( )



Deoarece G este pozitiv definit i simetric, rezult c este diagonalizabil i exist
[

] matrice cu coloane un set de vectori proprii ortogonali, (

{


corespunztori valorilor proprii

ale matricei G
astfel nct

)

Rezult c problema revine la calculul constantei M astfel nct



Pentru



n continuare obinem



Deoarece (

) dac (


Rezult c


i M poate fi setat pe valoarea

(valoarea proprie dominant a matricei constante G)







Exemplul 1
n tabelul 4.1 este prezentat istoricul randamentelor corespunztoare aciunilor A1,
A2, A3, A4, A5 pe o perioad de 10 sptmni. (Bartholomeu-Biggs, 2005)

S1 S2 S3 S4 S5 S6 S7 S8 S9 S10
A1 1.2 1.3 1.4 1.5 1.1 1.2 1.1 1.0 1.0 1.1
A2 1.3 1.0 0.8 0.9 1.4 1.3 1.2 1.1 1.2 1.1
A3 0.9 1.1 1.0 1.1 1.1 1.3 1.2 1.1 1.0 1.1
A4 1.1 1.1 1.2 1.3 1.2 1.2 1.1 1.0 1.1 1.2
A5 0.8 0.75 0.65 0.75 0.8 0.9 1.0 1.1 1.1 1.2

Tabelul 4.1

Problema de rezolvat: determinarea portofoliului de risc minim pentru un
randament dat

.
Randamentul mediu al portofoliului rezult

( )



i matricea de covarian este


(



Problema este modelat n termenii RISCMIN1M:
Minimizeaz
( )

( )


Prin aplicarea metodelor de tip gradient, respectiv Newton prezentate, pentru
eroarea permis

, rezult
portofoliul ( )
riscul minim


randamentul

, randamentul dat.

Exemplul 2 n cadrul acestui exemplu au fost folosite date reale, selectate de pe
Bursa de Valori din Londra, pe 20 de perioade de timp cuprinse ntre anii 2002 i 2003.
Vectorului medie a randamentelor i a matricei de covarian sunt disponibile n
(Bartholomeu-Biggs, 2005) i au urmtoarele valori,
( )



Observaie. n cazurile reale, istoricul evoluiei randamentelor aciunilor poate
nregistra i valori negative i, de asemenea, matricea de covarian poate avea valori mult
mai mari dect n cazul datelor generate artificial (cum este cazul exemplului 1).
Problema este modelat n termenii RISCMIN1M.
Prin aplicarea metodelor de tip gradient, respectiv Newton prezentate, pentru
eroarea permis

, rezult
portofoliul ( )
riscul minim
randamentul

, randamentul dat.

Observaie. Pentru aceeai eroarea permis, n
5
10

, testele indic faptul c


numrul de iteraii ale metodei celei mai rapide descreteri este de ordinul sutelor (n
implementarea cu
1
= M s constant este de ordinul miilor), n timp ce metoda Newton
necesit cteva zeci de iteraii.

Urmtoarea funcie MATLAB implementeaz o metod de tip gradient n care
1
= M s constant. Este tratat separat cazul n care este disponibil istoricul aciunilor i
cazul n care sunt cunoscute randamentul mediu i matricea de covarian (similar
exemplului 2).

function [y]=GRAD_riscmin1(nume,ro,Rp,eps,NM,caz);
% GRAD_riscmin1('portofoliu1.txt',100,1.15,10^-5*sqrt(5),50000,0);
% GRAD_riscmin1('',10,0.25,10^-5*sqrt(5),10000,1);
% nume=numele fisierului din care sunt prelute datele
% ro=din functia obiectiv
% Rp=randamentul prognozat
% NM=numarul de iteratii
% eps = eroarea maxima admisa
% caz=0 daca preiau date din fisier, altfel este 1

if(caz==0)
R=citeste_date(nume);
[n,m]=size(R);
[Q,rmed,alpha,B]=parametri(R);
else
n=5;
In1=eye(n-1);
ul=-ones(1,n-1);
B=[In1; ul];
alpha=zeros(n,1);
alpha(n)=1;
rmed=[-0.028, 0.366, 0.231, -0.24, 0.535]';
Q=[1.0256 -0.4340 0.0202 -0.1968 -0.0311;
-0.4340 1.1049 -0.0783 0.2347 -0.1776;
0.0202 -0.0783 0.4328 -0.1236 -0.1895;
-0.1968 0.2347 -0.1236 8.0762 1.0093;
-0.0311 -0.1776 -0.1895 1.0093 2.9007];
end;
% calcul matrice Hessian
H=2*B.'*Q*B+2*(ro/(Rp^2))*(B.'*rmed)*(B.'*rmed).';
%disp(H);
[V,D]=eig(H);
% valoarea proprie maxima a matricei Hessian pentru stabilirea
%valorii cu care este actualizat xk din teorema de convergenta
Maxim=max(max(D));
rata=1/(Maxim);

k=1;er=1;
x0=ones(n-1,1);
x0=x0/(n-1);
while((k<=NM)&&(er>=eps))
val=fgrad(Q,rmed,alpha,B,ro,Rp,x0);
er=norm(val);
x=x0-rata*val;
x0=x;
k=k+1;
end;
disp(['Eroarea: ' num2str(er)]);
[vall,V]=fobiectiv(Q,rmed,alpha,B,ro,Rp,x);
y=alpha+B*x;
disp('Portofoliul calculat:');disp(y);
disp(['Riscul minim calculat: ' num2str(V)]);
disp(['Randamentul calculat: ' num2str(rmed.'*y)]);
disp(['Randamentul predictionat: ' num2str(Rp)]);
disp(['Numarul de iteratii: ' num2str(k)]);
end

n continuare sunt prezentate evoluiile algoritmului de tip gradient pentru fiecare
din cele dou exemple considerate.

La apelul GRAD_riscmin1('portofoliu1.txt',100,1.15,10^-5*sqrt(5),50000,0);

La apelul GRAD_riscmin1('',10,0.25,10^-5*sqrt(5),10000,1);




4.4. Abordarea GA pentru problema optimizrii portofoliilor de n aciuni

Problema pe care ne propunem s o rezolvm este determinarea portofoliului de risc
minim pentru un randament prognozat

. Problema este modelat n termenii


RISCMIN1M, transformat n problema de maxim.

Maximizeaz
() () [( )

( )

].

Pentru comparaie vor fi folosite datele din tabelul 4.1 i cele din exemplul 2.

Vor fi tratate att situaiile de tip short selling, ct i situaiile n care acest
lucru este evitat. Aa cum am menionat n 4.2, dac randamentul prognozat

este ales
n conformitate cu randamentele medii calculate

, n general soluia unei


probleme de risc minim nu implic situaia de tip short selling pentru activele care vor fi
incluse n portofoliu.

La fiecare moment de timp, populaia este constituit din dim indivizi. Fiecrui
fenotip y (portofoliu) i corespunde un cromozom definit de un ir cu n-1 numere reale,
nsoit de informaia calitatea evaluat n termenii funciei obiectiv. Din punct de vedere al
reprezentrii, este utilizat un vector x, cu
() ()
() (( ))
unde y este un portofoliu:
pentru () este fraciunea investit n aciunea i,
astfel nct ()

i () ()


i () este valoarea funciei obiectiv asociat vectorului ( ) (calitatea n termenii
funciei de evaluare).
Generarea populaiei iniiale este realizat aleator. Dac este aleas varianta n care
nu este admis o situaie de tip short selling, sunt impuse constrngerile fiecrui individ
x:
() () ()


1. n caz contrar, fiecare alel () este generat aleator uniform ntre -1 i 1.
Pentru ca () ()

s fie n [], trebuie ca ()

.

Operatorii de variaie sunt definii astfel. Recombinarea este aplicat cu o rat pc i
revine la aplicarea operatorului de recombinare aritmetic total, cu ponderea p, celor

perechi de cromozomi alei aleator din populaia de prini (fiecare pereche de


cromozomi ocup poziiile n multisetul prinilor). Pot fi utilizate dou variante:
1. aceeai pereche de cromozomi poate fi generat de mai multe ori, respectiv
2. orice pereche de cromozomi alei ca prini este unic.
Dac o pereche de cromozomi nu genereaz progenituri prin recombinare aritmetic
(aleator a fost generat un numr sub rata de ncruciare), atunci are loc recombinarea
asexuat.

Observaie. Prin aplicarea operatorului de recombinare aritmetic total, dac doi
indivizi respect constrngerile (4.28), atunci i progeniturile lor ndeplinesc (4.28).
Aceast observaie este important n contextul excluderii situaiei de tip short selling.

Operatorul de mutaie ales este cel de tip fluaj, cu o probabilitate de mutaie mic i
cu

de asemenea foarte mic (aici a fost ales ). Operatorul este


implementat n dou variante.
2. Varianta n care este exclus situaia de tip short selling. Cu o rat pm, fiecare
gen din fiecare cromozom sufer o mutaie prin adugarea unei valori generate din
repartiia normal de medie 0 i varian

, dar astfel nct cromozomul rezultat s


corespund unei soluii fezabile (s fie ndeplinite condiiile 4.28). Dac prin modificarea
valorii unei gene, a, rezult un cromozom, x, care nu aparine setului soluiilor fezabile,
atunci a este ajustat astfel nct x s ndeplineasc 4.28: dac a rezult negativ, atunci a
este setat pe valoarea 0, respectiv dac suma valorilor genelor lui x, sv, este supraunitar, a
este modificat astfel nct sv s devin 1 (implicit suma investit n ultima aciune a
portofoliului devine 0).
3. Varianta general: cu o rat pm, fiecare gen din fiecare cromozom sufer o
mutaie prin adugarea unei valori generate din repartiia normal de medie 0 i varian

. Este impus o restricie prin care valoarea fiecrei alele s fie n intervalul []
deci, n modul, s fie subunitar, pentru a menie semnificaia fiecrei valori () de
fraciune investit n aciunea corespunztoare. De asemenea, pentru ca ()
()

s fie n [], trebuie ca ()

.

Selecia prinilor este realizat pe baza algoritmului SUS, prin utilizarea distribuiei
de probabilitate de selecie de tip rang liniar, cu presiunea de selecie s. La fiecare generaie
sunt selectai dim prini. Mecanismul de supravieuire este implementat astfel: generaia
urmtoare este dat de multisetul progeniturilor, eventual mutante, dar n care cel mai bun
individ al generaiei curente, bx, nlocuiete cel mai slab cromozom copil, dac nici unul
dintre indivizii generai n urma aplicrii operatorilor de variaie nu are calitatea cel puin
egal cu cea a lui bx.
Este prezentat n continuare implementarea algoritmului n cea de a doua variant
de generare a unei perechi de cromozomi din bazinul de recombinare (orice pereche de
cromozomi alei ca prini este unic). Pentru prima variant, n funcia crossover sunt
generate aleator

perechi de cromozomi, pentru care se impune doar condiia ca cei


doi cromozomi s ocupe poziii diferite n multisetul prinilor.


function [R]=citeste_date(nume);
R=load(nume);
end

function [Q,rmed,alpha,B]=parametri(R);
%n actiuni observate in m saptamani
[n,m]=size(R);
rmed=zeros(n,1);
for i=1:n
rmed(i)=mean(R(i,:));
end;
Q=cov(R')*(m-1)/m;
In1=eye(n-1);
ul=-ones(1,n-1);
B=[In1; ul];
alpha=zeros(n,1);
alpha(n)=1;
end

function [val,V]=fobiectiv(Q,rmed,alpha,B,ro,Rp,x);
val=((alpha+B*x).')*Q*(alpha+B*x)+(ro/(Rp^2))*((rmed.')*alpha-
Rp+(rmed.')*B*x)^2;
%disp(val);
V=((alpha+B*x).')*Q*(alpha+B*x);
%disp(V);
end

function [pop]=gen_ini(dim,n,Q,rmed,alpha,B,ro,Rp);
pop=zeros(n,dim);
for i=1:dim
x=zeros(n-1,1);
for j=1:n-1
gata=0;
while(~gata)
r=unifrnd(0,1);
if(sum(x)+r<=1)
x(j)=r;
gata=1;
end;
end;
if(sum(x)==1)
break;
end;
end;
pop(1:n-1,i)=x(1:n-1);
[val,V]=fobiectiv(Q,rmed,alpha,B,ro,Rp,x(1:n-1));
pop(n,i)=-val;
end;
end

function [pop]=gen_ini_short_selling(dim,n,Q,rmed,alpha,B,ro,Rp);
pop=zeros(n,dim);
for i=1:dim
x=zeros(n-1,1);
gata=0;
while(~gata)
for j=1:n-1
x(j)=unifrnd(-1,1);
end;
if((sum(x)>=0)&&(sum(x)<=2))
pop(1:n-1,i)=x(1:n-1);
[val,V]=fobiectiv(Q,rmed,alpha,B,ro,Rp,x(1:n-1));
pop(n,i)=-val;
gata=1;
end;
end;
end;
end

function [parinti]=selectie_SUS_rang_l(pop,s);
[n,dim]=size(pop);
p=rang_l(pop,s);
q=zeros(dim,1);
for i=1:dim
q(i)=sum(p(1:i));
end;
parinti=zeros(n,dim);
i=1;k=1;r=unifrnd(0,1/dim);
while(k<=dim)
while(r<=q(i))
parinti(1:n,k)=pop(1:n,i);
r=r+1/dim;
k=k+1;
end;
i=i+1;
end;
end

function [p]=rang_l(pop,s);
[n,dim]=size(pop);
p=zeros(1,dim);
for i=1:dim
p(i)=(2-s)/dim+(2*i*(s-1)/(dim*(dim+1)));
end;
end

function [popN]=crossover1(pop,pc,p,Q,rmed,alpha,B,ro,Rp);
[n,dim]=size(pop);
poz=[];
popN=zeros(n,dim);
for i=1:2:dim
ok=0;
while(~ok)
p1=unidrnd(dim-1);
p2=p1;
while(p1>=p2)
p2=unidrnd(dim);
end;
if(~ismember([p1 p2],poz,'rows'))
poz=[poz;[p1 p2]];
ok=1;
end;
end;
% nu pot fi generate aceleasi perechi de parinti la treceri diferite
x=pop(1:n-1,p1);
y=pop(1:n-1,p2);
r=unifrnd(0,1);
if(r<=pc)
x1=p*x+(1-p)*y;
popN(1:n-1,i)=x1(1:n-1);
[val,V]=fobiectiv(Q,rmed,alpha,B,ro,Rp,x1(1:n-1));
popN(n,i)=-val;
y1=p*y+(1-p)*x;
popN(1:n-1,i+1)=y1(1:n-1);
[val,V]=fobiectiv(Q,rmed,alpha,B,ro,Rp,y1(1:n-1));
popN(n,i+1)=-val;
else
popN(1:n,i)=pop(1:n,p1);
popN(1:n,i+1)=pop(1:n,p2);
end;
end;
end

function [popN]=mutatie(pop,pm,t,Q,rmed,alpha,B,ro,Rp,caz);
% mutatia intr-un cromozom, la nivel de gena revine la aplicarea
operatiei
% de fluaj
[n,dim]=size(pop);
popN=pop;
for i=1:dim
efectuat=0;
if(caz==0)
% fara short selling
for j=1:n-1
r=unifrnd(0,1);
if(r<=pm)
fluaj=normrnd(0,t/3);
a=pop(j,i)+fluaj;
efectuat=1;
if(a<0)
a=0;
end;
s=sum(popN(1:n-1,i));
if(s+fluaj>1)
xx=s+fluaj-1;
a=a-xx;
end;
popN(j,i)=a;
end;
end;
else
%cu short selling
for j=1:n-1
r=unifrnd(0,1);
if(r<=pm)
gata=0;
while(~gata)
fluaj=normrnd(0,t/3);
if(fluaj>0)
a=min([pop(j,i)+fluaj 1]);
else
a=max([pop(j,i)+fluaj -1]);
end;
s=sum(popN(1:n-1,i));
if((s+fluaj>=0)&&(s+fluaj<=2))
popN(j,i)=a;
efectuat=1;
gata=1;
end;
end;
end;
end;
if(efectuat)
[val,V]=fobiectiv(Q,rmed,alpha,B,ro,Rp,popN(1:n-1,i));
popN(n,i)=-val;
end;
end;
end

function [rezultat]=selectie_generatie_urmatoare(pop,popN);
[n,dim]=size(pop);
fob=pop(n,1:dim);
fobN=popN(n,1:dim);
rezultat=popN;
[max1,i]=max(fob);
[max2,j]=max(fobN);
if(max1>max2)
[min1,k]=min(fobN);
rezultat(1:n,k)=pop(1:n,i);
end;
end

function [x]=GA_riscmin1(nume,dim,ro,Rp,s,pc,pm,p,t,NM,caz);
% nume=numele fisierului din care sunt prelute datele
% dim=dimensiunea populatiei, numar par
% ro=din functia obiectiv
% Rp=randamentul prognozat
% s=constrangerea de selectie pentru distributia de selectie rang liniar
% pc=probabilitatea de recombinare
% p=ponderea la recombinarea prin medie
% pm=probabilitatea de mutatie
% t=pragul de la fluaj
% NM=numarul de iteratii
% caz=0, pentru exemplul1, fara short selling
% caz=1, pentru exemplul2, cu short selling

%GA_riscmin1('portofoliu1.txt',500,100,1.15,1.8,0.8,0.01,0.7,0.1,20,0);
%GA_riscmin1('',500,10,0.25,1.8,0.8,0.02,0.7,0.1,20,1);
if(caz==0)
R=citeste_date(nume);
[n,m]=size(R);
[Q,rmed,alpha,B]=parametri(R);
pop=gen_ini(dim,n,Q,rmed,alpha,B,ro,Rp);
else
n=5;
In1=eye(n-1);
ul=-ones(1,n-1);
B=[In1; ul];
alpha=zeros(n,1);
alpha(n)=1;
rmed=[-0.028, 0.366, 0.231, -0.24, 0.535]';
Q=[1.0256 -0.4340 0.0202 -0.1968 -0.0311;
-0.4340 1.1049 -0.0783 0.2347 -0.1776;
0.0202 -0.0783 0.4328 -0.1236 -0.1895;
-0.1968 0.2347 -0.1236 8.0762 1.0093;
-0.0311 -0.1776 -0.1895 1.0093 2.9007];
pop=gen_ini_short_selling(dim,n,Q,rmed,alpha,B,ro,Rp);
end;
pop1=sortrows(pop.',n);
pop=pop1.';
T=[];
T1=[];
for nrit=1:NM
%populatia sortata crescator dupa -fobiectiv
[parinti]=selectie_SUS_rang_l(pop,s);
[popN]=crossover1(parinti,pc,p,Q,rmed,alpha,B,ro,Rp);
% operatia de mutatie este realizata functie de caz - cu sau fara
%short selling
[popNou]=mutatie(popN,pm,t,Q,rmed,alpha,B,ro,Rp,caz);
[rezultat]=selectie_generatie_urmatoare(pop,popNou);
pop1=sortrows(rezultat.',n);
pop=pop1.';
[val,V]=fobiectiv(Q,rmed,alpha,B,ro,Rp,pop(1:n-1,dim));
T=[T V];
T1=[T1 val];
end;
disp(['riscul minim:' num2str(T(NM))]);
disp(['minimul functiei obiectiv MINRISC1:' num2str(T1(NM))]);
disp('Fractiunile investite');
disp([pop(1:n-1,dim);1-sum(pop(1:n-1,dim))]);
disp('Randamentul obtinut:');
Rr=(rmed.')*(alpha+B*pop(1:n-1,dim));
disp(Rr);
figure
i=1:NM;
plot(i,T1(i),'-rs','LineWidth',2,...
'MarkerEdgeColor','k',...
'MarkerFaceColor','y',...
'MarkerSize',8);
figure
i=1:NM;
plot(i,T(i),'-rs','LineWidth',2,...
'MarkerEdgeColor','k',...
'MarkerFaceColor','m',...
'MarkerSize',8);

end

Variant de implementare cu excluderea situaiei de tip short selling pentru
datele din tabelul 4.1

Rezultatele care pot fi obinute la apelul
GA_riscmin1('portofoliu1.txt',500,100,1.15,1.8,0.8,0.01,0.7,0.1,20,0)
sunt figurate mai jos.
n acest exemplu, minimul funciei obiectiv corespunztoare problemei
RISCMIN1M este

, riscul calculat dup 20 de generaii este




randamentul este

( )


( )



i portofoliul obinut:

( )










Variant de implementare, cu considerarea situaiei de tip short selling pentru
datele din exemplul 2

Rezultatele care pot fi obinute la apelul
GA_riscmin1('',500,10,0.25,1.8,0.8,0.02,0.7,0.1,20,1);
sunt figurate mai jos.
n acest exemplu, minimul funciei obiectiv corespunztoare problemei
RISCMIN1M este 0.14238, riscul calculat dup 20 de generaii este


randamentul este

( )



i portofoliul obinut:

( )