ojalgo-user Mailing List for oj! Algorithms (Page 2)
Mathematics, linear algebra and optimisation
Brought to you by:
apete
You can subscribe to this list here.
2003 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
(1) |
Jul
(1) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
---|---|---|---|---|---|---|---|---|---|---|---|---|
2004 |
Jan
|
Feb
(1) |
Mar
|
Apr
(14) |
May
(1) |
Jun
(1) |
Jul
|
Aug
|
Sep
|
Oct
(1) |
Nov
|
Dec
(1) |
2005 |
Jan
(3) |
Feb
|
Mar
|
Apr
|
May
|
Jun
(1) |
Jul
|
Aug
(1) |
Sep
(3) |
Oct
|
Nov
|
Dec
(1) |
2006 |
Jan
(1) |
Feb
(1) |
Mar
(1) |
Apr
|
May
(1) |
Jun
(2) |
Jul
|
Aug
(5) |
Sep
|
Oct
(3) |
Nov
(4) |
Dec
(2) |
2007 |
Jan
(8) |
Feb
(1) |
Mar
(2) |
Apr
(11) |
May
(6) |
Jun
|
Jul
(10) |
Aug
(2) |
Sep
|
Oct
(4) |
Nov
|
Dec
(11) |
2008 |
Jan
(22) |
Feb
(4) |
Mar
(2) |
Apr
(4) |
May
(2) |
Jun
|
Jul
|
Aug
(1) |
Sep
|
Oct
(6) |
Nov
(17) |
Dec
(5) |
2009 |
Jan
(15) |
Feb
(2) |
Mar
(2) |
Apr
(3) |
May
(4) |
Jun
(5) |
Jul
(9) |
Aug
(2) |
Sep
|
Oct
(5) |
Nov
(14) |
Dec
|
2010 |
Jan
(3) |
Feb
(5) |
Mar
(2) |
Apr
(19) |
May
|
Jun
|
Jul
|
Aug
(2) |
Sep
|
Oct
(5) |
Nov
(3) |
Dec
|
2011 |
Jan
|
Feb
(1) |
Mar
(7) |
Apr
(10) |
May
(1) |
Jun
(15) |
Jul
(1) |
Aug
|
Sep
|
Oct
(13) |
Nov
(9) |
Dec
(11) |
2012 |
Jan
|
Feb
(1) |
Mar
(9) |
Apr
(23) |
May
(16) |
Jun
(9) |
Jul
(13) |
Aug
|
Sep
(4) |
Oct
(1) |
Nov
(1) |
Dec
|
2013 |
Jan
|
Feb
(12) |
Mar
(7) |
Apr
(24) |
May
|
Jun
(7) |
Jul
(4) |
Aug
|
Sep
(3) |
Oct
(16) |
Nov
(7) |
Dec
(3) |
2014 |
Jan
(22) |
Feb
(1) |
Mar
(1) |
Apr
|
May
(2) |
Jun
(3) |
Jul
(4) |
Aug
(4) |
Sep
(1) |
Oct
(2) |
Nov
(6) |
Dec
(2) |
2015 |
Jan
(11) |
Feb
(10) |
Mar
(1) |
Apr
(9) |
May
|
Jun
|
Jul
(1) |
Aug
(4) |
Sep
(6) |
Oct
(3) |
Nov
(15) |
Dec
(4) |
2016 |
Jan
(6) |
Feb
|
Mar
(18) |
Apr
(5) |
May
(9) |
Jun
(3) |
Jul
(5) |
Aug
(2) |
Sep
(5) |
Oct
(2) |
Nov
|
Dec
(5) |
2017 |
Jan
(4) |
Feb
(3) |
Mar
|
Apr
|
May
(12) |
Jun
(1) |
Jul
(4) |
Aug
|
Sep
(3) |
Oct
(1) |
Nov
|
Dec
(1) |
2018 |
Jan
(5) |
Feb
|
Mar
(1) |
Apr
(1) |
May
(1) |
Jun
|
Jul
(4) |
Aug
(1) |
Sep
(8) |
Oct
|
Nov
|
Dec
(1) |
2019 |
Jan
|
Feb
(2) |
Mar
(1) |
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2022 |
Jan
|
Feb
|
Mar
|
Apr
|
May
(1) |
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: Jonathan S. <jo...@ma...> - 2018-01-05 20:07:40
|
I have created a custom matrix store, that in addition to managing access into the matrix as per the API supplies some additional functionality I need. My intention is to use it as a 1st class matrix class as a starting point in linear alg computations. However, I've noted that the MatrixStore<Double> interface implements only a subset of the operations that, say, PrimitiveMatrix exposes. For example I cannot directly call invert() on the matrix store, though I can multiply and call a number of other operations directly. If I want to extend the matrix class API, I thought creating a new MatrixStore would be the approach, but it seems that there is a more complex hierarchy of MatrixStore, PhysicalStore, AbstractMatrix, etc which I have not been able to figure out to integrate with. My Questions: 1. If I want to expose invert and other methods in my custom matrix, what is the best approach to doing so? 2. If MatrixStore is not the best way to create custom Matrices, what should the approach be. I recognize that MatrixStore most likely refers to the storage / access functionality rather than matrix ops. I would like to be able to bundle both Am stuck at this point. Any pointers greatly appreciated. --- Jonathan Shore |
From: Anders P. <an...@op...> - 2017-12-05 10:05:30
|
Everything "Big" (everything with BigDecimal elements) in the org.ojalgo.matrix package (and subpackages) has been deprecated. The existing code dealing with ComplexNumber has been generalised to handle any Scalar implementation. Relevant Scalar implementations include ComplexNumber and RationalNumber. The intention is that RationalNumber can replace BigDecimal. Then there is Quaternion... With this change ojAlgo gets matrices and vectors with Quaternion elements "for free". Anyone know what these can be used for? /Anders (apete) |
From: Anders P. <an...@op...> - 2017-10-05 07:38:54
|
https://github.com/optimatika/ojAlgo/wiki/v44 With this release the finance related code (org.ojalgo.finance.*) has been moved to its own project/module named ojAlgo-finance. In addition to ojAlgo and ojAlgo-finance there is also ojAlgo-commons-math3 and ojAlgo-unsafe. ojAlgo ojAlgo-finance (Finance domain specific code) ojAlgo-commons-math3 (ojAlgo and Apache Commons Math integration) ojAlgo-unsafe (factories to create off-heap memory based “arrays” that interact with everything in org.ojalgo.array) /Anders http://ojalgo.org |
From: Anders P. <an...@op...> - 2017-09-10 08:15:16
|
The org.ojalgo.finance (sub)packages of ojAlgo have now been moved to ojAlgo-finance. When ojAlgo v44 is released there will also be an ojAlgo-finance v1 release. The code is unchanged. The only difference is that, if you used code from those packages, you should depend on ojAlgo-finance rather than ojAlgo. /Anders > On 18 May 2017, at 09:38, Anders Peterson <an...@op...> wrote: > > Hi, > > > At GitHUb there is now an ojAlgo-finance repository. The plan is that the org.ojalgo.finance (sub)packages of ojAlgo will move to ojAlgo-finance. This will be done before the release of the next major version of ojAlgo (v44). Initially all packages, classes and interfaces will be named exactly as before. The only difference will be that you should depend on ojAlgo-finance rather than ojAlgo. > > https://github.com/optimatika/ojAlgo-finance > > If you currently do not use anything from the org.ojalgo.finance packages this change does not effect you. > > > Further it seems Yahoo deliberately broke downloading historical data (other than from their web site). I’m not sure anything can be done about it. > > > At GitHub there is also a repository named ojAlgo-extensions. It contains several projects with 3:d party extensions to ojAlgo. Some of these projects are already usable, others are just placeholders for some future development. > > ojAlgo-commons-math3 is very useful if you want to work with Apache Commons Math and ojAlgo interchangeably. > > ojAlgo-cplex or ojAlgo-mosek gives you access to top quality commercial optimisation solvers. > > ojAlgo-unsafe gives the org.ojalgo.array data structures off-heap capabilities. > > ojAlgo-jfreechart (JFreeChart) ojAlgo-jxl (Java Excel API) could also be useful. > > https://github.com/optimatika/ojAlgo-extensions > > > /Anders > ------------------------------------------------------------------------------ > Check out the vibrant tech community on one of the world's most > engaging tech sites, Slashdot.org! http://sdm.link/slashdot > _______________________________________________ > ojAlgo-user mailing list > ojA...@li... > https://lists.sourceforge.net/lists/listinfo/ojalgo-user |
From: Anders P. <an...@op...> - 2017-09-02 11:43:06
|
FYI https://github.com/optimatika/ojAlgo/wiki/Sparse-Matrices ojAlgo's sparse capabilities have been greatly improved with some recent updates. > On 29 May 2016, at 23:13, Anders Peterson <an...@op...> wrote: > > I just checked in some changes that may interest you: > > > 1) The multiply-method in MatrixStore > > PhysicalStore<N> multiply(Access1D<N>, PhysicalStore<N>) > > has changed to > > void multiply(Access1D<N>, ElementsConsumer<N>) > > > 2) SparseStore now implements ElementsConsumer > > > Those two changes in combination essentially makes it possible to do what you asked: > > a.fillByMultiplying(Cf.transpose(), Yf)); > > or > > Cf.transpose().multiply(Yf, a); > > > > I have not implemented any new multiplication algorithm, but the existing ones already to some extent exploit sparsity/structures. > > > >> On 22 maj 2016, at 17:04, Anders Peterson <an...@op...> wrote: >> >> ojAlgo does not support that (yet). >> >> >>> On 21 maj 2016, at 16:31, Santiago Peñate Vera <san...@gm...> wrote: >>> >>> Hi, >>> >>> I am starting with OjAlgo and I find that the multiplication of 2 sparse >>> matrices returns a full matrix (or so says netbeans) >>> >>> Here Cf and Yf are sparse matrices and I need their multiplication: >>> >>> SparseStore a = Cf.transpose().multiply(Yf); >>> >>> How do I do a sparse multiplication with OjAlgo? >>> >>> Thanks >>> >>> ------------------------------------------------------------------------------ >>> Mobile security can be enabling, not merely restricting. Employees who >>> bring their own devices (BYOD) to work are irked by the imposition of MDM >>> restrictions. Mobile Device Manager Plus allows you to control only the >>> apps on BYO-devices by containerizing them, leaving personal data untouched! >>> https://ad.doubleclick.net/ddm/clk/304595813;131938128;j >>> _______________________________________________ >>> ojAlgo-user mailing list >>> ojA...@li... >>> https://lists.sourceforge.net/lists/listinfo/ojalgo-user >> >> ------------------------------------------------------------------------------ >> Mobile security can be enabling, not merely restricting. Employees who >> bring their own devices (BYOD) to work are irked by the imposition of MDM >> restrictions. Mobile Device Manager Plus allows you to control only the >> apps on BYO-devices by containerizing them, leaving personal data untouched! >> https://ad.doubleclick.net/ddm/clk/304595813;131938128;j >> _______________________________________________ >> ojAlgo-user mailing list >> ojA...@li... >> https://lists.sourceforge.net/lists/listinfo/ojalgo-user > |
From: Anders P. <an...@op...> - 2017-09-02 11:00:24
|
ojAlgo now has a sparse simplex LP solver. > On 3 Jul 2017, at 22:34, Anders Peterson <an...@op...> wrote: > > I’ve made sure that future versions of ojAlgo will recognise a hardware configuration like that. > > Regarding your LP taking too long - this is not the solution to that. > > The LP solver needs to be rewritten using sparse data structures. That's normally what becomes the bottleneck when scaling up the problem size, but I would think 500 variables should have been ok. > > When ojAlgo’s built in solvers are not enough you can switch to other solvers without changing any code. I believe the community edition of CPLEX allows up to 1000 variables. If you want to try that just follow there instructions: > > https://github.com/optimatika/ojAlgo-extensions/tree/master/ojAlgo-cplex > > > /Anders > > > >> On 3 Jul 2017, at 14:52, Leon Graser via ojAlgo-user <oja...@li...> wrote: >> >> Hey Anders, >> >> my first approach was to use the "Hardware.makeSimple()" call mentioned below. But it did not work the way I expected it to do 😊 >> >> I'm running my optimization on an Intel i5-4670K with 16GB of RAM which I like to make use of. >> >> Best regards, >> Leon >> >> -----Ursprüngliche Nachricht----- >> Von: Anders Peterson [mailto:an...@op...] >> Gesendet: Samstag, 1. Juli 2017 22:29 >> An: Leon Graser <st1...@st...> >> Cc: oja...@li... >> Betreff: Re: [ojAlgo-user] How to set OjAlgoUtils.ENVIRONMENT? >> >> What you see is not an error - it’s just info. >> >> You get that info whenever you “start” ojAlgo and its predefined hardware profiles don’t match. If you reset OjAlgoUtils.ENVIRONMENT that happens after, and there is no need to set it if all you do is a “simple”. >> >> Take a look at the source code of OjAlgoUtils and you should see how it works: >> >> https://github.com/optimatika/ojAlgo/blob/master/src/org/ojalgo/OjAlgoUtils.java >> >> >> What you could do is tell me what kind of cpu and how much ram you have, and I’ll make sure ojAlgo understands that. >> >> >> /Anders >> >> >>> On 1 Jul 2017, at 20:58, Leon Graser via ojAlgo-user <oja...@li...> wrote: >>> >>> Hey, >>> >>> I managed to solve small linear optimization problems using ojAlgo. Unfortunately, for bigger problems of approx. 450 variables and up it takes ages and the memory limits the execution. Hence I increased the memory using the -Xmx JVM argument. But now I get an error stating to modify “OjAlgoUtils.ENVIRONMENT” according to my system. I tried to use “Hardware.makeSimple("x86_64", 17179869184l, 4).virtualise();” but I still receive the very same error. >>> Any hints how to set the environment field correctly? >>> >>> Best regards, >>> Leon >>> ---------------------------------------------------------------------- >>> -------- Check out the vibrant tech community on one of the world's >>> most engaging tech sites, Slashdot.org! >>> http://sdm.link/slashdot______________________________________________ >>> _ >>> ojAlgo-user mailing list >>> ojA...@li... >>> https://lists.sourceforge.net/lists/listinfo/ojalgo-user >> >> >> >> ------------------------------------------------------------------------------ >> Check out the vibrant tech community on one of the world's most >> engaging tech sites, Slashdot.org! http://sdm.link/slashdot >> _______________________________________________ >> ojAlgo-user mailing list >> ojA...@li... >> https://lists.sourceforge.net/lists/listinfo/ojalgo-user > |
From: Anders P. <an...@op...> - 2017-07-03 20:35:01
|
I’ve made sure that future versions of ojAlgo will recognise a hardware configuration like that. Regarding your LP taking too long - this is not the solution to that. The LP solver needs to be rewritten using sparse data structures. That's normally what becomes the bottleneck when scaling up the problem size, but I would think 500 variables should have been ok. When ojAlgo’s built in solvers are not enough you can switch to other solvers without changing any code. I believe the community edition of CPLEX allows up to 1000 variables. If you want to try that just follow there instructions: https://github.com/optimatika/ojAlgo-extensions/tree/master/ojAlgo-cplex /Anders > On 3 Jul 2017, at 14:52, Leon Graser via ojAlgo-user <oja...@li...> wrote: > > Hey Anders, > > my first approach was to use the "Hardware.makeSimple()" call mentioned below. But it did not work the way I expected it to do 😊 > > I'm running my optimization on an Intel i5-4670K with 16GB of RAM which I like to make use of. > > Best regards, > Leon > > -----Ursprüngliche Nachricht----- > Von: Anders Peterson [mailto:an...@op...] > Gesendet: Samstag, 1. Juli 2017 22:29 > An: Leon Graser <st1...@st...> > Cc: oja...@li... > Betreff: Re: [ojAlgo-user] How to set OjAlgoUtils.ENVIRONMENT? > > What you see is not an error - it’s just info. > > You get that info whenever you “start” ojAlgo and its predefined hardware profiles don’t match. If you reset OjAlgoUtils.ENVIRONMENT that happens after, and there is no need to set it if all you do is a “simple”. > > Take a look at the source code of OjAlgoUtils and you should see how it works: > > https://github.com/optimatika/ojAlgo/blob/master/src/org/ojalgo/OjAlgoUtils.java > > > What you could do is tell me what kind of cpu and how much ram you have, and I’ll make sure ojAlgo understands that. > > > /Anders > > >> On 1 Jul 2017, at 20:58, Leon Graser via ojAlgo-user <oja...@li...> wrote: >> >> Hey, >> >> I managed to solve small linear optimization problems using ojAlgo. Unfortunately, for bigger problems of approx. 450 variables and up it takes ages and the memory limits the execution. Hence I increased the memory using the -Xmx JVM argument. But now I get an error stating to modify “OjAlgoUtils.ENVIRONMENT” according to my system. I tried to use “Hardware.makeSimple("x86_64", 17179869184l, 4).virtualise();” but I still receive the very same error. >> Any hints how to set the environment field correctly? >> >> Best regards, >> Leon >> ---------------------------------------------------------------------- >> -------- Check out the vibrant tech community on one of the world's >> most engaging tech sites, Slashdot.org! >> http://sdm.link/slashdot______________________________________________ >> _ >> ojAlgo-user mailing list >> ojA...@li... >> https://lists.sourceforge.net/lists/listinfo/ojalgo-user > > > > ------------------------------------------------------------------------------ > Check out the vibrant tech community on one of the world's most > engaging tech sites, Slashdot.org! http://sdm.link/slashdot > _______________________________________________ > ojAlgo-user mailing list > ojA...@li... > https://lists.sourceforge.net/lists/listinfo/ojalgo-user |
From: Leon G. <st1...@st...> - 2017-07-03 12:52:18
|
Hey Anders, my first approach was to use the "Hardware.makeSimple()" call mentioned below. But it did not work the way I expected it to do 😊 I'm running my optimization on an Intel i5-4670K with 16GB of RAM which I like to make use of. Best regards, Leon -----Ursprüngliche Nachricht----- Von: Anders Peterson [mailto:an...@op...] Gesendet: Samstag, 1. Juli 2017 22:29 An: Leon Graser <st1...@st...> Cc: oja...@li... Betreff: Re: [ojAlgo-user] How to set OjAlgoUtils.ENVIRONMENT? What you see is not an error - it’s just info. You get that info whenever you “start” ojAlgo and its predefined hardware profiles don’t match. If you reset OjAlgoUtils.ENVIRONMENT that happens after, and there is no need to set it if all you do is a “simple”. Take a look at the source code of OjAlgoUtils and you should see how it works: https://github.com/optimatika/ojAlgo/blob/master/src/org/ojalgo/OjAlgoUtils.java What you could do is tell me what kind of cpu and how much ram you have, and I’ll make sure ojAlgo understands that. /Anders > On 1 Jul 2017, at 20:58, Leon Graser via ojAlgo-user <oja...@li...> wrote: > > Hey, > > I managed to solve small linear optimization problems using ojAlgo. Unfortunately, for bigger problems of approx. 450 variables and up it takes ages and the memory limits the execution. Hence I increased the memory using the -Xmx JVM argument. But now I get an error stating to modify “OjAlgoUtils.ENVIRONMENT” according to my system. I tried to use “Hardware.makeSimple("x86_64", 17179869184l, 4).virtualise();” but I still receive the very same error. > Any hints how to set the environment field correctly? > > Best regards, > Leon > ---------------------------------------------------------------------- > -------- Check out the vibrant tech community on one of the world's > most engaging tech sites, Slashdot.org! > http://sdm.link/slashdot______________________________________________ > _ > ojAlgo-user mailing list > ojA...@li... > https://lists.sourceforge.net/lists/listinfo/ojalgo-user |
From: Anders P. <an...@op...> - 2017-07-01 20:28:46
|
What you see is not an error - it’s just info. You get that info whenever you “start” ojAlgo and its predefined hardware profiles don’t match. If you reset OjAlgoUtils.ENVIRONMENT that happens after, and there is no need to set it if all you do is a “simple”. Take a look at the source code of OjAlgoUtils and you should see how it works: https://github.com/optimatika/ojAlgo/blob/master/src/org/ojalgo/OjAlgoUtils.java What you could do is tell me what kind of cpu and how much ram you have, and I’ll make sure ojAlgo understands that. /Anders > On 1 Jul 2017, at 20:58, Leon Graser via ojAlgo-user <oja...@li...> wrote: > > Hey, > > I managed to solve small linear optimization problems using ojAlgo. Unfortunately, for bigger problems of approx. 450 variables and up it takes ages and the memory limits the execution. Hence I increased the memory using the -Xmx JVM argument. But now I get an error stating to modify “OjAlgoUtils.ENVIRONMENT” according to my system. I tried to use “Hardware.makeSimple("x86_64", 17179869184l, 4).virtualise();” but I still receive the very same error. > Any hints how to set the environment field correctly? > > Best regards, > Leon > ------------------------------------------------------------------------------ > Check out the vibrant tech community on one of the world's most > engaging tech sites, Slashdot.org! http://sdm.link/slashdot_______________________________________________ > ojAlgo-user mailing list > ojA...@li... > https://lists.sourceforge.net/lists/listinfo/ojalgo-user |
From: Leon G. <st1...@st...> - 2017-07-01 19:14:41
|
Hey, I managed to solve small linear optimization problems using ojAlgo. Unfortunately, for bigger problems of approx. 450 variables and up it takes ages and the memory limits the execution. Hence I increased the memory using the -Xmx JVM argument. But now I get an error stating to modify "OjAlgoUtils.ENVIRONMENT" according to my system. I tried to use "Hardware.makeSimple("x86_64", 17179869184l, 4).virtualise();" but I still receive the very same error. Any hints how to set the environment field correctly? Best regards, Leon |
From: Anders P. <an...@op...> - 2017-06-19 18:10:56
|
Just committed code that solves the problem with downloading historical financial data from Yahoo. If you want to test it you have to get the latest source code from GitHub. https://github.com/optimatika/ojAlgo /Anders > On 18 May 2017, at 09:38, Anders Peterson <an...@op...> wrote: > > Hi, > > > At GitHUb there is now an ojAlgo-finance repository. The plan is that the org.ojalgo.finance (sub)packages of ojAlgo will move to ojAlgo-finance. This will be done before the release of the next major version of ojAlgo (v44). Initially all packages, classes and interfaces will be named exactly as before. The only difference will be that you should depend on ojAlgo-finance rather than ojAlgo. > > https://github.com/optimatika/ojAlgo-finance > > If you currently do not use anything from the org.ojalgo.finance packages this change does not effect you. > > > Further it seems Yahoo deliberately broke downloading historical data (other than from their web site). I’m not sure anything can be done about it. > > > At GitHub there is also a repository named ojAlgo-extensions. It contains several projects with 3:d party extensions to ojAlgo. Some of these projects are already usable, others are just placeholders for some future development. > > ojAlgo-commons-math3 is very useful if you want to work with Apache Commons Math and ojAlgo interchangeably. > > ojAlgo-cplex or ojAlgo-mosek gives you access to top quality commercial optimisation solvers. > > ojAlgo-unsafe gives the org.ojalgo.array data structures off-heap capabilities. > > ojAlgo-jfreechart (JFreeChart) ojAlgo-jxl (Java Excel API) could also be useful. > > https://github.com/optimatika/ojAlgo-extensions > > > /Anders |
From: Anders P. <an...@op...> - 2017-05-21 19:52:24
|
You have to call some method that will trigger the calculation (any method that requires the calculation results) before you check the optimisation state. Regarding your test code: It’s the magnitude of the risk aversion factor that matters. Use a logarithmic scale and try the values: 0.01, 0.1, 1, 10.0, 100.0, 1000.0 /Anders > On 21 May 2017, at 16:16, yifa wang <fag...@ho...> wrote: > > I get the state as "UNEXPLORED", when I tried to simulate with 50 assets with random return. May I know why is that? How to get optimal for this problem? Thanks. > > public double[][] genRtns(int assetNum){ > double[][] assets_return = new double[assetNum][days]; > > for(int i=0;i<assetNum;i++){ > for(int j=0;j<days;j++){ > assets_return[i][j] = getRand(); > } > } > return assets_return; > } > > private double getRand(){ > return (-3+6*Math.random())/100; > } > > public void myTest() { > //org.ojalgo.matrix.MatrixUtils.setAllOperationThresholds(5); > final int assetNum = 50; > double[][] assets_return = genRtns(assetNum); > double[][] cov = getCovariance(assets_return); > double[][] avgRtns = getAvgRtns(assets_return); > > //final BasicMatrix avgRtns = tm.getExpectedExcessReturns(assets_return); > //System.out.println("Rows:"+avgRtns.rows()); > //final BasicMatrix expectedExcessReturns = tm.getExpectedExcessReturns(assets_return); // Why not negate? > //final BigDecimal riskAversion = new BigDecimal(1.0); > > MarketEquilibrium marketEquilibrium = new MarketEquilibrium(PrimitiveMatrix.FACTORY.rows(cov)); > marketEquilibrium.clean(); > > final MarkowitzModel markowitzModel = new MarkowitzModel(marketEquilibrium, > PrimitiveMatrix.FACTORY.rows(avgRtns)); > markowitzModel.setShortingAllowed(false); > > for (int i = 0; i < assetNum; i++) { > markowitzModel.setLowerLimit(i, new BigDecimal(0.0)); > markowitzModel.setUpperLimit(i, new BigDecimal(1.0)); > } > > > for (double i = 0; i < 1000; i=i+1) { // Some different risk aversion factors > markowitzModel.setRiskAversion(new BigDecimal(i)); > > //System.out.println("OptimisationState:"+markowitzModel.optimiser().getState()); > System.out.println((i)+"\t"+markowitzModel.optimiser().getState()+"\t"+markowitzModel.getMeanReturn()+"\t"+markowitzModel.getReturnVariance()+"\t"+markowitzModel.getSharpeRatio()); > } > } > > 发件人: yifa wang <fag...@ho...> > 发送时间: 2017年5月9日 下午 11:15:36 > 收件人: oja...@li... > 主题: [ojAlgo-user] 答复: Report A Bug Of ojalgo finace library > > hi, > > I try to use ojalgo to do a portfolio optimization. The target is find an efficient frontier for 15 securities or more. I generate random returns for simulation. However, when I run the program, I get the state as "UNEXPLORED". Usually, we get OPTIMAL. What does this mean? Is it possible to get the optimal weight for more than 50 securities? > > Thanks. > Jerry > > > > > 发件人: lvz...@gt... <lvz...@gt...> > 发送时间: 2017年5月8日 下午 8:20:21 > 收件人: oja...@li... > 主题: [ojAlgo-user] Report A Bug Of ojalgo finace library > > > Hi, > I have a problem when calculate best invest group by using markowitzModel in ojalgo with code below(for test); > > > > > for(int j = 0; j < 100; j ++) > { Builder<PrimitiveMatrix> tmpBuilder = PrimitiveMatrix.FACTORY.getBuilder(2, 2); > tmpBuilder.add(0, 0, 0.040000); > tmpBuilder.add(0, 1, 0.1000); > tmpBuilder.add(1, 0, 0.1000); > tmpBuilder.add(1, 1, 0.250000); > BasicMatrix covariances = tmpBuilder.build(); > tmpBuilder = PrimitiveMatrix.FACTORY.getBuilder(2); > tmpBuilder.add(0, 0.20000); > tmpBuilder.add(1, 0.40000); > BasicMatrix expectedExcessReturns = tmpBuilder.build(); > > MarketEquilibrium equilibrium = new MarketEquilibrium(covariances); > MarkowitzModel markowitzModel = new MarkowitzModel(equilibrium, expectedExcessReturns); > markowitzModel.setShortingAllowed(false); > // markowitzModel.optimiser().validate(true); > markowitzModel.setTargetReturn(new BigDecimal(0.2 + (0.002 * j))); > for (int i = 0; i < 2; i++) { > markowitzModel.setLowerLimit(i, new BigDecimal(0.00000)); > markowitzModel.setUpperLimit(i, new BigDecimal(1.00000)); > } > System.out.println(0.2 + (0.002 * j) + "," + markowitzModel.getReturnVariance() + " , " + markowitzModel.getMeanReturn() + "," + markowitzModel.getWeights()); > > > } > > > when TargetReturn equal to 0.206,Variance equal to 0.04 , weights equal to [1.0, 0.0] > when TargetReturn equal to 0.208, Variance equal to 0.25,weights equal to [0.0, 1.0] > Below Relationship of TargetReturn And Target Variance(Y-Axis TargetReturn,X-AXis standard deviation) > > > > 吕子锋 > > ------------------------------------------------------------------------------ > Check out the vibrant tech community on one of the world's most > engaging tech sites, Slashdot.org! http://sdm.link/slashdot_______________________________________________ > ojAlgo-user mailing list > ojA...@li... > https://lists.sourceforge.net/lists/listinfo/ojalgo-user |
From: yifa w. <fag...@ho...> - 2017-05-21 14:17:01
|
I get the state as "UNEXPLORED", when I tried to simulate with 50 assets with random return. May I know why is that? How to get optimal for this problem? Thanks. public double[][] genRtns(int assetNum){ double[][] assets_return = new double[assetNum][days]; for(int i=0;i<assetNum;i++){ for(int j=0;j<days;j++){ assets_return[i][j] = getRand(); } } return assets_return; } private double getRand(){ return (-3+6*Math.random())/100; } public void myTest() { //org.ojalgo.matrix.MatrixUtils.setAllOperationThresholds(5); final int assetNum = 50; double[][] assets_return = genRtns(assetNum); double[][] cov = getCovariance(assets_return); double[][] avgRtns = getAvgRtns(assets_return); //final BasicMatrix avgRtns = tm.getExpectedExcessReturns(assets_return); //System.out.println("Rows:"+avgRtns.rows()); //final BasicMatrix expectedExcessReturns = tm.getExpectedExcessReturns(assets_return); // Why not negate? //final BigDecimal riskAversion = new BigDecimal(1.0); MarketEquilibrium marketEquilibrium = new MarketEquilibrium(PrimitiveMatrix.FACTORY.rows(cov)); marketEquilibrium.clean(); final MarkowitzModel markowitzModel = new MarkowitzModel(marketEquilibrium, PrimitiveMatrix.FACTORY.rows(avgRtns)); markowitzModel.setShortingAllowed(false); for (int i = 0; i < assetNum; i++) { markowitzModel.setLowerLimit(i, new BigDecimal(0.0)); markowitzModel.setUpperLimit(i, new BigDecimal(1.0)); } for (double i = 0; i < 1000; i=i+1) { // Some different risk aversion factors markowitzModel.setRiskAversion(new BigDecimal(i)); //System.out.println("OptimisationState:"+markowitzModel.optimiser().getState()); System.out.println((i)+"\t"+markowitzModel.optimiser().getState()+"\t"+markowitzModel.getMeanReturn()+"\t"+markowitzModel.getReturnVariance()+"\t"+markowitzModel.getSharpeRatio()); } } ________________________________ 发件人: yifa wang <fag...@ho...> 发送时间: 2017年5月9日 下午 11:15:36 收件人: oja...@li... 主题: [ojAlgo-user] 答复: Report A Bug Of ojalgo finace library hi, I try to use ojalgo to do a portfolio optimization. The target is find an efficient frontier for 15 securities or more. I generate random returns for simulation. However, when I run the program, I get the state as "UNEXPLORED". Usually, we get OPTIMAL. What does this mean? Is it possible to get the optimal weight for more than 50 securities? Thanks. Jerry ________________________________ 发件人: lvz...@gt... <lvz...@gt...> 发送时间: 2017年5月8日 下午 8:20:21 收件人: oja...@li... 主题: [ojAlgo-user] Report A Bug Of ojalgo finace library Hi, I have a problem when calculate best invest group by using markowitzModel in ojalgo with code below(for test); for(int j = 0; j < 100; j ++) { Builder<PrimitiveMatrix> tmpBuilder = PrimitiveMatrix.FACTORY.getBuilder(2, 2); tmpBuilder.add(0, 0, 0.040000); tmpBuilder.add(0, 1, 0.1000); tmpBuilder.add(1, 0, 0.1000); tmpBuilder.add(1, 1, 0.250000); BasicMatrix covariances = tmpBuilder.build(); tmpBuilder = PrimitiveMatrix.FACTORY.getBuilder(2); tmpBuilder.add(0, 0.20000); tmpBuilder.add(1, 0.40000); BasicMatrix expectedExcessReturns = tmpBuilder.build(); MarketEquilibrium equilibrium = new MarketEquilibrium(covariances); MarkowitzModel markowitzModel = new MarkowitzModel(equilibrium, expectedExcessReturns); markowitzModel.setShortingAllowed(false); // markowitzModel.optimiser().validate(true); markowitzModel.setTargetReturn(new BigDecimal(0.2 + (0.002 * j))); for (int i = 0; i < 2; i++) { markowitzModel.setLowerLimit(i, new BigDecimal(0.00000)); markowitzModel.setUpperLimit(i, new BigDecimal(1.00000)); } System.out.println(0.2 + (0.002 * j) + "," + markowitzModel.getReturnVariance() + " , " + markowitzModel.getMeanReturn() + "," + markowitzModel.getWeights()); } when TargetReturn equal to 0.206,Variance equal to 0.04 , weights equal to [1.0, 0.0] when TargetReturn equal to 0.208, Variance equal to 0.25,weights equal to [0.0, 1.0] Below Relationship of TargetReturn And Target Variance(Y-Axis TargetReturn,X-AXis standard deviation) 吕子锋 |
From: Vincent de C. C. <dec...@ya...> - 2017-05-18 12:40:07
|
Thank You for the tireless work Anders! Le Jeudi 18 mai 2017 8h02, "oja...@li..." <oja...@li...> a écrit : Send ojAlgo-user mailing list submissions to oja...@li... To subscribe or unsubscribe via the World Wide Web, visit https://lists.sourceforge.net/lists/listinfo/ojalgo-user or, via email, send a message with subject or body 'help' to oja...@li... You can reach the person managing the list at oja...@li... When replying, please edit your Subject line so it is more specific than "Re: Contents of ojAlgo-user digest..." Today's Topics: 1. ojAlgo-finance (Anders Peterson) ---------------------------------------------------------------------- Message: 1 Date: Thu, 18 May 2017 09:38:15 +0200 From: Anders Peterson <an...@op...> Subject: [ojAlgo-user] ojAlgo-finance To: oj! Algorithms <oja...@li...> Message-ID: <D59...@op...> Content-Type: text/plain; charset=utf-8 Hi, At GitHUb there is now an ojAlgo-finance repository. The plan is that the org.ojalgo.finance (sub)packages of ojAlgo will move to ojAlgo-finance. This will be done before the release of the next major version of ojAlgo (v44). Initially all packages, classes and interfaces will be named exactly as before. The only difference will be that you should depend on ojAlgo-finance rather than ojAlgo. https://github.com/optimatika/ojAlgo-finance If you currently do not use anything from the org.ojalgo.finance packages this change does not effect you. Further it seems Yahoo deliberately broke downloading historical data (other than from their web site). I?m not sure anything can be done about it. At GitHub there is also a repository named ojAlgo-extensions. It contains several projects with 3:d party extensions to ojAlgo. Some of these projects are already usable, others are just placeholders for some future development. ojAlgo-commons-math3 is very useful if you want to work with Apache Commons Math and ojAlgo interchangeably. ojAlgo-cplex or ojAlgo-mosek gives you access to top quality commercial optimisation solvers. ojAlgo-unsafe gives the org.ojalgo.array data structures off-heap capabilities. ojAlgo-jfreechart (JFreeChart) ojAlgo-jxl (Java Excel API) could also be useful. https://github.com/optimatika/ojAlgo-extensions /Anders ------------------------------ ------------------------------------------------------------------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, Slashdot.org! http://sdm.link/slashdot ------------------------------ _______________________________________________ ojAlgo-user mailing list ojA...@li... https://lists.sourceforge.net/lists/listinfo/ojalgo-user End of ojAlgo-user Digest, Vol 79, Issue 7 ****************************************** |
From: Anders P. <an...@op...> - 2017-05-18 07:38:29
|
Hi, At GitHUb there is now an ojAlgo-finance repository. The plan is that the org.ojalgo.finance (sub)packages of ojAlgo will move to ojAlgo-finance. This will be done before the release of the next major version of ojAlgo (v44). Initially all packages, classes and interfaces will be named exactly as before. The only difference will be that you should depend on ojAlgo-finance rather than ojAlgo. https://github.com/optimatika/ojAlgo-finance If you currently do not use anything from the org.ojalgo.finance packages this change does not effect you. Further it seems Yahoo deliberately broke downloading historical data (other than from their web site). I’m not sure anything can be done about it. At GitHub there is also a repository named ojAlgo-extensions. It contains several projects with 3:d party extensions to ojAlgo. Some of these projects are already usable, others are just placeholders for some future development. ojAlgo-commons-math3 is very useful if you want to work with Apache Commons Math and ojAlgo interchangeably. ojAlgo-cplex or ojAlgo-mosek gives you access to top quality commercial optimisation solvers. ojAlgo-unsafe gives the org.ojalgo.array data structures off-heap capabilities. ojAlgo-jfreechart (JFreeChart) ojAlgo-jxl (Java Excel API) could also be useful. https://github.com/optimatika/ojAlgo-extensions /Anders |
From: Anders P. <an...@op...> - 2017-05-14 09:51:22
|
I identified the problem and have a fix. Will check in the code changes in a day or two, and most likely upload a new release within a couple of weeks. /Anders > On 8 May 2017, at 14:20, lvz...@gt... wrote: > > > Hi, > I have a problem when calculate best invest group by using markowitzModel in ojalgo with code below(for test); > > > > > for(int j = 0; j < 100; j ++) > { Builder<PrimitiveMatrix> tmpBuilder = PrimitiveMatrix.FACTORY.getBuilder(2, 2); > tmpBuilder.add(0, 0, 0.040000); > tmpBuilder.add(0, 1, 0.1000); > tmpBuilder.add(1, 0, 0.1000); > tmpBuilder.add(1, 1, 0.250000); > BasicMatrix covariances = tmpBuilder.build(); > tmpBuilder = PrimitiveMatrix.FACTORY.getBuilder(2); > tmpBuilder.add(0, 0.20000); > tmpBuilder.add(1, 0.40000); > BasicMatrix expectedExcessReturns = tmpBuilder.build(); > > MarketEquilibrium equilibrium = new MarketEquilibrium(covariances); > MarkowitzModel markowitzModel = new MarkowitzModel(equilibrium, expectedExcessReturns); > markowitzModel.setShortingAllowed(false); > // markowitzModel.optimiser().validate(true); > markowitzModel.setTargetReturn(new BigDecimal(0.2 + (0.002 * j))); > for (int i = 0; i < 2; i++) { > markowitzModel.setLowerLimit(i, new BigDecimal(0.00000)); > markowitzModel.setUpperLimit(i, new BigDecimal(1.00000)); > } > System.out.println(0.2 + (0.002 * j) + "," + markowitzModel.getReturnVariance() + " , " + markowitzModel.getMeanReturn() + "," + markowitzModel.getWeights()); > > > } > > > when TargetReturn equal to 0.206,Variance equal to 0.04 , weights equal to [1.0, 0.0] > when TargetReturn equal to 0.208, Variance equal to 0.25,weights equal to [0.0, 1.0] > Below Relationship of TargetReturn And Target Variance(Y-Axis TargetReturn,X-AXis standard deviation) > > > > 吕子锋 > > <1.jpg>------------------------------------------------------------------------------ > Check out the vibrant tech community on one of the world's most > engaging tech sites, Slashdot.org! http://sdm.link/slashdot_______________________________________________ > ojAlgo-user mailing list > ojA...@li... > https://lists.sourceforge.net/lists/listinfo/ojalgo-user |
From: Anders P. <an...@op...> - 2017-05-11 06:27:09
|
Think of it this way. The optimisation algorithm tries to maximise expected return and minimise variance and the same time - there are 2 terms in the optimisation objective function. To balance those 2 terms they need to be weighted somehow. The risk aversion factor/parameter scales the variance term to match the return term. For a more theoretical explanation you may read Appendix 2 of this document: http://kth.diva-portal.org/smash/get/diva2:10311/FULLTEXT01 /Anders > On 11 May 2017, at 02:46, lvz...@gt... wrote: > > > Hi, > What is the definition of risk aversion factor? > > Lvzifeng > > > > oja...@li... > 2017/05/10 20:05 > 请答复 给 > oja...@li... > > 收件人 > oja...@li... > 抄送 > 主题 > ojAlgo-user Digest, Vol 79, Issue 3 > > > > > > Send ojAlgo-user mailing list submissions to > oja...@li... > > To subscribe or unsubscribe via the World Wide Web, visit > https://lists.sourceforge.net/lists/listinfo/ojalgo-user > or, via email, send a message with subject or body 'help' to > oja...@li... > > You can reach the person managing the list at > oja...@li... > > When replying, please edit your Subject line so it is more specific > than "Re: Contents of ojAlgo-user digest..." > > > Today's Topics: > > 1. ??: Report A Bug Of ojalgo finace library (yifa wang) > 2. Re: ??: Report A Bug Of ojalgo finace library (Anders Peterson) > 3. Re: Report A Bug Of ojalgo finace library (Anders Peterson) > > > ---------------------------------------------------------------------- > > Message: 1 > Date: Tue, 9 May 2017 15:15:36 +0000 > From: yifa wang <fag...@ho...> > Subject: [ojAlgo-user] ??: Report A Bug Of ojalgo finace library > To: "oja...@li..." > <oja...@li...> > Message-ID: > <SG2PR06MB0998FA369297C4D581131487F4EF0@SG2PR06MB0998.apcprd06.prod.outlook.com> > > Content-Type: text/plain; charset="gb2312" > > hi, > > > I try to use ojalgo to do a portfolio optimization. The target is find an efficient frontier for 15 securities or more. I generate random returns for simulation. However, when I run the program, I get the state as "UNEXPLORED". Usually, we get OPTIMAL. What does this mean? Is it possible to get the optimal weight for more than 50 securities? > > > Thanks. > > Jerry > > > > > > ________________________________ > ???: lvz...@gt... <lvz...@gt...> > ????: 2017?5?8? ?? 8:20:21 > ???: oja...@li... > ??: [ojAlgo-user] Report A Bug Of ojalgo finace library > > > Hi, > I have a problem when calculate best invest group by using markowitzModel in ojalgo with code below(for test); > > > > > for(int j = 0; j < 100; j ++) > { Builder<PrimitiveMatrix> tmpBuilder = PrimitiveMatrix.FACTORY.getBuilder(2, 2); > tmpBuilder.add(0, 0, 0.040000); > tmpBuilder.add(0, 1, 0.1000); > tmpBuilder.add(1, 0, 0.1000); > tmpBuilder.add(1, 1, 0.250000); > BasicMatrix covariances = tmpBuilder.build(); > tmpBuilder = PrimitiveMatrix.FACTORY.getBuilder(2); > tmpBuilder.add(0, 0.20000); > tmpBuilder.add(1, 0.40000); > BasicMatrix expectedExcessReturns = tmpBuilder.build(); > > MarketEquilibrium equilibrium = new MarketEquilibrium(covariances); > MarkowitzModel markowitzModel = new MarkowitzModel(equilibrium, expectedExcessReturns); > markowitzModel.setShortingAllowed(false); > // markowitzModel.optimiser().validate(true); > markowitzModel.setTargetReturn(new BigDecimal(0.2 + (0.002 * j))); > for (int i = 0; i < 2; i++) { > markowitzModel.setLowerLimit(i, new BigDecimal(0.00000)); > markowitzModel.setUpperLimit(i, new BigDecimal(1.00000)); > } > System.out.println(0.2 + (0.002 * j) + "," + markowitzModel.getReturnVariance() + " , " + markowitzModel.getMeanReturn() + "," + markowitzModel.getWeights()); > > > } > > > when TargetReturn equal to 0.206,Variance equal to 0.04 , weights equal to [1.0, 0.0] > when TargetReturn equal to 0.208, Variance equal to 0.25,weights equal to [0.0, 1.0] > Below Relationship of TargetReturn And Target Variance?Y-Axis TargetReturn,X-AXis standard deviation? > > > > ??? > > -------------- next part -------------- > An HTML attachment was scrubbed... > > ------------------------------ > > Message: 2 > Date: Tue, 9 May 2017 22:34:46 +0200 > From: Anders Peterson <an...@op...> > Subject: Re: [ojAlgo-user] ??: Report A Bug Of ojalgo finace library > To: oja...@li... > Message-ID: <9FD...@op...> > Content-Type: text/plain; charset=utf-8 > > UNEXPLORED would mean the optimisation has not been executed (since you last modified the model). How did you get that? > > /Anders > > > > > > On 9 May 2017, at 17:15, yifa wang <fag...@ho...> wrote: > > > > hi, > > > > I try to use ojalgo to do a portfolio optimization. The target is find an efficient frontier for 15 securities or more. I generate random returns for simulation. However, when I run the program, I get the state as "UNEXPLORED". Usually, we get OPTIMAL. What does this mean? Is it possible to get the optimal weight for more than 50 securities? > > > > Thanks. > > Jerry > > > > > > > > > > ???: lvz...@gt... <lvz...@gt...> > > ????: 2017?5?8? ?? 8:20:21 > > ???: oja...@li... > > ??: [ojAlgo-user] Report A Bug Of ojalgo finace library > > > > > > Hi, > > I have a problem when calculate best invest group by using markowitzModel in ojalgo with code below(for test); > > > > > > > > > > for(int j = 0; j < 100; j ++) > > { Builder<PrimitiveMatrix> tmpBuilder = PrimitiveMatrix.FACTORY.getBuilder(2, 2); > > tmpBuilder.add(0, 0, 0.040000); > > tmpBuilder.add(0, 1, 0.1000); > > tmpBuilder.add(1, 0, 0.1000); > > tmpBuilder.add(1, 1, 0.250000); > > BasicMatrix covariances = tmpBuilder.build(); > > tmpBuilder = PrimitiveMatrix.FACTORY.getBuilder(2); > > tmpBuilder.add(0, 0.20000); > > tmpBuilder.add(1, 0.40000); > > BasicMatrix expectedExcessReturns = tmpBuilder.build(); > > > > MarketEquilibrium equilibrium = new MarketEquilibrium(covariances); > > MarkowitzModel markowitzModel = new MarkowitzModel(equilibrium, expectedExcessReturns); > > markowitzModel.setShortingAllowed(false); > > // markowitzModel.optimiser().validate(true); > > markowitzModel.setTargetReturn(new BigDecimal(0.2 + (0.002 * j))); > > for (int i = 0; i < 2; i++) { > > markowitzModel.setLowerLimit(i, new BigDecimal(0.00000)); > > markowitzModel.setUpperLimit(i, new BigDecimal(1.00000)); > > } > > System.out.println(0.2 + (0.002 * j) + "," + markowitzModel.getReturnVariance() + " , " + markowitzModel.getMeanReturn() + "," + markowitzModel.getWeights()); > > > > > > } > > > > > > when TargetReturn equal to 0.206,Variance equal to 0.04 , weights equal to [1.0, 0.0] > > when TargetReturn equal to 0.208, Variance equal to 0.25,weights equal to [0.0, 1.0] > > Below Relationship of TargetReturn And Target Variance?Y-Axis TargetReturn,X-AXis standard deviation? > > > > > > > > ??? > > > > ------------------------------------------------------------------------------ > > Check out the vibrant tech community on one of the world's most > > engaging tech sites, Slashdot.org! http://sdm.link/slashdot_______________________________________________ > > ojAlgo-user mailing list > > ojA...@li... > > https://lists.sourceforge.net/lists/listinfo/ojalgo-user > > > > > ------------------------------ > > Message: 3 > Date: Tue, 9 May 2017 23:32:47 +0200 > From: Anders Peterson <an...@op...> > Subject: Re: [ojAlgo-user] Report A Bug Of ojalgo finace library > To: oja...@li... > Message-ID: <A20...@op...> > Content-Type: text/plain; charset=utf-8 > > Haven?t fully understood yet why that small/simple model is so problematic. The covariance matrix is not positive definite, Strictly speaking it needs to be, but most of the time semidefinite is ok. > > Setting a target return or variance is not the best way to use ojAlgo?s MarkowitzModel class. Work directly with the risk aversion factor instead. > > If what you want to do is to calculate the efficient frontier then it?s better to use the EfficientFrontier class rather than the MarkowitzModel class. > > /Anders > > > > On 8 May 2017, at 14:20, lvz...@gt... wrote: > > > > > > Hi, > > I have a problem when calculate best invest group by using markowitzModel in ojalgo with code below(for test); > > > > > > > > > > for(int j = 0; j < 100; j ++) > > { Builder<PrimitiveMatrix> tmpBuilder = PrimitiveMatrix.FACTORY.getBuilder(2, 2); > > tmpBuilder.add(0, 0, 0.040000); > > tmpBuilder.add(0, 1, 0.1000); > > tmpBuilder.add(1, 0, 0.1000); > > tmpBuilder.add(1, 1, 0.250000); > > BasicMatrix covariances = tmpBuilder.build(); > > tmpBuilder = PrimitiveMatrix.FACTORY.getBuilder(2); > > tmpBuilder.add(0, 0.20000); > > tmpBuilder.add(1, 0.40000); > > BasicMatrix expectedExcessReturns = tmpBuilder.build(); > > > > MarketEquilibrium equilibrium = new MarketEquilibrium(covariances); > > MarkowitzModel markowitzModel = new MarkowitzModel(equilibrium, expectedExcessReturns); > > markowitzModel.setShortingAllowed(false); > > // markowitzModel.optimiser().validate(true); > > markowitzModel.setTargetReturn(new BigDecimal(0.2 + (0.002 * j))); > > for (int i = 0; i < 2; i++) { > > markowitzModel.setLowerLimit(i, new BigDecimal(0.00000)); > > markowitzModel.setUpperLimit(i, new BigDecimal(1.00000)); > > } > > System.out.println(0.2 + (0.002 * j) + "," + markowitzModel.getReturnVariance() + " , " + markowitzModel.getMeanReturn() + "," + markowitzModel.getWeights()); > > > > > > } > > > > > > when TargetReturn equal to 0.206,Variance equal to 0.04 , weights equal to [1.0, 0.0] > > when TargetReturn equal to 0.208, Variance equal to 0.25,weights equal to [0.0, 1.0] > > Below Relationship of TargetReturn And Target Variance?Y-Axis TargetReturn,X-AXis standard deviation? > > > > > > > > ??? > > > > <1.jpg>------------------------------------------------------------------------------ > > Check out the vibrant tech community on one of the world's most > > engaging tech sites, Slashdot.org! http://sdm.link/slashdot_______________________________________________ > > ojAlgo-user mailing list > > ojA...@li... > > https://lists.sourceforge.net/lists/listinfo/ojalgo-user > > > > > ------------------------------ > > ------------------------------------------------------------------------------ > Check out the vibrant tech community on one of the world's most > engaging tech sites, Slashdot.org! http://sdm.link/slashdot > > ------------------------------ > > _______________________________________________ > ojAlgo-user mailing list > ojA...@li... > https://lists.sourceforge.net/lists/listinfo/ojalgo-user > > > End of ojAlgo-user Digest, Vol 79, Issue 3 > ****************************************** > > ------------------------------------------------------------------------------ > Check out the vibrant tech community on one of the world's most > engaging tech sites, Slashdot.org! http://sdm.link/slashdot_______________________________________________ > ojAlgo-user mailing list > ojA...@li... > https://lists.sourceforge.net/lists/listinfo/ojalgo-user |
From: <lvz...@gt...> - 2017-05-11 00:46:55
|
Hi, What is the definition of risk aversion factor? Lvzifeng oja...@li... 2017/05/10 20:05 请答复 给 oja...@li... 收件人 oja...@li... 抄送 主题 ojAlgo-user Digest, Vol 79, Issue 3 Send ojAlgo-user mailing list submissions to oja...@li... To subscribe or unsubscribe via the World Wide Web, visit https://lists.sourceforge.net/lists/listinfo/ojalgo-user or, via email, send a message with subject or body 'help' to oja...@li... You can reach the person managing the list at oja...@li... When replying, please edit your Subject line so it is more specific than "Re: Contents of ojAlgo-user digest..." Today's Topics: 1. ??: Report A Bug Of ojalgo finace library (yifa wang) 2. Re: ??: Report A Bug Of ojalgo finace library (Anders Peterson) 3. Re: Report A Bug Of ojalgo finace library (Anders Peterson) ---------------------------------------------------------------------- Message: 1 Date: Tue, 9 May 2017 15:15:36 +0000 From: yifa wang <fag...@ho...> Subject: [ojAlgo-user] ??: Report A Bug Of ojalgo finace library To: "oja...@li..." <oja...@li...> Message-ID: <SG2PR06MB0998FA369297C4D581131487F4EF0@SG2PR06MB0998.apcprd06.prod.outlook.com> Content-Type: text/plain; charset="gb2312" hi, I try to use ojalgo to do a portfolio optimization. The target is find an efficient frontier for 15 securities or more. I generate random returns for simulation. However, when I run the program, I get the state as "UNEXPLORED". Usually, we get OPTIMAL. What does this mean? Is it possible to get the optimal weight for more than 50 securities? Thanks. Jerry ________________________________ ???: lvz...@gt... <lvz...@gt...> ????: 2017?5?8? ?? 8:20:21 ???: oja...@li... ??: [ojAlgo-user] Report A Bug Of ojalgo finace library Hi, I have a problem when calculate best invest group by using markowitzModel in ojalgo with code below(for test); for(int j = 0; j < 100; j ++) { Builder<PrimitiveMatrix> tmpBuilder = PrimitiveMatrix.FACTORY.getBuilder(2, 2); tmpBuilder.add(0, 0, 0.040000); tmpBuilder.add(0, 1, 0.1000); tmpBuilder.add(1, 0, 0.1000); tmpBuilder.add(1, 1, 0.250000); BasicMatrix covariances = tmpBuilder.build(); tmpBuilder = PrimitiveMatrix.FACTORY.getBuilder(2); tmpBuilder.add(0, 0.20000); tmpBuilder.add(1, 0.40000); BasicMatrix expectedExcessReturns = tmpBuilder.build(); MarketEquilibrium equilibrium = new MarketEquilibrium(covariances); MarkowitzModel markowitzModel = new MarkowitzModel(equilibrium, expectedExcessReturns); markowitzModel.setShortingAllowed(false); // markowitzModel.optimiser().validate(true); markowitzModel.setTargetReturn(new BigDecimal(0.2 + (0.002 * j))); for (int i = 0; i < 2; i++) { markowitzModel.setLowerLimit(i, new BigDecimal(0.00000)); markowitzModel.setUpperLimit(i, new BigDecimal(1.00000)); } System.out.println(0.2 + (0.002 * j) + "," + markowitzModel.getReturnVariance() + " , " + markowitzModel.getMeanReturn() + "," + markowitzModel.getWeights()); } when TargetReturn equal to 0.206,Variance equal to 0.04 , weights equal to [1.0, 0.0] when TargetReturn equal to 0.208, Variance equal to 0.25,weights equal to [0.0, 1.0] Below Relationship of TargetReturn And Target Variance?Y-Axis TargetReturn,X-AXis standard deviation? ??? -------------- next part -------------- An HTML attachment was scrubbed... ------------------------------ Message: 2 Date: Tue, 9 May 2017 22:34:46 +0200 From: Anders Peterson <an...@op...> Subject: Re: [ojAlgo-user] ??: Report A Bug Of ojalgo finace library To: oja...@li... Message-ID: <9FD...@op...> Content-Type: text/plain; charset=utf-8 UNEXPLORED would mean the optimisation has not been executed (since you last modified the model). How did you get that? /Anders > On 9 May 2017, at 17:15, yifa wang <fag...@ho...> wrote: > > hi, > > I try to use ojalgo to do a portfolio optimization. The target is find an efficient frontier for 15 securities or more. I generate random returns for simulation. However, when I run the program, I get the state as "UNEXPLORED". Usually, we get OPTIMAL. What does this mean? Is it possible to get the optimal weight for more than 50 securities? > > Thanks. > Jerry > > > > > ???: lvz...@gt... <lvz...@gt...> > ????: 2017?5?8? ?? 8:20:21 > ???: oja...@li... > ??: [ojAlgo-user] Report A Bug Of ojalgo finace library > > > Hi, > I have a problem when calculate best invest group by using markowitzModel in ojalgo with code below(for test); > > > > > for(int j = 0; j < 100; j ++) > { Builder<PrimitiveMatrix> tmpBuilder = PrimitiveMatrix.FACTORY.getBuilder(2, 2); > tmpBuilder.add(0, 0, 0.040000); > tmpBuilder.add(0, 1, 0.1000); > tmpBuilder.add(1, 0, 0.1000); > tmpBuilder.add(1, 1, 0.250000); > BasicMatrix covariances = tmpBuilder.build(); > tmpBuilder = PrimitiveMatrix.FACTORY.getBuilder(2); > tmpBuilder.add(0, 0.20000); > tmpBuilder.add(1, 0.40000); > BasicMatrix expectedExcessReturns = tmpBuilder.build(); > > MarketEquilibrium equilibrium = new MarketEquilibrium(covariances); > MarkowitzModel markowitzModel = new MarkowitzModel(equilibrium, expectedExcessReturns); > markowitzModel.setShortingAllowed(false); > // markowitzModel.optimiser().validate(true); > markowitzModel.setTargetReturn(new BigDecimal(0.2 + (0.002 * j))); > for (int i = 0; i < 2; i++) { > markowitzModel.setLowerLimit(i, new BigDecimal(0.00000)); > markowitzModel.setUpperLimit(i, new BigDecimal(1.00000)); > } > System.out.println(0.2 + (0.002 * j) + "," + markowitzModel.getReturnVariance() + " , " + markowitzModel.getMeanReturn() + "," + markowitzModel.getWeights()); > > > } > > > when TargetReturn equal to 0.206,Variance equal to 0.04 , weights equal to [1.0, 0.0] > when TargetReturn equal to 0.208, Variance equal to 0.25,weights equal to [0.0, 1.0] > Below Relationship of TargetReturn And Target Variance?Y-Axis TargetReturn,X-AXis standard deviation? > > > > ??? > > ------------------------------------------------------------------------------ > Check out the vibrant tech community on one of the world's most > engaging tech sites, Slashdot.org! http://sdm.link/slashdot_______________________________________________ > ojAlgo-user mailing list > ojA...@li... > https://lists.sourceforge.net/lists/listinfo/ojalgo-user ------------------------------ Message: 3 Date: Tue, 9 May 2017 23:32:47 +0200 From: Anders Peterson <an...@op...> Subject: Re: [ojAlgo-user] Report A Bug Of ojalgo finace library To: oja...@li... Message-ID: <A20...@op...> Content-Type: text/plain; charset=utf-8 Haven?t fully understood yet why that small/simple model is so problematic. The covariance matrix is not positive definite, Strictly speaking it needs to be, but most of the time semidefinite is ok. Setting a target return or variance is not the best way to use ojAlgo?s MarkowitzModel class. Work directly with the risk aversion factor instead. If what you want to do is to calculate the efficient frontier then it?s better to use the EfficientFrontier class rather than the MarkowitzModel class. /Anders > On 8 May 2017, at 14:20, lvz...@gt... wrote: > > > Hi, > I have a problem when calculate best invest group by using markowitzModel in ojalgo with code below(for test); > > > > > for(int j = 0; j < 100; j ++) > { Builder<PrimitiveMatrix> tmpBuilder = PrimitiveMatrix.FACTORY.getBuilder(2, 2); > tmpBuilder.add(0, 0, 0.040000); > tmpBuilder.add(0, 1, 0.1000); > tmpBuilder.add(1, 0, 0.1000); > tmpBuilder.add(1, 1, 0.250000); > BasicMatrix covariances = tmpBuilder.build(); > tmpBuilder = PrimitiveMatrix.FACTORY.getBuilder(2); > tmpBuilder.add(0, 0.20000); > tmpBuilder.add(1, 0.40000); > BasicMatrix expectedExcessReturns = tmpBuilder.build(); > > MarketEquilibrium equilibrium = new MarketEquilibrium(covariances); > MarkowitzModel markowitzModel = new MarkowitzModel(equilibrium, expectedExcessReturns); > markowitzModel.setShortingAllowed(false); > // markowitzModel.optimiser().validate(true); > markowitzModel.setTargetReturn(new BigDecimal(0.2 + (0.002 * j))); > for (int i = 0; i < 2; i++) { > markowitzModel.setLowerLimit(i, new BigDecimal(0.00000)); > markowitzModel.setUpperLimit(i, new BigDecimal(1.00000)); > } > System.out.println(0.2 + (0.002 * j) + "," + markowitzModel.getReturnVariance() + " , " + markowitzModel.getMeanReturn() + "," + markowitzModel.getWeights()); > > > } > > > when TargetReturn equal to 0.206,Variance equal to 0.04 , weights equal to [1.0, 0.0] > when TargetReturn equal to 0.208, Variance equal to 0.25,weights equal to [0.0, 1.0] > Below Relationship of TargetReturn And Target Variance?Y-Axis TargetReturn,X-AXis standard deviation? > > > > ??? > > <1.jpg>------------------------------------------------------------------------------ > Check out the vibrant tech community on one of the world's most > engaging tech sites, Slashdot.org! http://sdm.link/slashdot_______________________________________________ > ojAlgo-user mailing list > ojA...@li... > https://lists.sourceforge.net/lists/listinfo/ojalgo-user ------------------------------ ------------------------------------------------------------------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, Slashdot.org! http://sdm.link/slashdot ------------------------------ _______________________________________________ ojAlgo-user mailing list ojA...@li... https://lists.sourceforge.net/lists/listinfo/ojalgo-user End of ojAlgo-user Digest, Vol 79, Issue 3 ****************************************** |
From: Anders P. <an...@op...> - 2017-05-09 21:32:56
|
Haven’t fully understood yet why that small/simple model is so problematic. The covariance matrix is not positive definite, Strictly speaking it needs to be, but most of the time semidefinite is ok. Setting a target return or variance is not the best way to use ojAlgo’s MarkowitzModel class. Work directly with the risk aversion factor instead. If what you want to do is to calculate the efficient frontier then it’s better to use the EfficientFrontier class rather than the MarkowitzModel class. /Anders > On 8 May 2017, at 14:20, lvz...@gt... wrote: > > > Hi, > I have a problem when calculate best invest group by using markowitzModel in ojalgo with code below(for test); > > > > > for(int j = 0; j < 100; j ++) > { Builder<PrimitiveMatrix> tmpBuilder = PrimitiveMatrix.FACTORY.getBuilder(2, 2); > tmpBuilder.add(0, 0, 0.040000); > tmpBuilder.add(0, 1, 0.1000); > tmpBuilder.add(1, 0, 0.1000); > tmpBuilder.add(1, 1, 0.250000); > BasicMatrix covariances = tmpBuilder.build(); > tmpBuilder = PrimitiveMatrix.FACTORY.getBuilder(2); > tmpBuilder.add(0, 0.20000); > tmpBuilder.add(1, 0.40000); > BasicMatrix expectedExcessReturns = tmpBuilder.build(); > > MarketEquilibrium equilibrium = new MarketEquilibrium(covariances); > MarkowitzModel markowitzModel = new MarkowitzModel(equilibrium, expectedExcessReturns); > markowitzModel.setShortingAllowed(false); > // markowitzModel.optimiser().validate(true); > markowitzModel.setTargetReturn(new BigDecimal(0.2 + (0.002 * j))); > for (int i = 0; i < 2; i++) { > markowitzModel.setLowerLimit(i, new BigDecimal(0.00000)); > markowitzModel.setUpperLimit(i, new BigDecimal(1.00000)); > } > System.out.println(0.2 + (0.002 * j) + "," + markowitzModel.getReturnVariance() + " , " + markowitzModel.getMeanReturn() + "," + markowitzModel.getWeights()); > > > } > > > when TargetReturn equal to 0.206,Variance equal to 0.04 , weights equal to [1.0, 0.0] > when TargetReturn equal to 0.208, Variance equal to 0.25,weights equal to [0.0, 1.0] > Below Relationship of TargetReturn And Target Variance(Y-Axis TargetReturn,X-AXis standard deviation) > > > > 吕子锋 > > <1.jpg>------------------------------------------------------------------------------ > Check out the vibrant tech community on one of the world's most > engaging tech sites, Slashdot.org! http://sdm.link/slashdot_______________________________________________ > ojAlgo-user mailing list > ojA...@li... > https://lists.sourceforge.net/lists/listinfo/ojalgo-user |
From: Anders P. <an...@op...> - 2017-05-09 20:35:08
|
UNEXPLORED would mean the optimisation has not been executed (since you last modified the model). How did you get that? /Anders > On 9 May 2017, at 17:15, yifa wang <fag...@ho...> wrote: > > hi, > > I try to use ojalgo to do a portfolio optimization. The target is find an efficient frontier for 15 securities or more. I generate random returns for simulation. However, when I run the program, I get the state as "UNEXPLORED". Usually, we get OPTIMAL. What does this mean? Is it possible to get the optimal weight for more than 50 securities? > > Thanks. > Jerry > > > > > 发件人: lvz...@gt... <lvz...@gt...> > 发送时间: 2017年5月8日 下午 8:20:21 > 收件人: oja...@li... > 主题: [ojAlgo-user] Report A Bug Of ojalgo finace library > > > Hi, > I have a problem when calculate best invest group by using markowitzModel in ojalgo with code below(for test); > > > > > for(int j = 0; j < 100; j ++) > { Builder<PrimitiveMatrix> tmpBuilder = PrimitiveMatrix.FACTORY.getBuilder(2, 2); > tmpBuilder.add(0, 0, 0.040000); > tmpBuilder.add(0, 1, 0.1000); > tmpBuilder.add(1, 0, 0.1000); > tmpBuilder.add(1, 1, 0.250000); > BasicMatrix covariances = tmpBuilder.build(); > tmpBuilder = PrimitiveMatrix.FACTORY.getBuilder(2); > tmpBuilder.add(0, 0.20000); > tmpBuilder.add(1, 0.40000); > BasicMatrix expectedExcessReturns = tmpBuilder.build(); > > MarketEquilibrium equilibrium = new MarketEquilibrium(covariances); > MarkowitzModel markowitzModel = new MarkowitzModel(equilibrium, expectedExcessReturns); > markowitzModel.setShortingAllowed(false); > // markowitzModel.optimiser().validate(true); > markowitzModel.setTargetReturn(new BigDecimal(0.2 + (0.002 * j))); > for (int i = 0; i < 2; i++) { > markowitzModel.setLowerLimit(i, new BigDecimal(0.00000)); > markowitzModel.setUpperLimit(i, new BigDecimal(1.00000)); > } > System.out.println(0.2 + (0.002 * j) + "," + markowitzModel.getReturnVariance() + " , " + markowitzModel.getMeanReturn() + "," + markowitzModel.getWeights()); > > > } > > > when TargetReturn equal to 0.206,Variance equal to 0.04 , weights equal to [1.0, 0.0] > when TargetReturn equal to 0.208, Variance equal to 0.25,weights equal to [0.0, 1.0] > Below Relationship of TargetReturn And Target Variance(Y-Axis TargetReturn,X-AXis standard deviation) > > > > 吕子锋 > > ------------------------------------------------------------------------------ > Check out the vibrant tech community on one of the world's most > engaging tech sites, Slashdot.org! http://sdm.link/slashdot_______________________________________________ > ojAlgo-user mailing list > ojA...@li... > https://lists.sourceforge.net/lists/listinfo/ojalgo-user |
From: yifa w. <fag...@ho...> - 2017-05-09 15:15:50
|
hi, I try to use ojalgo to do a portfolio optimization. The target is find an efficient frontier for 15 securities or more. I generate random returns for simulation. However, when I run the program, I get the state as "UNEXPLORED". Usually, we get OPTIMAL. What does this mean? Is it possible to get the optimal weight for more than 50 securities? Thanks. Jerry ________________________________ 发件人: lvz...@gt... <lvz...@gt...> 发送时间: 2017年5月8日 下午 8:20:21 收件人: oja...@li... 主题: [ojAlgo-user] Report A Bug Of ojalgo finace library Hi, I have a problem when calculate best invest group by using markowitzModel in ojalgo with code below(for test); for(int j = 0; j < 100; j ++) { Builder<PrimitiveMatrix> tmpBuilder = PrimitiveMatrix.FACTORY.getBuilder(2, 2); tmpBuilder.add(0, 0, 0.040000); tmpBuilder.add(0, 1, 0.1000); tmpBuilder.add(1, 0, 0.1000); tmpBuilder.add(1, 1, 0.250000); BasicMatrix covariances = tmpBuilder.build(); tmpBuilder = PrimitiveMatrix.FACTORY.getBuilder(2); tmpBuilder.add(0, 0.20000); tmpBuilder.add(1, 0.40000); BasicMatrix expectedExcessReturns = tmpBuilder.build(); MarketEquilibrium equilibrium = new MarketEquilibrium(covariances); MarkowitzModel markowitzModel = new MarkowitzModel(equilibrium, expectedExcessReturns); markowitzModel.setShortingAllowed(false); // markowitzModel.optimiser().validate(true); markowitzModel.setTargetReturn(new BigDecimal(0.2 + (0.002 * j))); for (int i = 0; i < 2; i++) { markowitzModel.setLowerLimit(i, new BigDecimal(0.00000)); markowitzModel.setUpperLimit(i, new BigDecimal(1.00000)); } System.out.println(0.2 + (0.002 * j) + "," + markowitzModel.getReturnVariance() + " , " + markowitzModel.getMeanReturn() + "," + markowitzModel.getWeights()); } when TargetReturn equal to 0.206,Variance equal to 0.04 , weights equal to [1.0, 0.0] when TargetReturn equal to 0.208, Variance equal to 0.25,weights equal to [0.0, 1.0] Below Relationship of TargetReturn And Target Variance(Y-Axis TargetReturn,X-AXis standard deviation) 吕子锋 |
From: Anders P. <an...@op...> - 2017-05-08 20:50:21
|
Something seems to go wrong - I’ll have a look at it. While you wait you can try setting the risk aversion rather than the target return. /Anders > On 8 May 2017, at 14:20, lvz...@gt... wrote: > > > Hi, > I have a problem when calculate best invest group by using markowitzModel in ojalgo with code below(for test); > > > > > for(int j = 0; j < 100; j ++) > { Builder<PrimitiveMatrix> tmpBuilder = PrimitiveMatrix.FACTORY.getBuilder(2, 2); > tmpBuilder.add(0, 0, 0.040000); > tmpBuilder.add(0, 1, 0.1000); > tmpBuilder.add(1, 0, 0.1000); > tmpBuilder.add(1, 1, 0.250000); > BasicMatrix covariances = tmpBuilder.build(); > tmpBuilder = PrimitiveMatrix.FACTORY.getBuilder(2); > tmpBuilder.add(0, 0.20000); > tmpBuilder.add(1, 0.40000); > BasicMatrix expectedExcessReturns = tmpBuilder.build(); > > MarketEquilibrium equilibrium = new MarketEquilibrium(covariances); > MarkowitzModel markowitzModel = new MarkowitzModel(equilibrium, expectedExcessReturns); > markowitzModel.setShortingAllowed(false); > // markowitzModel.optimiser().validate(true); > markowitzModel.setTargetReturn(new BigDecimal(0.2 + (0.002 * j))); > for (int i = 0; i < 2; i++) { > markowitzModel.setLowerLimit(i, new BigDecimal(0.00000)); > markowitzModel.setUpperLimit(i, new BigDecimal(1.00000)); > } > System.out.println(0.2 + (0.002 * j) + "," + markowitzModel.getReturnVariance() + " , " + markowitzModel.getMeanReturn() + "," + markowitzModel.getWeights()); > > > } > > > when TargetReturn equal to 0.206,Variance equal to 0.04 , weights equal to [1.0, 0.0] > when TargetReturn equal to 0.208, Variance equal to 0.25,weights equal to [0.0, 1.0] > Below Relationship of TargetReturn And Target Variance(Y-Axis TargetReturn,X-AXis standard deviation) > > > > 吕子锋 > > <1.jpg>------------------------------------------------------------------------------ > Check out the vibrant tech community on one of the world's most > engaging tech sites, Slashdot.org! http://sdm.link/slashdot_______________________________________________ > ojAlgo-user mailing list > ojA...@li... > https://lists.sourceforge.net/lists/listinfo/ojalgo-user |
From: <lvz...@gt...> - 2017-05-08 12:32:41
|
Hi, I have a problem when calculate best invest group by using markowitzModel in ojalgo with code below(for test); for(int j = 0; j < 100; j ++) { Builder<PrimitiveMatrix> tmpBuilder = PrimitiveMatrix.FACTORY.getBuilder(2, 2); tmpBuilder.add(0, 0, 0.040000); tmpBuilder.add(0, 1, 0.1000); tmpBuilder.add(1, 0, 0.1000); tmpBuilder.add(1, 1, 0.250000); BasicMatrix covariances = tmpBuilder.build(); tmpBuilder = PrimitiveMatrix.FACTORY.getBuilder(2); tmpBuilder.add(0, 0.20000); tmpBuilder.add(1, 0.40000); BasicMatrix expectedExcessReturns = tmpBuilder.build(); MarketEquilibrium equilibrium = new MarketEquilibrium(covariances); MarkowitzModel markowitzModel = new MarkowitzModel(equilibrium, expectedExcessReturns); markowitzModel.setShortingAllowed(false); // markowitzModel.optimiser().validate(true); markowitzModel.setTargetReturn(new BigDecimal(0.2 + (0.002 * j))); for (int i = 0; i < 2; i++) { markowitzModel.setLowerLimit(i, new BigDecimal(0.00000)); markowitzModel.setUpperLimit(i, new BigDecimal(1.00000)); } System.out.println(0.2 + (0.002 * j) + "," + markowitzModel.getReturnVariance() + " , " + markowitzModel.getMeanReturn() + "," + markowitzModel.getWeights()); } when TargetReturn equal to 0.206,Variance equal to 0.04 , weights equal to [1.0, 0.0] when TargetReturn equal to 0.208, Variance equal to 0.25,weights equal to [0.0, 1.0] Below Relationship of TargetReturn And Target Variance(Y-Axis TargetReturn,X-AXis standard deviation) 吕子锋 |
From: Vincent de C. C. <dec...@ya...> - 2017-02-16 21:35:07
|
Thanks Anders! Le Jeudi 16 février 2017 11h30, Anders Peterson <an...@op...> a écrit : Yes, for the calculations to be at all possible you need at least 3 elements in each series. (I would recommend having much more than that.) /Anders > On 15 Feb 2017, at 23:10, Vincent de CHACUS C. <dec...@ya...> wrote: > > Hey Anders, > > I was running some simulations and one of my covariance matrices was returning NaN everywhere. > I was able to trace the issue back to one of my entries, which only has 2 elements in its CalendarDateSeries (compared to an average of 10 for all the other elements in the collection). > When I add that calendarDateSeries to the collection that serves as parameter of the makeCovarianceMatrix in the FinanceUtils class, I get a covariance matrix that's made up of NaNs. > > Is there a constraint on the size of each CalendarDateSeries that make up the timeSeriesCollection? > I'm using ojAlgo-40.0.4, although I was able to replicate the issue on version 42.0.0 of the jar. > > Thanks, > Vince > > > ------------------------------------------------------------------------------ > Check out the vibrant tech community on one of the world's most > engaging tech sites, SlashDot.org! http://sdm.link/slashdot_______________________________________________ > ojAlgo-user mailing list > ojA...@li... > https://lists.sourceforge.net/lists/listinfo/ojalgo-user |
From: Anders P. <an...@op...> - 2017-02-16 16:30:13
|
Yes, for the calculations to be at all possible you need at least 3 elements in each series. (I would recommend having much more than that.) /Anders > On 15 Feb 2017, at 23:10, Vincent de CHACUS C. <dec...@ya...> wrote: > > Hey Anders, > > I was running some simulations and one of my covariance matrices was returning NaN everywhere. > I was able to trace the issue back to one of my entries, which only has 2 elements in its CalendarDateSeries (compared to an average of 10 for all the other elements in the collection). > When I add that calendarDateSeries to the collection that serves as parameter of the makeCovarianceMatrix in the FinanceUtils class, I get a covariance matrix that's made up of NaNs. > > Is there a constraint on the size of each CalendarDateSeries that make up the timeSeriesCollection? > I'm using ojAlgo-40.0.4, although I was able to replicate the issue on version 42.0.0 of the jar. > > Thanks, > Vince > > > ------------------------------------------------------------------------------ > Check out the vibrant tech community on one of the world's most > engaging tech sites, SlashDot.org! http://sdm.link/slashdot_______________________________________________ > ojAlgo-user mailing list > ojA...@li... > https://lists.sourceforge.net/lists/listinfo/ojalgo-user |