| |||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||
|
Folio - Modelling examples from 'Getting started' Description
Source Files By clicking on a file name, a preview is opened at the bottom of this page. Data Files
foliolps.mos
(!******************************************************
Mosel Example Problems
======================
file foliolps.mos
`````````````````
Modeling a small LP problem
to perform portfolio optimization.
-- Using string indices --
(c) 2008 Fair Isaac Corporation
author: S.Heipcke, Mar. 2006
*******************************************************!)
model "Portfolio optimization with LP"
uses "mmxprs"
declarations
! Set of shares
SHARES = {"treasury", "hardware", "theater", "telecom", "brewery",
"highways", "cars", "bank", "software", "electronics"}
! Set of high-risk values among shares
RISK = {"hardware", "theater", "telecom", "software", "electronics"}
! Set of shares issued in N.-America
NA = {"treasury", "hardware", "theater", "telecom"}
RET: array(SHARES) of real ! Estimated return in investment
frac: array(SHARES) of mpvar ! Fraction of capital used per share
end-declarations
RET::(["treasury", "hardware", "theater", "telecom", "brewery", "highways",
"cars", "bank", "software", "electronics"])[5,17,26,12,8,9,7,6,31,21]
! Objective: total return
Return:= sum(s in SHARES) RET(s)*frac(s)
! Limit the percentage of high-risk values
sum(s in RISK) frac(s) <= 1/3
! Minimum amount of North-American values
sum(s in NA) frac(s) >= 0.5
! Spend all the capital
sum(s in SHARES) frac(s) = 1
! Upper bounds on the investment per share
forall(s in SHARES) frac(s) <= 0.3
! Solve the problem
maximize(Return)
! Solution printing
writeln("Total return: ", getobjval)
forall(s in SHARES) writeln(s, ": ", getsol(frac(s))*100, "%")
end-model
| |||||||||||||||||||||||||||||
| © Copyright 2025 Fair Isaac Corporation. |