I'd like to learn more about the benefits of diversification and portfolios so I've started with a naive system to be long SPY. I'd like to find the most optimal symbols in which to form a diversified portfolio. I'd like to be able to run a large basket of symbols to fill in the remaining, in this case, 30% of the portfolio. However, when I run a standard optimization, it states the test will take 59 days on a core i9. Trust me, I know it's poor and incredibly inefficient programming! Can anyone help me come up with a better way?
Thanks!
Tony
SetForeign("SPY");
openingtrade=c>ma(c,200);
closingtrade=c<ma(c,200);
RestorePriceArrays();
SetOption("MaxOpenPositions",2);
OPT1=70;
OPT2=Optimize("IWM",0,0,30,30);
OPT3=Optimize("QQQ",0,0,30,30);
OPT4=Optimize("IWF",0,0,30,30);
OPT5=Optimize("IWD",0,0,30,30);
OPT6=Optimize("IWO",0,0,30,30);
OPT7=Optimize("IWN",0,0,30,30);
OPT8=Optimize("VNQ",0,0,30,30);
OPT9=Optimize("REM",0,0,30,30);
OPT10=Optimize("TLT",0,0,30,30);
OPT11=Optimize("IEF",0,0,30,30);
OPT12=Optimize("SHY",0,0,30,30);
OPT13=Optimize("LQD",0,0,30,30);
OPT14=Optimize("HYG",0,0,30,30);
OPT15=Optimize("AGG",0,0,30,30);
OPT16=Optimize("TIP",0,0,30,30);
OPT17=Optimize("EFA",0,0,30,30);
OPT18=Optimize("EEM",0,0,30,30);
OPT19=Optimize("SCZ",0,0,30,30);
OPT20=Optimize("EFV",0,0,30,30);
OPT21=Optimize("EWJ",0,0,30,30);
OPT22=Optimize("VGK",0,0,30,30);
OPT23=Optimize("BWX",0,0,30,30);
OPT24=Optimize("EMB",0,0,30,30);
OPT25=Optimize("RWO",0,0,30,30);
OPT26=Optimize("RWX",0,0,30,30);
OPT27=Optimize("GLD",0,0,30,30);
OPT28=Optimize("DBC",0,0,30,30);
OPT29=Optimize("BNDX",30,0,30,30);
Exclude=OPT1+OPT2+OPT3+OPT4+OPT5+OPT6+OPT7+OPT8+OPT9+OPT10+OPT11+OPT12+OPT13+OPT14+OPT15+OPT16+OPT17+OPT18+OPT19+OPT20+OPT21+OPT22+OPT23+OPT24+OPT25+OPT26+OPT27+OPT28+OPT29!=100;
nm = Name();
switch( nm ) {
case "SPY":
SetPositionSize( OPT1, spsPercentOfEquity );
break;
case "IWM":
SetPositionSize( OPT2, spsPercentOfEquity );
break;
case "QQQ":
SetPositionSize( OPT3, spsPercentOfEquity );
break;
case "IWF":
SetPositionSize( OPT4, spsPercentOfEquity );
break;
case "IWD":
SetPositionSize( OPT5, spsPercentOfEquity );
break;
case "IWO":
SetPositionSize( OPT6, spsPercentOfEquity );
break;
case "IWN":
SetPositionSize( OPT7, spsPercentOfEquity );
break;
case "VNQ":
SetPositionSize( OPT8, spsPercentOfEquity );
break;
case "REM":
SetPositionSize( OPT9, spsPercentOfEquity );
break;
case "TLT":
SetPositionSize( OPT10, spsPercentOfEquity );
break;
case "IEF":
SetPositionSize( OPT11, spsPercentOfEquity );
break;
case "SHY":
SetPositionSize( OPT12, spsPercentOfEquity );
break;
case "LQD":
SetPositionSize( OPT13, spsPercentOfEquity );
break;
case "HYG":
SetPositionSize( OPT14, spsPercentOfEquity );
break;
case "AGG":
SetPositionSize( OPT15, spsPercentOfEquity );
break;
case "TIP":
SetPositionSize( OPT16, spsPercentOfEquity );
break;
case "EFA":
SetPositionSize( OPT17, spsPercentOfEquity );
break;
case "EEM":
SetPositionSize( OPT18, spsPercentOfEquity );
break;
case "SCZ":
SetPositionSize( OPT19, spsPercentOfEquity );
break;
case "EFV":
SetPositionSize( OPT20, spsPercentOfEquity );
break;
case "EWJ":
SetPositionSize( OPT21, spsPercentOfEquity );
break;
case "VGK":
SetPositionSize( OPT22, spsPercentOfEquity );
break;
case "BWX":
SetPositionSize( OPT23, spsPercentOfEquity );
break;
case "EMB":
SetPositionSize( OPT24, spsPercentOfEquity );
break;
case "RWO":
SetPositionSize( OPT25, spsPercentOfEquity );
break;
case "RWX":
SetPositionSize( OPT26, spsPercentOfEquity );
break;
case "GLD":
SetPositionSize( OPT27, spsPercentOfEquity );
break;
case "DBC":
SetPositionSize( OPT28, spsPercentOfEquity );
break;
case "BNDX":
SetPositionSize( OPT29, spsPercentOfEquity );
break;
}
Buy=openingtrade;
Sell=closingtrade;