backtestShort[startDate_,window_,period_]:=Block[{data,endDate,ret,weights,meanRet,portfolioMean,covMat,portfolioVar,mv,alloc,futureData,port},(Clear[data,endDate,ret,weights,meanRet,portfolioMean,covMat,portfolioVar,mv,alloc,futureData,port];endDate=DayPlus[startDate,window*period,"BusinessDay"];data=FinancialData[#,"Close",{startDate,endDate}]&/@portfolio;ret=FinancialData[#,"FractionalChange",{startDate,endDate},"Value"]&/@portfolio;weights=Transpose[{Subscript[w,#]&/@portfolio}];meanRet={Mean[#]&/@ret};portfolioMean=Flatten[meanRet.weights][[1]];covMat=Covariance[Transpose[ret]];portfolioVar=Flatten[Transpose[weights].covMat.weights][[1]];mv=NMinimize[{portfolioVar,Union[GreaterEqualThan[0.05][#]&/@Flatten[Transpose[weights]],LessEqualThan[0.25][#]&/@Flatten[Transpose[weights]],List[Total[weights][[1]]1],List[GreaterEqualThan[0.0][portfolioMean]]]},Flatten[weights]];;alloc=Last[mv[[2]][[#]]]&/@Range[Length[portfolio]];futureData=FinancialData[#,"Close",{endDate,DayPlus[endDate,window,"BusinessDay"]}]&/@portfolio;List[mv[[2]]TimeSeriesThread[alloc.#&,futureData]])];