Mi sembra che sei un po' "parca" di informazioni.
Il tuo non e' esattamente un "problema di programmazione".
E' al piu' un "problema di ottimizzazione con vincoli".
http://www.performancetrading.it/Mercati/Uomini/SF_I_principi_base.htm
Il "problema" eventualmente, e' "formalizzare il problema" nel formalismo specifico usato dal tool di ottimizzazione.
In Java ci sono librerie di ottimizzazione, ma non e' roba per inesperti.
https://stackoverflow.com/questions/143020/mathematical-optimization-library-for-java-free-or-open-source-recommendatio
Non si prende semplicemente la libreria e la si usa: PRIMA si deve MODELLARE IL PROBLEMA.
Siamo ben lontani da eventuali problemi di programmazione