最大夏普比率投资组合因 PortfolioAnalytics 中的错误而失败

2024-02-22

在计算简单的最大夏普比率投资组合权重时,我在 PortfolioAnalytics 中遇到了一个问题:

Error in max_sr_opt(R = R, constraints = constraints, moments = moments,  : 
 Objective function failed with message
Error in optimize(f = sharpe_obj_fun, R = R, constraints = constraints,  : 
 'xmin' not less than 'xmax'

下面请找到可重现的示例代码:

library(PortfolioAnalytics)

returnsText <- '
"date","NEAR","MINT"
"2014-07-01",0.000161110006774212,-9.86193284648884e-05
"2014-07-02",-0.000218949044995531,0.000197258111483523
"2014-07-03",-0.000378267533203247,9.86096047428386e-05
"2014-07-07",0,-9.85998818474609e-05
"2014-07-08",-0.000199163513616485,9.86096047428386e-05
"2014-07-09",0.000197211155088084,0.000197199763695144
"2014-07-10",0.000201155547844056,0
"2014-07-11",0.000203106333835912,0.000197160883615322
"2014-07-14",-0.000203065090029986,0
"2014-07-15",0.000509757069411476,0.000169524935917709
"2014-07-16",-0.000111452544867996,-0.00016949620208484
"2014-07-17",-0.000597133756883639,0.000394244036637348
"2014-07-18",0.000597490538653656,-0.000492610837184437
"2014-07-21",0,9.85707246621281e-05
"2014-07-22",-0.000199044586359554,0.000295683027205396
"2014-07-23",-3.78259998102815e-05,-0.000394127499825259
"2014-07-24",3.78274306707116e-05,0
"2014-07-25",-0.000597252636787449,-0.000197141449324145
"2014-07-28",0.000398406373049998,0.000295770482607871
"2014-07-29",0.00019912385541021,0.000295683027205396
"2014-07-30",0,-0.000197063750457582
"2014-07-31",0,0.000502611610304848
"2014-08-01",0.00054833764653095,0.000197122017793872
"2014-08-04",-0.000199123854866534,-0.000689791091990632
"2014-08-05",-0.000300736903335763,0.000493048023763265
"2014-08-06",-9.76194805905051e-05,0
"2014-08-07",0.000203227733818867,0
"2014-08-08",0.000195218346190407,-0.000394244037766889
"2014-08-11",-0.000131447918101602,0.000197199763714462
"2014-08-12",0.000131465198928149,0.000197160883634862
"2014-08-13",0.00019916351307292,0.000197122017793872
"2014-08-14",-1.99123714428318e-06,0
"2014-08-15",0.000199124251370142,-0.000492707922539193
"2014-08-18",-0.000197093764112588,9.85901608789863e-05
"2014-08-19",-0.000199123854866534,0
"2014-08-20",-0.000199163513073031,9.85804418176528e-05
"2014-08-21",0,0.000394282897597575
"2014-08-22",2.78884462789897e-05,-0.000394127499864894
"2014-08-25",-0.000426282932069477,-9.85707246720091e-05
"2014-08-26",0.000398565165061537,0.000394321766179928
"2014-08-27",0.000199203187079666,9.85415847256643e-05
"2014-08-28",-1.19498111355032e-05,-0.000295595624626332
"2014-08-29",0.000211115847003063,0.000413956238783486
"2014-09-02",-0.000876005574944494,-0.000492902208474866
"2014-09-03",0.000516553649691165,0.000197258111695131
"2014-09-04",0.00038073671596095,0.000295828814544263
"2014-09-05",-0.00029889409268935,3.5488959045038e-05
"2014-09-08",-0.000597966911962122,-3.5487699623471e-05
"2014-09-09",0.000398883126886407,-9.85804419127989e-05
"2014-09-10",5.58213729657808e-05,-0.000197180321948931
"2014-09-11",-0.000454520083608245,9.86096048480878e-05
"2014-09-12",0,9.85998819527101e-05
"2014-09-15",0,0.000394360642808511
"2014-09-16",-1.99441482195972e-06,0.000197102591354748
"2014-09-17",0.000201436380012687,-0.000183269286988752
"2014-09-18",-0.000398803588875118,0.000183302880776948
"2014-09-19",0.000797925393260623,-0.000197063749579174
"2014-09-22",-0.000797289215949459,-9.85512962219381e-05
"2014-09-23",0,0.000295683027522475
"2014-09-24",0.000797925393260623,-0.000394127500247143
"2014-09-25",-0.000199322303987337,0.000492853622747313
"2014-09-26",0.000398724082577573,-9.85221677600734e-05
"2014-09-29",0.00019928258471813,-9.85318742451335e-05
"2014-09-30",-6.37577209552376e-05,-0.000650374458294301
"2014-10-01",7.00981129100331e-05,0.000986679822432501
"2014-10-02",0.000388755980016198,-9.85707241716316e-05
"2014-10-03",-0.000189320340130417,-0.000690063092486648
"2014-10-06",-0.000346820809271176,0.000493242577261688
"2014-10-07",0.000346941135676682,0.000394399526516764
"2014-10-08",0.000201315527737389,-9.85610089417888e-05
"2014-10-09",3.38779711579473e-05,-0.000492853623035749
"2014-10-10",-0.000235145012875138,-0.000197238658130816
"2014-10-13",0.000199322305363792,0.000197277568893872
"2014-10-14",0.000398565165606435,0.000197238659219723
"2014-10-15",0.00119521912191933,0.000394399526516764
"2014-10-16",-0.00099482689953001,-0.000591366055827103
"2014-10-17",-0.000328619796307605,-0.000690335305635781
"2014-10-20",-0.000468188112956458,0.000789499655275971
"2014-10-21",0.00139525613096603,9.86096042523421e-05
"2014-10-22",-0.000199044587183228,-0.000492999408962524
"2014-10-23",-0.000597252637073331,-0.000394594061155717
"2014-10-24",0.000398406374703786,0.000394749827093088
"2014-10-27",0,0
"2014-10-28",-0.000388291518670814,0
"2014-10-29",0.000189241143167429,-0.000394594061155717
"2014-10-30",-0.000231029674647831,0.00029606237059232
"2014-10-31",-0.000167336011627328,-1.97316490654353e-05
"2014-11-03",-0.000122952778378926,0
"2014-11-04",0.000201396213098226,0
"2014-11-05",0.000199362042857754,-9.87166832120412e-05
"2014-11-06",-0.000199322305555638,-9.87264291576473e-05
"2014-11-07",-0.000199362040665285,0.000394944708111522
"2014-11-10",0.000199401793813836,9.86971960028615e-05
"2014-11-11",-0.000199362040665285,0
"2014-11-12",0,-0.000234876146634422
"2014-11-13",0.000187437687632297,0.000333641968091047
"2014-11-14",-0.000187402561329542,-0.000197355436238444
"2014-11-17",-6.38085750730433e-05,0.000394788787279277
"2014-11-18",0.000662056203570183,-0.000197316495844313
"2014-11-19",-0.000398565165992459,0.000197355437327573
"2014-11-20",0.000199362042857754,-0.000118389897071025
"2014-11-21",-0.000398644608919363,-0.000177605873436515
"2014-11-24",0,0.000157899931938488
"2014-11-25",0.000598205383634198,-0.000157875003486185
"2014-11-26",-0.000334794738732325,9.86874569168794e-05
"2014-11-28",0.000334906863788342,0.000197355437327573
"2014-12-01",0.000486389000651677,-9.87166831345476e-05
"2014-12-02",-0.000396652177151791,-9.87264290801537e-05
"2014-12-03",-0.000199401794614751,0
"2014-12-04",0,0.000296208530850661
"2014-12-05",-0.000598324690861629,-0.000493534695564235
"2014-12-08",0.000199560965873813,0
"2014-12-09",0,0.000296267035399866
"2014-12-10",-0.000251396648437763,0.000208727416499466
"2014-12-11",-0.00034725409780012,-0.000691562932129686
"2014-12-12",0.00016170892356282,0.000790904597333109
"2014-12-15",0.00036528331564889,-0.00138298923224633
"2014-12-16",-0.000127702709234789,0.000494608763774496
"2014-12-17",-0.000556775094721962,-9.88728487232304e-05
"2014-12-18",-0.000241603287466252,-0.000395530505390096
"2014-12-19",-0.000998601957253209,-0.000593530518055996
"2014-12-22",0.000399840063971757,0.000593883005743923
"2014-12-23",0.000399680255792623,-0.000197843506382078
"2014-12-24",3.72952466447529e-05,-0.000296823983180428
"2014-12-26",0,0.000197941408847546
"2014-12-29",0.000799520286848265,0.000949930734458038
"2014-12-30",0.000419412822907139,-0.000494608764139093
"2014-12-31",-0.00141742029524627,0.000197941409211477
"2015-01-02",0,9.89511180820024e-05
"2015-01-05",0.000599760094678548,9.89413277270312e-05
"2015-01-06",0.000965034964814926,-0.000197863078618354
"2015-01-07",-0.000864300783189664,0.000395804472327788
"2015-01-08",0.00089901108807422,-0.00108803165110805
"2015-01-09",0.000199600798706845,0.000495098524277537
"2015-01-12",0,-0.000197941409211366
"2015-01-13",0,0.000593941793309849
"2015-01-14",0.000399121930165558,-0.000296794617927421
"2015-01-15",-0.000398962695404403,9.89609103747568e-05
"2015-01-16",0.000399121930165558,-0.000692657826573684
"2015-01-20",-0.00099740674179738,0.00108921675341067
"2015-01-21",0.000796725239052831,-0.000791295746260245
"2015-01-22",-0.000995612520915179,0.000296970896654924
"2015-01-23",0.000599161175268037,0
"2015-01-26",0,0.000197921820749514
"2015-01-27",-0.000598802396120535,0
"2015-01-28",0.00032354703512727,0.000191946175833735
"2015-01-29",-0.000119793477545094,-9.29869996078025e-05
"2015-01-30",0.000539135227258791,0.000613375543934369
"2015-02-02",0.000305924098682908,-0.000395726156791842
"2015-02-03",0.000399281293311349,-0.000197941409533775
"2015-02-04",-0.000261424864042237,0.000296970897138538
"2015-02-05",6.18800764327077e-05,-9.89609105357392e-05
"2015-02-06",-0.000698602795423664,-0.0010886777513458
"2015-02-09",9.9870169238736e-05,0.00108986426232005
"2015-02-10",0.000399440782543614,0.000197941408444091
"2015-02-11",0.000199640647751131,-0.00029685335364027
"2015-02-12",0,0.0003959220026577
"2015-02-13",-0.000199600799318245,-9.89413278882356e-05
"2015-02-17",-0.000588939907798625,0.000197902236486414
"2015-02-18",0.000389528671218109,0.000296794618410701
"2015-02-19",0.000798722044007327,0.000296706557501025
"2015-02-20",-0.000458898644046579,-0.000148309274416336
"2015-02-23",0.000259496576516804,-4.94437577732709e-05
"2015-02-24",0.000199560966790413,0.000197784810317403
"2015-02-25",0.000399042298123486,-0.000296618548832561
"2015-02-26",-0.000199441562347635,0.000494510929168523
"2015-02-27",0.000199481347219033,-0.000237247924962269
"2015-03-02",-0.00101557638576522,-9.89315392826429e-05
"2015-03-03",0.000999000999640121,9.89413277003859e-05
"2015-03-04",0.000199600798092892,0
"2015-03-05",-8.78068262490928e-05,0.000296794618936502
"2015-03-06",-0.000327308723116593,-9.89021856461214e-05
"2015-03-09",0.000397291231692742,0.000989119682560435
"2015-03-10",-0.000161647285065403,9.88142302440487e-05
"2015-03-11",0.000578830761837512,-0.000592826796305901
"2015-03-12",-0.000398962696368299,-0.000197726149099076
"2015-03-13",0.000199560965565171,0.000395530504921915
"2015-03-16",0,-0.000247108827041043
"2015-03-17",0,0.000247169904906253
"2015-03-18",-0.000199521148931958,0.000395374123483005
"2015-03-19",0,-0.00069163126217564
"2015-03-20",-9.57892632084123e-05,9.88728494233371e-05
"2015-03-23",-0.000103781643523648,0.000790904597484321
"2015-03-24",0.000399201596186005,-0.000197569890164728
"2015-03-25",0,-9.88044669567589e-05
"2015-03-26",0.000399042297863694,-0.000494071145785369
"2015-03-27",-0.000199441563312086,0.000395452298198373
"2015-03-30",0.000199481348184039,0.000197647989834904
"2015-03-31",0.000199441563312197,-4.94022334783795e-05
"2015-04-01",-0.00011058823470167,0.000405342613665427
"2015-04-02",-0.000199560966330781,-9.88239946962954e-05
"2015-04-06",0.000399201597718113,0.000197667523686773
"2015-04-07",-0.000199521149697346,-0.000494071146310504
"2015-04-08",0,0.00019673751829985
"2015-04-09",0.000798243863135983,-0.000295542448883968
"2015-04-10",-0.000199401792886245,0.000296618548151217
"2015-04-13",-0.000199441564076919,0.00069190471536329
"2015-04-14",0.000797925393610566,-0.000197550375806266
"2015-04-15",-0.000364759816298466,0.000296384113416481
"2015-04-16",-3.38971572640956e-05,9.87654323292286e-05
"2015-04-17",-0.000598205383029238,-0.000493778392323452
"2015-04-20",0.000598563446905231,9.88044661922594e-05
"2015-04-21",0,-0.000395178818250796
"2015-04-22",-0.000199401792886245,9.98220990706677e-05
"2015-04-23",0,0.000493131245507206
"2015-04-24",0.000199441561891334,9.87751868171127e-05
"2015-04-27",-0.000199401792886245,-0.000197530863572326
"2015-04-28",0.000398883125968252,-9.87849454047174e-05
"2015-04-29",-0.000713716108378337,-0.000197589408582277
"2015-04-30",0.000714225862881612,0.0005928853747037
"2015-05-01",0.000282037480494379,-0.000988142292275507
"2015-05-04",-0.000199441562950597,0.000494559842176834
"2015-05-05",0.000359066425643206,0.000197726148371213
"2015-05-06",-0.000159527796745107,0
"2015-05-07",0.000199441562950486,0.000197687061556096
"2015-05-08",0,0.000395295978211863
"2015-05-11",9.97008969727542e-05,-0.000493924726307049
"2015-05-12",9.96909598782736e-05,0.000296501285100392
"2015-05-13",-0.000797448167551118,0.000790435728391659
"2015-05-14",-0.000399042297140717,0
"2015-05-15",0.000399201595462362,-0.000276434001625692
"2015-05-18",0,7.90029824320193e-05
"2015-05-19",-7.98084581170588e-05,0
"2015-05-20",0.000478888976833902,0.000789967413455273
"2015-05-21",0,-0.000690675875202995
"2015-05-22",0,9.87361770221629e-05
"2015-05-26",0.000199441562950486,0
"2015-05-27",0.000199401796128873,-9.87264291519852e-05
"2015-05-28",-0.000223285487700342,0.000394944707003964
"2015-05-29",2.39287876717675e-05,0.000138176075921148
"2015-06-01",0.000503649054035327,-0.000197491852779952
"2015-06-02",-0.000398883127633032,-0.000395061729201562
"2015-06-03",9.97605752641739e-05,-9.88044656212717e-05
"2015-06-04",-9.97506240845158e-05,0.000395256916718267
"2015-06-05",0,-0.000197550374664623
"2015-06-08",-0.000798084597746107,0.000493973522400326
"2015-06-09",0.000996405751629847,-0.000197491852779952
"2015-06-10",1.99481651663724e-06,9.87654317581299e-05
"2015-06-11",-0.000199481347597286,0
"2015-06-12",0.000199521148344761,-0.000395022713528315
"2015-06-15",-0.000598444044974777,0.000296384113874115
"2015-06-16",0.000598802394702114,0.00019753086351626
"2015-06-17",-0.000199481347597286,-0.00039498370664437
"2015-06-18",-0.00059856344721787,0
"2015-06-19",0.000798562585937024,0.000395139780419385
"2015-06-22",0.000199481349780317,-0.00039498370664437
"2015-06-23",-0.00059832469254073,-9.87849448337297e-05
"2015-06-24",-0.000399121929956281,0
"2015-06-25",-0.000199640648122834,-9.87947053479044e-05
"2015-06-26",0.000998402555793199,0.000197608932327231
"2015-06-29",-0.000173548771514542,9.87849448337297e-05
"2015-06-30",0.00037309487145154,-0.00018767285625676
'

returns <- as.xts(read.zoo(file=textConnection(returnsText), index.column="date", read=read.csv))

portfolioSpec <- portfolio.spec(assets=colnames(returns))
portfolioSpec <- add.constraint(portfolio=portfolioSpec, type="full_investment", enabled=TRUE)
portfolioSpec <- add.constraint(portfolio=portfolioSpec, type="box", min=0.0, max=1.0, enabled=TRUE)
portfolioSpec <- add.objective(portfolio=portfolioSpec, type="return", name="mean", enabled=TRUE, multiplier=-1)
portfolioSpec <- add.objective(portfolio=portfolioSpec, type="risk", name="StdDev", enabled=TRUE, multiplier=1, risk_aversion=1e-9)

maxSROpt <- optimize.portfolio(R=returns,
                               portfolio=portfolioSpec,
                               optimize_method="ROI",
                               maxSR=TRUE,
                               trace=TRUE)

当我运行此代码时,R 控制台中的输出是:

> library(PortfolioAnalytics)
Loading required package: zoo

Attaching package: ‘zoo’

The following objects are masked from ‘package:base’:

    as.Date, as.Date.numeric

Loading required package: xts
Loading required package: foreach
Loading required package: PerformanceAnalytics

Attaching package: ‘PerformanceAnalytics’

The following object is masked from ‘package:graphics’:

    legend

> 
> returnsText <- '
+ "date","NEAR","MINT"
+ "2014-07-01",0.000161110006774212,-9.86193284648884e-05
+ "2014-07-02",-0.000218949044995531,0.000197258111483523
+ "2014-07-03",-0.000378267533203247,9.86096047428386e-05
+ "2014-07-07",0,-9.85998818474609e-05
...
+ "2015-06-25",-0.000199640648122834,-9.87947053479044e-05
+ "2015-06-26",0.000998402555793199,0.000197608932327231
+ "2015-06-29",-0.000173548771514542,9.87849448337297e-05
+ "2015-06-30",0.00037309487145154,-0.00018767285625676
+ '
> 
> returns <- as.xts(read.zoo(file=textConnection(returnsText), index.column="date", read=read.csv))
> 
> portfolioSpec <- portfolio.spec(assets=colnames(returns))
> portfolioSpec <- add.constraint(portfolio=portfolioSpec, type="full_investment", enabled=TRUE)
> portfolioSpec <- add.constraint(portfolio=portfolioSpec, type="box", min=0.0, max=1.0, enabled=TRUE)
> portfolioSpec <- add.objective(portfolio=portfolioSpec, type="return", name="mean", enabled=TRUE, multiplier=-1)
> portfolioSpec <- add.objective(portfolio=portfolioSpec, type="risk", name="StdDev", enabled=TRUE, multiplier=1, risk_aversion=1e-9)
> 
> maxSROpt <- optimize.portfolio(R=returns,
+                              portfolio=portfolioSpec,
+                              optimize_method="ROI",
+                              maxSR=TRUE,
+                              trace=TRUE)
Registered S3 method overwritten by 'ROI':
  method           from              
  print.constraint PortfolioAnalytics
Error in max_sr_opt(R = R, constraints = constraints, moments = moments,  : 
  Objective function failed with message
 Error in optimize(f = sharpe_obj_fun, R = R, constraints = constraints,  : 
  'xmin' not less than 'xmax'

使用纯 ROI,其工作原理如下面的 R 控制台输出所示,其中我使用相同的返回对象:

> library("ROI")
> library("ROI.plugin.glpk")
> 
> sharpe_objective <- function(r_mat, rf = 0){
+   N <- NCOL(r_mat)
+   S <- NROW(r_mat)
+   mu <- colMeans(r_mat)
+   Amat <- rbind(c(mu - rf, 0),
+           c(rep(0, N), 1),
+           c(rep(1, N), -1))
+   var.names <- c(paste0("y_sharpe_aux", seq_len(N)), "kappa_sharpe")
+   
+   constraint <- L_constraint(L = Amat, dir = c("==", ">", "=="),
+           rhs = c(1, 0, 0), names = var.names)
+   
+   mat <- matrix(0, ncol = N + 1, nrow = N + 1)
+   mat[1:N, 1:N] <- 2 * cov(r_mat)
+   mat[N + 1, N + 1] <-  1e-04
+   
+   objective <- Q_objective(Q = - mat, L = c(rep(0, N), 0))
+   
+   list(objective = objective, constraint = constraint)     
+ }
> 
> N <- NCOL(returns)
> tmp <-sharpe_objective(returns)
> 
> lp <- OP(maximum=TRUE)
> objective(lp) <- tmp$objective
> 
> mat <- cbind(diag(N),  1)
> shortsell_constraint <- L_constraint(mat, dir = rep(">=", N), rhs = rep(0, N))
> 
> constraints(lp) <- rbind(tmp$constraint, shortsell_constraint)
> 
> bounds(lp) <- V_bound(li = seq_len(N +1), lb = c(rep(-Inf, N), 0))
> 
> (sol <- ROI_solve(lp, solver = "quadprog"))
Optimal solution found.
The objective value is: -9.586494e+04
> 
> sol_sharpe <- solution(sol)
> x_opt <- round(sol_sharpe[1:2]/sol_sharpe["kappa_sharpe"], 3)
> names(x_opt) <- colnames(returns)
> x_opt
 NEAR  MINT 
0.585 0.415 

我已经打开了一个问题https://github.com/braverock/PortfolioAnalytics/issues/26 https://github.com/braverock/PortfolioAnalytics/issues/26在 Github PortfolioAnalyrics 包上并询问https://stat.ethz.ch/pipermail/r-sig-finance/2020q3/014982.html https://stat.ethz.ch/pipermail/r-sig-finance/2020q3/014982.html也在 R-SIG-Finance 中,但没有收到答复。任何有关解决方案或解决方法的想法都将受到赞赏。

编辑: 我知道问题出在哪里了。功能中max_sr_opt (https://github.com/braverock/PortfolioAnalytics/blob/master/R/optFUN.R https://github.com/braverock/PortfolioAnalytics/blob/master/R/optFUN.R)

# This function uses optimize() to find the target return value that 
# results in the maximum sharpe ratio (mean / sd).
# returns the target return value
max_sr_opt <- function(R, constraints, moments, lambda_hhi, conc_groups, solver, control){
  # create a copy of the moments that can be modified
  tmp_moments <- moments
  
  # Find the maximum return
  max_ret <- maxret_opt(R=R, moments=moments, constraints=constraints, 
                        target=NA, solver="glpk", control=control)
  max_mean <- as.numeric(-max_ret$out)
  
  # Find the minimum return
  tmp_moments$mean <- -1 * moments$mean
  min_ret <- maxret_opt(R=R, moments=tmp_moments, constraints=constraints, 
                        target=NA, solver="glpk", control=control)
  min_mean <- as.numeric(min_ret$out)
  
  # use optimize() to find the target return value that maximizes sharpe ratio
  opt <- try(optimize(f=sharpe_obj_fun, R=R, constraints=constraints, 
                      solver=solver, lambda_hhi=lambda_hhi, 
                      conc_groups=conc_groups, moments=moments, control=control,
                      lower=min_mean, upper=max_mean, 
                      maximum=TRUE, tol=.Machine$double.eps), 
             silent=TRUE)
  if(inherits(opt, "try-error")){
    stop(paste("Objective function failed with message\n", opt))
    return(NULL)
  }
  return(opt$maximum)
}

实际发生的情况是对于这个特定的例子max_mean and min_mean是相等/相同的,当然调用optimize() fails.

我尝试增加max_mean并减少min_mean打电话之前optimize()但解决方案非常不稳定,并且取决于我增加和减少的量max_mean and min_mean:

  if (max_mean == min_mean) {
    epsilon <- 0.01
    max_mean <- max_mean*(1.0 + epsilon)
    min_mean <- min_mean*(1.0 - epsilon)
  }

这是不同值的结果epsilon:

# epsilon <- 0.01
#> extractWeights(maxSROpt)
#NEAR MINT 
#NA   NA 

# epsilon <- 0.001
#> extractWeights(maxSROpt)
#NEAR      MINT 
#0.4452578 0.5547422 

# epsilon <- 0.0001
#> extractWeights(maxSROpt)
#NEAR      MINT 
#0.8923873 0.1076127 

# epsilon <- 0.00001
#> extractWeights(maxSROpt)
#NEAR       MINT 
#0.98926189 0.01073811 

# epsilon <- 0.000001
#> extractWeights(maxSROpt)
#NEAR        MINT 
#0.998951981 0.001048019 

# epsilon <- 0.0000001
#> extractWeights(maxSROpt)
#NEAR         MINT 
#9.999111e-01 8.890042e-05 

有什么想法或更好的方法来解决这个问题或找到解决方法吗?


None

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

最大夏普比率投资组合因 PortfolioAnalytics 中的错误而失败 的相关文章

  • 从网络源获取 R 中的数据作为数据框

    我正在尝试使用 RCurl 包将一些空气污染背景数据作为 data frame 直接加载到 R 中 该网站有 3 个下拉框 用于在下载 csv 文件之前选择选项 如下图所示 我试图从下拉框中选择 3 个值 并使用 下载 CSV 按钮将数据作
  • 指定 R 中 hist() 中的 bin 数量?

    我尝试指定垃圾箱的数量hist R为10 如下 gt hist x breaks 10 但垃圾箱的数量并不完全是 10 我尝试了几个其他数量的垃圾箱 结果发生了同样的情况 hist says breaks可以指定 给出直方图单元格数量的单个
  • 如何生成向量的所有组合[重复]

    这个问题在这里已经有答案了 假设我有 3 个绿球 2 个橙球和 8 个黄球 我想订购它们 鉴于所有相同颜色的球都是相同的 如何生成所有可能的序列 在 R 中 使用gregmisc 我可以 balls lt c orange orange g
  • 使用 ggplot2 修改点子集的形状

    我正在尝试绘制一个沿大量维度变化的大型散点图 这是我的起始情节 p lt ggplot mtcars aes wt mpg shape cyl colour gear size carb geom point 使用mtcars数据集 我只是
  • Java 中查看 ArrayList 是否包含对象的最有效方法

    我有一个 Java 对象的 ArrayList 这些对象有四个字段 我用其中两个字段来将对象视为与另一个对象相等 我正在寻找最有效的方法 给定这两个字段 以查看数组是否包含该对象 问题在于这些类是基于 XSD 对象生成的 因此我无法修改类本
  • 如何在不循环的情况下添加组ID?

    我有数据框 例如 productid ordernum p1 10 p2 20 p3 30 p4 5 p5 20 p6 8 我想添加另一列 称为 groupid 它将产品按顺序分组在一起 一旦 sum ordernum 达到 30 分配一个
  • dplyr,do(),从模型中提取参数而不丢失分组变量

    R 帮助中关于 do 的示例略有不同 by cyl lt group by mtcars cyl models lt by cyl gt do mod lm mpg disp data coefficients lt models gt d
  • 使用 dplyr:group_by 将数据帧分成多个子集?

    有没有办法根据 group by 组使用 dplyr 将一个数据帧拆分为数据帧的子集 mtcars gt group by cyl gear gt codes 非常感谢 好吧 并不是你真的想要 但你可以这样做tidyr 即nearly一样的
  • 限制数据框中所有单元格的字符串长度?

    您好 有没有一种方法可以限制 data frame 中所有列的字符串文本大小 而不必循环遍历每一列并一次使用 str trunc 之类的东西 例如下面的数据框 我可以将所有文本大小限制为仅 5 个字符 而不必一次只执行一列吗 如果有 50
  • R:将 readRDS 应用于 .Rds 文件名的列表对象

    我有几个包含数据帧对象的 Rds 文件 我想对每个文件应用一个函数并将数据帧绑定到单个数据帧中 但是 当我尝试从文件名列表中读取多个 Rds 文件时 我收到错误 FUN X i 中的错误 从连接读取时出错 readRDS 不适用于列表吗 R
  • Gekko - 最佳调度的不可行解决方案,与 gurobi 的比较

    我对 Gurobi 有点熟悉 但转向 Gekko 因为后者似乎有一些优势 不过 我遇到了一个问题 我将用我想象的苹果园来说明这一问题 5周的收获期 horizon T 5 就在我们身上 我的 非常微薄的 产出将是 3 0 7 0 9 0 5
  • 从 R 中的 HTTPS 连接逐行读取

    当创建连接时open r 它允许逐行读取 这对于批量处理大数据流非常有用 例如这个脚本 https gist github com jeroenooms d33a24958d99bb969ac0通过一次读取 100 行来解析相当大的 gzi
  • 将 sf voronoi 多边形裁剪到边界框时出错

    我正在尝试将 voronoi polygons 使用 sf package 创建 剪辑 到边界框 但它引发了我无法定义的错误 我对 R 的空间世界不太有经验 感谢所有帮助 样本数据 stations lt structure list ST
  • 仅保留百分比的尾随零

    给出以下示例 library pander tableAbs lt Titanic 1 1 tablePct lt round prop table tableAbs 100 2 table lt cbind tableAbs tableP
  • 如何按 data.table 中的十分位数组计算统计数据

    我有一个 data table 想按组计算统计数据 R set seed 1 R DT data table a rnorm 100 b rnorm 100 这些组应该定义为 R quantile DT a probs seq 1 9 1
  • 比较 R 中的两个字符向量

    我有两个 ID 字符向量 我想比较这两个字符向量 特别是我对以下数字感兴趣 A和B各有多少个ID 有多少个ID在A中但不在B中 有多少个ID在B但不在A 我还想画维恩图 以下是一些可以尝试的基础知识 gt A c Dog Cat Mouse
  • ggplot散点图中的图例问题

    我想使用 ggplot 创建显示方法比较数据的散点图 绘图应包含原始数据 理想线和带误差的拟合线 图例应显示理想线和拟合线的线型 线宽 线颜色 我可以获得大部分我想要的东西 但是图例存在以下问题 图例显示每种线型有 2 条线 为什么 如何解
  • 如何在R中同时对三个字段进行网络分析

    如何在 R 中同时对三个字段进行网络分析 下面是示例数据以及desired output在最后一栏中 df lt data frame stringsAsFactors FALSE id 1 c ABC ABC BCD CDE DEF EF
  • 如何匹配 R 中的所有匹配项?

    我有 1000 个名字的列表 说A 我还有另外 5 个名字的清单 说B 我想找出这5个名字出现在1000个号码列表中的第几行 例如 Amy 在 A 中可以出现 25 次 B 里有艾米 我想知道 Amy 出现在 A 中的哪些行 我以前使用过
  • R 中的 Websocket

    我设法在 R 中建立到 Mtgox websocket 的连接 规格如下 url https socketio mtgox com mtgox Currency USD https socketio mtgox com mtgox Curr

随机推荐

  • com.sun.faces.application.view.FaceletViewHandlingStrategy.createView 处出现 NullPointerException

    我正在尝试在 websphere 8 5 1 上从 jsf 1 2 升级到 jsf 2 2 2 我所做的如下 1 put jsf api 2 2 2 jar and jsf impl 2 2 2 jar在我的 lib 文件夹中 2 将 we
  • Eclipse 背景颜色不会改变 OSX、Pydev

    请在标记为重复之前阅读 我已经寻找我的具体问题的答案很长时间了 但还没有找到 我的 Eclipse Luna 4 4 1 IDE 拒绝更改文本编辑器的背景颜色 请看截图 IDE启动时似乎是黑色的 几秒钟后它变成白色 我已经尝试过 在更改之间
  • 如何访问com.android.internal.telephony.gsm.GsmSmsDispatcher实例?

    我需要访问 com android internal telephony gsm GsmSmsDispatcher发送原始Pdu method 我做了一些研究发现GSMPhone类包含Gsm短信调度程序实例 我希望获得GSMPhone实例来
  • 如何在 Objective-C 中组合两个数组?

    JavaScript 的 Objective C 等价物是什么concat 功能 假设两个对象都是数组 你会如何组合它们 NSArray s arrayByAddingObjectsFromArray 或多或少相当于 JavaScript
  • 如何在一条SQL语句中获取varchar[n]字段的大小?

    假设我有一个 SQL 表 其中有一个名为 Remarks 的 varchar 1000 字段 我想编写一个 SQL 语句 该语句在执行时将返回 1000 或者将来 varchar 字段的大小可能更改为的任何值 就像是SELECT size
  • 宽度 100%,周围有白色边框。为什么?

    好的 我正在尝试设计一个网站 其顶部的图像跨越浏览器的整个宽度 在其下方 我想放置不同颜色的 div 容器 这些容器也跨越整个宽度 有点像这样 http hayden demo squarespace com http hayden dem
  • 如何使用 Kue 安排每周四一次的工作?

    Using Kue https github com learnboost kue 如何安排每周四执行一次作业 Kue自述文件提到我可以延迟一个Job 但是在特定时间重复执行Job怎么样 我可以通过 cron 作业做我想做的事情 但我喜欢
  • Amazon S3 只写访问

    我将多个客户的文件直接备份到 Amazon S3 存储桶中 每个客户备份到不同的文件夹 我使用一个简单的 Net 客户端 每晚在 Windows 任务下运行一次 为了允许写入存储桶 我的客户端需要 AWS 访问密钥和秘密密钥 我创建了一对新
  • 如何在 Pandoc 生成的 PDF 表格中添加垂直线

    有没有办法让 Pandoc 在 PDF 输出表格中放置垂直线 而无需编辑 Pandoc 的源代码 目前我正在使用以下方法生成 PDF pandoc template pandoc template tex V geometry margin
  • Selenium:启动服务器时出现无效的“已经运行”错误

    我正在尝试启动并运行 Selenium 服务器 但是 当我输入 java jar selenium server standalone 2 0b3 jar 我得到一个例外 Selenium 已经在端口 4444 上运行 或者其他一些服务正在
  • 如何限制进程的CPU使用率

    我想创建一个程序 即使在计算机空闲时也可以限制进程的 CPU 使用率 我编写了一个设置进程优先级的程序 但是如果计算机空闲 cpu使用率可以达到95 该进程包含 元素 是我要限制的进程 private static readonly str
  • HEREDOC 干扰代码缩进

    我喜欢 HEREDOC 语法 例如对于生成的 HTML 的边缘情况 不值得放入模板中 不过 唯一让我烦恼的是定界符字符串的内容和结束标记遵循第一列 这会搞乱嵌套代码布局 class myclass function construct a
  • 如何检查用户何时在 Firebase 中通过了电话身份验证?

    我有一个 Android 应用程序 用户在应用程序中使用他们的电话号码注册 我使用 Firebase 在身份验证中存储他们的电话和电子邮件 并且我还在实时数据库中保存他们的电话 全名和电子邮件 实时数据库的结构如下 Auto Generat
  • 如何在 Rails 4 中设置自定义字符串外键?

    如何设置关联以使用字符串foreign key正确设置has one class Pharmaceutic lt ActiveRecord Base has one pharmaceutic group foreign key code e
  • 使用 Prawn 在 pdf 中添加图像

    我在使用 Prawn 作为 pdf 生成器将图像添加到 PDF 时遇到问题 我正在尝试使用以下代码添加图像 def header text something image Prawn DATADIR images logo small pn
  • 将 R 中的值列表替换为另一个值列表

    我有一个包含任何这些值的数据框 from c A C G T R Y M K W S N 我想相应地替换为 to c AA CC GG TT AG CT AC GT AT CG NN 最好的方法是什么 循环替换所有值 或循环矩阵位置 或任何
  • 与接口同名的 TypeScript 类

    我想声明一个名为Date它有一个 Date 类型的属性 如 JavaScript 的 TypeScript 接口 日期对象 https developer mozilla org en US docs Web JavaScript Refe
  • 错误 LNK1104:无法打开文件“mfc90.lib”

    我正在使用 Visual Studio 2012 Professional 我的项目参考使用 VS2008 v90 构建的静态库 当我使用 VS2012 v110 构建时 error LNK1104 cannot open file mfc
  • 构造函数不接受我的信息

    所以构造函数是说 是预期的 错误不是声明 并且 预期的 Person num1 num2 num3 num1 new Person Allison 6600 Crescent Ave 32 9024231421 num2 new Perso
  • 最大夏普比率投资组合因 PortfolioAnalytics 中的错误而失败

    在计算简单的最大夏普比率投资组合权重时 我在 PortfolioAnalytics 中遇到了一个问题 Error in max sr opt R R constraints constraints moments moments Objec