Stock Market:

The stock market refers to the collection of markets and exchanges where regular activities of buying, selling, and issuance of shares of publicly-held companies take place. -Souce: Investopedia
NYSE

S&P 500:

The Standard and Poor’s 500, or simply the S&P 500, is a free-float, weighted measurement stock market index of the 500 large companies listed on stock exchanges in the United States. It is one of the most commonly followed equity indices.

Reading in the Data

#Note GSPC is the ticker symbol for S&P500
data(GSPC, package="DMwR2")
About the Data

We have the data for S&P 500 daily stock prices from January 1970 all the way to January 2016.

We have the following columns in the dataset:
* Date of the stock exchange session
* Open Price at the beginning of the session
* Highest price during the session
* Lowest price
* Closing Price of the Session
* Volume of transactions
* Adjusted close price

Note: Adjusted close price is the closing price adjusted for stock splits, dividents/distributions and rights offerings

head(GSPC)
           GSPC.Open GSPC.High GSPC.Low GSPC.Close GSPC.Volume GSPC.Adjusted
1970-01-02     92.06     93.54    91.79      93.00     8050000         93.00
1970-01-05     93.00     94.25    92.53      93.46    11490000         93.46
1970-01-06     93.46     93.81    92.13      92.82    11460000         92.82
1970-01-07     92.82     93.38    91.93      92.63    10010000         92.63
1970-01-08     92.63     93.47    91.99      92.68    10670000         92.68
1970-01-09     92.68     93.25    91.82      92.40     9380000         92.40
tail(GSPC)
           GSPC.Open GSPC.High GSPC.Low GSPC.Close GSPC.Volume GSPC.Adjusted
2016-01-15   1916.68   1916.68  1857.83    1880.33  5468460000       1880.33
2016-01-19   1888.66   1901.44  1864.60    1881.33  4928350000       1881.33
2016-01-20   1876.18   1876.18  1812.29    1859.33  6416070000       1859.33
2016-01-21   1861.46   1889.85  1848.98    1868.99  5078810000       1868.99
2016-01-22   1877.40   1908.85  1877.40    1906.90  4901760000       1906.90
2016-01-25   1906.28   1906.28  1875.97    1877.08  4401380000       1877.08
What to Predict?

Setting Function for our Indicator Ti

T.ind <- function(quotes, tgt.margin = 0.025, n.days = 10) {
  v <- apply(HLC(quotes), 1, mean)
  v[1] <- Cl(quotes)[1]
  
  r <- matrix(NA, ncol = n.days, nrow = NROW(quotes))
  for (x in 1:n.days) r[, x] <- Next(Delt(v, k = x), x)
  
  x <- apply(r, 1, function(x) sum(x[x > tgt.margin | x < -tgt.margin]))
  
  if (is.xts(quotes)) xts(x, time(quotes)) else x}
Candle Chart for the last 3 Months of the provided data
library(quantmod)
Loading required package: TTR
candleChart(last(GSPC,'3 months'),theme='white', TA=NULL)

avgPrice <- function(p) apply(HLC(p),1,mean)
addAvgPrice <- newTA(FUN=avgPrice,col=1,legend='AvgPrice')
addT.ind <- newTA(FUN=T.ind,col='red', legend='tgtRet')
addAvgPrice(on=1) 

addT.ind()

Setting functions for Technical Indicators

library(TTR)
 myATR <- function(x) ATR(HLC(x))[,'atr']
 mySMI <- function(x) SMI(HLC(x))[, "SMI"]
 myADX <- function(x) ADX(HLC(x))[,'ADX']
 myAroon <- function(x) aroon(cbind(Hi(x),Lo(x)))$oscillator
 myBB <- function(x) BBands(HLC(x))[, "pctB"]
 myChaikinVol <- function(x) Delt(chaikinVolatility(cbind(Hi(x),Lo(x))))[, 1]
 myCLV <- function(x) EMA(CLV(HLC(x)))[, 1]
 myEMV <- function(x) EMV(cbind(Hi(x),Lo(x)),Vo(x))[,2]
 myMACD <- function(x) MACD(Cl(x))[,2]
 myMFI <- function(x) MFI(HLC(x), Vo(x))
 mySAR <- function(x) SAR(cbind(Hi(x),Cl(x))) [,1]
 myVolat <- function(x) volatility(OHLC(x),calc="garman")[,1]

Random Forest Model Building

library(randomForest)
library(quantmod)
data.model <- specifyModel(T.ind(GSPC) ~ Delt(Cl(GSPC),k=1:10) + myATR(GSPC) + mySMI(GSPC) + myADX(GSPC) + myAroon(GSPC) +
myBB(GSPC) + myChaikinVol(GSPC) + myCLV(GSPC) +
CMO(Cl(GSPC)) + EMA(Delt(Cl(GSPC))) + myEMV(GSPC) +
myVolat(GSPC) + myMACD(GSPC) + myMFI(GSPC) + RSI(Cl(GSPC)) +
mySAR(GSPC) + runMean(Cl(GSPC)) + runSD(Cl(GSPC)))
Using formula(x) is deprecated when x is a character vector of length > 1.
  Consider formula(paste(x, collapse = " ")) instead.
set.seed(1234)

rf <- buildModel(data.model,method='randomForest', training.per=c("1995-01-01","2005-12-30"),
ntree=1000, importance=TRUE)

Alternative model building example Using modelData() function

ex.model <- specifyModel(T.ind(IBM) ~ Delt(Cl(IBM), k = 1:3))
data <- modelData(ex.model, data.window = c("2009-01-01",  "2009-08-10"))

Checking Importance of Variables

varImpPlot(rf@fitted.model, type = 1)

Using Value of 30 for importance threshold to select model features

imp <- importance(rf@fitted.model, type = 1)
rownames(imp)[which(imp > 30)]
 [1] "myATR.GSPC"      "mySMI.GSPC"      "myADX.GSPC"      "myAroon.GSPC"    "myEMV.GSPC"      "myVolat.GSPC"    "myMACD.GSPC"    
 [8] "myMFI.GSPC"      "mySAR.GSPC"      "runMean.Cl.GSPC" "runSD.Cl.GSPC"  

Heatmap of Correlations

#Creating correlation matrix
cormat <- round(cor(Tdata.train),2)
head(cormat)
                                      T.ind.GSPC Delt.Cl.GSPC.k.1.10.Delt.1.arithmetic Delt.Cl.GSPC.k.1.10.Delt.2.arithmetic
T.ind.GSPC                                  1.00                                  0.12                                  0.04
Delt.Cl.GSPC.k.1.10.Delt.1.arithmetic       0.12                                  1.00                                  0.73
Delt.Cl.GSPC.k.1.10.Delt.2.arithmetic       0.04                                  0.73                                  1.00
Delt.Cl.GSPC.k.1.10.Delt.3.arithmetic       0.01                                  0.58                                  0.83
Delt.Cl.GSPC.k.1.10.Delt.4.arithmetic      -0.01                                  0.49                                  0.70
Delt.Cl.GSPC.k.1.10.Delt.5.arithmetic      -0.02                                  0.43                                  0.62
                                      Delt.Cl.GSPC.k.1.10.Delt.3.arithmetic Delt.Cl.GSPC.k.1.10.Delt.4.arithmetic
T.ind.GSPC                                                             0.01                                 -0.01
Delt.Cl.GSPC.k.1.10.Delt.1.arithmetic                                  0.58                                  0.49
Delt.Cl.GSPC.k.1.10.Delt.2.arithmetic                                  0.83                                  0.70
Delt.Cl.GSPC.k.1.10.Delt.3.arithmetic                                  1.00                                  0.87
Delt.Cl.GSPC.k.1.10.Delt.4.arithmetic                                  0.87                                  1.00
Delt.Cl.GSPC.k.1.10.Delt.5.arithmetic                                  0.77                                  0.90
                                      Delt.Cl.GSPC.k.1.10.Delt.5.arithmetic Delt.Cl.GSPC.k.1.10.Delt.6.arithmetic
T.ind.GSPC                                                            -0.02                                 -0.03
Delt.Cl.GSPC.k.1.10.Delt.1.arithmetic                                  0.43                                  0.39
Delt.Cl.GSPC.k.1.10.Delt.2.arithmetic                                  0.62                                  0.56
Delt.Cl.GSPC.k.1.10.Delt.3.arithmetic                                  0.77                                  0.69
Delt.Cl.GSPC.k.1.10.Delt.4.arithmetic                                  0.90                                  0.81
Delt.Cl.GSPC.k.1.10.Delt.5.arithmetic                                  1.00                                  0.92
                                      Delt.Cl.GSPC.k.1.10.Delt.7.arithmetic Delt.Cl.GSPC.k.1.10.Delt.8.arithmetic
T.ind.GSPC                                                            -0.03                                 -0.03
Delt.Cl.GSPC.k.1.10.Delt.1.arithmetic                                  0.36                                  0.33
Delt.Cl.GSPC.k.1.10.Delt.2.arithmetic                                  0.52                                  0.48
Delt.Cl.GSPC.k.1.10.Delt.3.arithmetic                                  0.64                                  0.59
Delt.Cl.GSPC.k.1.10.Delt.4.arithmetic                                  0.74                                  0.69
Delt.Cl.GSPC.k.1.10.Delt.5.arithmetic                                  0.84                                  0.78
                                      Delt.Cl.GSPC.k.1.10.Delt.9.arithmetic Delt.Cl.GSPC.k.1.10.Delt.10.arithmetic myATR.GSPC mySMI.GSPC myADX.GSPC
T.ind.GSPC                                                            -0.02                                  -0.02       0.01      -0.02       0.04
Delt.Cl.GSPC.k.1.10.Delt.1.arithmetic                                  0.31                                   0.30       0.00       0.03       0.02
Delt.Cl.GSPC.k.1.10.Delt.2.arithmetic                                  0.45                                   0.42       0.00       0.08       0.03
Delt.Cl.GSPC.k.1.10.Delt.3.arithmetic                                  0.55                                   0.52      -0.01       0.13       0.03
Delt.Cl.GSPC.k.1.10.Delt.4.arithmetic                                  0.64                                   0.61      -0.02       0.19       0.03
Delt.Cl.GSPC.k.1.10.Delt.5.arithmetic                                  0.73                                   0.68      -0.02       0.25       0.03
                                      myAroon.GSPC myBB.GSPC myChaikinVol.GSPC myCLV.GSPC CMO.Cl.GSPC EMA.Delt.Cl.GSPC myEMV.GSPC myVolat.GSPC
T.ind.GSPC                                   -0.03     -0.03              0.00       0.00        0.00             0.00      -0.07         0.02
Delt.Cl.GSPC.k.1.10.Delt.1.arithmetic         0.06      0.29              0.01       0.42        0.24             0.57       0.12         0.00
Delt.Cl.GSPC.k.1.10.Delt.2.arithmetic         0.12      0.48              0.00       0.51        0.34             0.74       0.26        -0.02
Delt.Cl.GSPC.k.1.10.Delt.3.arithmetic         0.17      0.59              0.00       0.56        0.41             0.83       0.35        -0.04
Delt.Cl.GSPC.k.1.10.Delt.4.arithmetic         0.23      0.67              0.00       0.59        0.47             0.87       0.43        -0.05
Delt.Cl.GSPC.k.1.10.Delt.5.arithmetic         0.28      0.72              0.00       0.60        0.53             0.89       0.49        -0.07
                                      myMACD.GSPC myMFI.GSPC RSI.Cl.GSPC mySAR.GSPC runMean.Cl.GSPC runSD.Cl.GSPC
T.ind.GSPC                                  -0.02      -0.02        0.00      -0.02           -0.02          0.04
Delt.Cl.GSPC.k.1.10.Delt.1.arithmetic        0.00       0.14        0.32      -0.01            0.00          0.00
Delt.Cl.GSPC.k.1.10.Delt.2.arithmetic        0.02       0.25        0.45      -0.01           -0.01         -0.01
Delt.Cl.GSPC.k.1.10.Delt.3.arithmetic        0.05       0.33        0.53      -0.02           -0.01         -0.02
Delt.Cl.GSPC.k.1.10.Delt.4.arithmetic        0.08       0.38        0.60      -0.02           -0.01         -0.02
Delt.Cl.GSPC.k.1.10.Delt.5.arithmetic        0.13       0.44        0.65      -0.02           -0.01         -0.03
#Get upper triangle of the correlation matrix and applying to cormat
  get_upper_tri <- function(cormat){
    cormat[lower.tri(cormat)]<- NA
    return(cormat)
  }
upper_tri <- get_upper_tri(cormat)

#Melting the correlation matrix
library(reshape2)
melted_cormat <- melt(upper_tri, na.rm = TRUE)
melted_cormat

#Using ggplot to create heatmap of correaltions
library(ggplot2)
Need help? Try Stackoverflow: https://stackoverflow.com/tags/ggplot2

Attaching package: ‘ggplot2’

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

    margin
ggheatmap <- ggplot(data = melted_cormat, aes(Var2, Var1, fill = value))+
 geom_tile(color = "white")+
 scale_fill_gradient2(low = "blue", high = "red", mid = "white", 
 midpoint = 0, limit = c(-1,1), space = "Lab", name="Pearson\nCorrelation") +
 theme_minimal() + theme(axis.text.x = element_text(angle = 45, vjust = 1, 
 size = 12, hjust = 1))+ coord_fixed()
ggheatmap

Variables with Highest Correlation with T.ind (None above + or - 0.7)
  • myADX
  • myVolat
  • myEVM
  • runSD.Cl
  • All of the above should be in our model including those with importance > 30

Final Modeling Dataset

data.model <- specifyModel(T.ind(GSPC) ~ myATR(GSPC) + mySMI(GSPC) +  myADX(GSPC) + 
                           myAroon(GSPC) + myEMV(GSPC) + myVolat(GSPC) + 
                           myMACD(GSPC) + myMFI(GSPC) + mySAR(GSPC) + 
                           runMean(Cl(GSPC)) + runSD(Cl(GSPC)))
Using formula(x) is deprecated when x is a character vector of length > 1.
  Consider formula(paste(x, collapse = " ")) instead.

Prediction Tasks

Regression

Tdata.train <- as.data.frame(modelData(data.model,
                                data.window=c('1970-01-02','2005-12-30')))
Tdata.eval <- na.omit(as.data.frame(modelData(data.model,
                                data.window=c('2006-01-01','2016-01-25'))))
Tform <- as.formula('T.ind.GSPC ~ .')

Classification for T.ind

buy.thr <- 0.1
sell.thr <- -0.1
Tdata.trainC <- cbind(Signal=trading.signals(Tdata.train[["T.ind.GSPC"]],
                                             buy.thr,sell.thr),
                      Tdata.train[,-1])
Tdata.evalC <-  cbind(Signal=trading.signals(Tdata.eval[["T.ind.GSPC"]],
                                             buy.thr,sell.thr),
                      Tdata.eval[,-1])
TformC <- as.formula("Signal ~ .")

Prediction Models

ANN (Artificial Neural Network)

set.seed(1234)
library(nnet)
norm.data <- data.frame(T.ind.GSPC=Tdata.train[[1]],scale(Tdata.train[,-1]))
nn <- nnet(Tform, norm.data[1:1000, ], size = 5, decay = 0.01, 
           maxit = 1000, linout = TRUE, trace = FALSE)
preds <- predict(nn, norm.data[1001:2000, ])

Transforming Predictions into Signals

library(DMwR2)
sigs.nn <- trading.signals(preds,0.1,-0.1)
true.sigs <- trading.signals(Tdata.train[1001:2000, "T.ind.GSPC"], 0.1, -0.1)
sigs.PR(sigs.nn,true.sigs)
    precision    recall
s   0.2809917 0.1931818
b   0.3108108 0.2857143
s+b 0.2973978 0.2373887

Using nnet() on our Traning Data

set.seed(1234)
library(nnet)
norm.data <- data.frame(Signal=Tdata.trainC$Signal,scale(Tdata.trainC[,-1]))
nn <- nnet(Signal ~ ., norm.data[1:1000, ], size = 10, decay = 0.01, 
           maxit = 1000, trace = FALSE)
preds <- predict(nn, norm.data[1001:2000, ], type = "class")

Calculating Model Precision and Recall

sigs.PR(preds, norm.data[1001:2000, 1])
    precision    recall
s   0.3607595 0.3238636
b   0.3267974 0.3105590
s+b 0.2250804 0.2077151

Regression Task using SVM

set.seed(1234)
library(e1071)
sv <- svm(Tform, Tdata.train[1:1000, ], gamma = 0.001, cost = 100)
s.preds <- predict(sv, Tdata.train[1001:2000, ])
sigs.svm <- trading.signals(s.preds, 0.1, -0.1)
true.sigs <- trading.signals(Tdata.train[1001:2000, "T.ind.GSPC"], 0.1, -0.1)
sigs.PR(sigs.svm, true.sigs)
    precision      recall
s       0.375 0.017045455
b         NaN 0.000000000
s+b     0.375 0.008902077

Regression Task Using KSVM

library(kernlab)

Attaching package: ‘kernlab’

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

    alpha
ksv <- ksvm(Signal ~ ., Tdata.trainC[1:1000, ], C = 10)
ks.preds <- predict(ksv, Tdata.trainC[1001:2000, ])
sigs.PR(ks.preds, Tdata.trainC[1001:2000, 1])
    precision    recall
s   0.2365591 0.2500000
b   0.3246753 0.1552795
s+b 0.2623574 0.2047478

Regression Task Using Earth

library(earth)
Loading required package: Formula
Loading required package: plotmo
Loading required package: plotrix
Loading required package: TeachingDemos
e <- earth(Tform, Tdata.train[1:1000, ])
e.preds <- predict(e, Tdata.train[1001:2000, ])
sigs.e <- trading.signals(e.preds, 0.1, -0.1)
true.sigs <- trading.signals(Tdata.train[1001:2000, "T.ind.GSPC"],  0.1, -0.1)
sigs.PR(sigs.e, true.sigs)
    precision    recall
s   0.2894737 0.2500000
b   0.3504274 0.2546584
s+b 0.3159851 0.2522255

Summarizing e, which had the best precision and recall out of all the models

summary(e)
Call: earth(formula=Tform, data=Tdata.train[1:1000,])

                          coefficients
(Intercept)                  0.5241811
h(myATR.GSPC-2.56817)        1.2724353
h(-61.825-mySMI.GSPC)        0.0594203
h(myADX.GSPC-40.6215)       -0.0104803
h(50.657-myADX.GSPC)        -0.0025279
h(myADX.GSPC-50.657)         0.0823181
h(0.204717-myVolat.GSPC)    -0.5105416
h(myVolat.GSPC-0.204717)    -5.6100523
h(myVolat.GSPC-0.271459)     5.6725474
h(mySAR.GSPC-74.7031)       -0.0693496
h(87.944-mySAR.GSPC)        -0.0575104
h(mySAR.GSPC-87.944)         0.0800171
h(runMean.Cl.GSPC-79.265)    0.2074780
h(81.942-runMean.Cl.GSPC)    0.1058493
h(runMean.Cl.GSPC-81.942)   -0.2185753

Selected 15 of 18 terms, and 6 of 11 predictors
Termination condition: Reached nk 23
Importance: myVolat.GSPC, runMean.Cl.GSPC, myATR.GSPC, mySMI.GSPC, mySAR.GSPC, myADX.GSPC, myAroon.GSPC-unused, myEMV.GSPC-unused, ...
Number of terms at each degree of interaction: 1 14 (additive model)
GCV 0.01470628    RSS 13.86568    GRSq 0.3536668    RSq 0.38939

Variables ordered by decreasing importance and unused variables shown

evimp(e, trim=FALSE)
                     nsubsets   gcv    rss
myVolat.GSPC               13 100.0  100.0
runMean.Cl.GSPC            13 100.0  100.0
myATR.GSPC                 12  96.7   96.4
mySMI.GSPC                 11  81.5   82.4
mySAR.GSPC                  7  44.1   47.7
myADX.GSPC                  5  57.8>  58.5>
myAroon.GSPC-unused         0   0.0    0.0
myEMV.GSPC-unused           0   0.0    0.0
myMACD.GSPC-unused          0   0.0    0.0
myMFI.GSPC-unused           0   0.0    0.0
runSD.Cl.GSPC-unused        0   0.0    0.0

From Predictions to Action

User-simulated trading policy function

policy.1 <- function(signals,market,opened.pos,money,
                     bet=0.2,hold.time=10,
                     exp.prof=0.025, max.loss= 0.05
                     )
  {
    d <- NROW(market) # ID of today
    orders <- NULL
    nOs <- NROW(opened.pos)
    # nothing to do
    if (!nOs && signals[d] == 'h') return(orders)

    # Checking if we can open new positions
    # i) long positions
    if (signals[d] == 'b' && !nOs) {
      quant <- round(bet*money/Cl(market)[d],0)
      if (quant > 0) 
        orders <- rbind(orders,
              data.frame(order=c(1,-1,-1),order.type=c(1,2,3), 
                         val = c(quant,
                                 Cl(market)[d]*(1+exp.prof),
                                 Cl(market)[d]*(1-max.loss)
                                ),
                         action = c('open','close','close'),
                         posID = c(NA,NA,NA)
                        )
                       )
    # ii) short positions  
    } else if (signals[d] == 's' && !nOs) {
      # nr of stocks we already need to buy because of currently opened short          positions
      need2buy <- sum(opened.pos[opened.pos[,'pos.type']==-1,
                                 "N.stocks"])*Cl(market)[d]
      quant <- round(bet*(money-need2buy)/Cl(market)[d],0)
      if (quant > 0)
        orders <- rbind(orders,
              data.frame(order=c(-1,1,1),order.type=c(1,2,3), 
                         val = c(quant,
                                 Cl(market)[d]*(1-exp.prof),
                                 Cl(market)[d]*(1+max.loss)
                                ),
                         action = c('open','close','close'),
                         posID = c(NA,NA,NA)
                        )
                       )
    }
    
    # Checking if we need to close positions because their holding time is over
    if (nOs) 
      for(i in 1:nOs) {
        if (d - opened.pos[i,'Odate'] >= hold.time)
          orders <- rbind(orders,
                data.frame(order=-opened.pos[i,'pos.type'],
                           order.type=1,
                           val = NA,
                           action = 'close',
                           posID = rownames(opened.pos)[i]
                          )
                         )
      }
    orders}

Second trading strategy function

policy.2 <- function(signals,market,opened.pos,money,
                     bet=0.2,exp.prof=0.025, max.loss= 0.05
                    )
  {
    d <- NROW(market) # ID of today
    orders <- NULL
    nOs <- NROW(opened.pos)
    # nothing to do
    if (!nOs && signals[d] == 'h') return(orders)

    # Checking if we can open new positions
    # i) long positions
    if (signals[d] == 'b') {
      quant <- round(bet*money/Cl(market)[d],0)
      if (quant > 0) 
        orders <- rbind(orders,
              data.frame(order=c(1,-1,-1),order.type=c(1,2,3), 
                         val = c(quant,
                                 Cl(market)[d]*(1+exp.prof),
                                 Cl(market)[d]*(1-max.loss)
                                ),
                         action = c('open','close','close'),
                         posID = c(NA,NA,NA)
                        )
                       )
    # ii) short positions  
    } else if (signals[d] == 's') {
      # money already committed to buy stocks because of currently opened short         positions
      need2buy <- sum(opened.pos[opened.pos[,'pos.type']==-1,
                                 "N.stocks"])*Cl(market)[d]
      quant <- round(bet*(money-need2buy)/Cl(market)[d],0)
      if (quant > 0)
        orders <- rbind(orders,
              data.frame(order=c(-1,1,1),order.type=c(1,2,3), 
                         val = c(quant,
                                 Cl(market)[d]*(1-exp.prof),
                                 Cl(market)[d]*(1+max.loss)
                                ),
                         action = c('open','close','close'),
                         posID = c(NA,NA,NA)
                        )
                       )
    }
    orders}

Trading Simulator using SVM signals

# Train and test periods
library(quantmod)
start <- 1
len.tr <- 1000
len.ts <- 500
tr <- start:(start+len.tr-1)
ts <- (start+len.tr):(start+len.tr+len.ts-1)
# getting quotes for the testing period
data(GSPC)
date <- rownames(Tdata.train[start+len.tr,])
marketTP <- GSPC[paste(date,'/',sep='')][1:len.ts]
# learning the model and obtaining its signal predictions for the test period
library(e1071)
s <- svm(Tform, Tdata.train[tr,], cost=10,gamma=0.01)
p <- predict(s, Tdata.train[ts,])
sig <- trading.signals(p, 0.1, -0.1)
# now using the simulated trader during the testing period
t1 <- trading.simulator(marketTP, signals=sig, policy.func='policy.1',
policy.pars=list(exp.prof=0.05,bet=0.2,hold.time=30))

Checking Contents and Summary of t1

t1 

Object of class tradeRecord with slots:

     trading: <xts object with a numeric  500 x 5  matrix>
     positions: <numeric  8 x 7  matrix>
     init.cap :  1e+06 
     trans.cost :  5 
     policy.func :  policy.1 
     policy.pars : <list with  3  elements>
summary(t1)

== Summary of a Trading Simulation with  500  days ==

Trading policy function :  policy.1 
Policy function parameters:
     exp.prof  =  0.05 
     bet  =  0.2 
     hold.time  =  30 

Transaction costs :  5 
Initial Equity    :  1e+06 
Final Equity      :  1019712   Return :  1.97 %
Number of trading positions:  8 

Use function "tradingEvaluation()" for further stats on this simulation.

Performance during Simulation Period using Economic Indicators

tradingEvaluation(t1)  
    NTrades       NProf    PercProf          PL         Ret   RetOverBH       MaxDD SharpeRatio     AvgProf     AvgLoss       AvgPL     MaxProf 
       8.00        5.00       62.50    19712.54        1.97       -4.88    25630.72        0.04        5.11       -5.00        1.32        5.26 
    MaxLoss 
      -5.00 

Graphical Overview of Performance

plot(t1, marketTP,  theme = "white",  name = "SP500 Policy 1")
Rentability =  1.971254 %

Same Scenario using Second Trading Policy

t2 <- trading.simulator(marketTP, sig, "policy.2", list(exp.prof = 0.05, bet = 0.3))
summary(t2)

== Summary of a Trading Simulation with  500  days ==

Trading policy function :  policy.2 
Policy function parameters:
     exp.prof  =  0.05 
     bet  =  0.3 

Transaction costs :  5 
Initial Equity    :  1e+06 
Final Equity      :  1152332   Return :  15.23 %
Number of trading positions:  37 

Use function "tradingEvaluation()" for further stats on this simulation.
tradingEvaluation(t2)
    NTrades       NProf    PercProf          PL         Ret   RetOverBH       MaxDD SharpeRatio     AvgProf     AvgLoss       AvgPL     MaxProf 
      37.00       26.00       70.27   152332.30       15.23        8.38    67492.23        0.06        4.99       -4.89        2.05        5.26 
    MaxLoss 
      -5.00 
plot(t2, marketTP,  theme = "white",  name = "SP500 Policy 2a")
Rentability =  15.23323 %

Policy 2 with Different testing and traning Periods

start <- 2000
len.tr <- 1000
len.ts <- 500
tr <- start:(start + len.tr - 1)
ts <- (start + len.tr):(start + len.tr + len.ts - 1)
data(GSPC)
date <- rownames(Tdata.train[start+len.tr,])
marketTP <- GSPC[paste(date,'/',sep='')][1:len.ts]
s <- svm(Tform, Tdata.train[tr, ], cost = 10, gamma = 0.01)
p <- predict(s, Tdata.train[ts, ])
sig <- trading.signals(p, 0.1, -0.1)
t2 <-  trading.simulator(marketTP, sig, 
                         "policy.2", list(exp.prof = 0.05, bet = 0.3))
summary(t2) 

== Summary of a Trading Simulation with  500  days ==

Trading policy function :  policy.2 
Policy function parameters:
     exp.prof  =  0.05 
     bet  =  0.3 

Transaction costs :  5 
Initial Equity    :  1e+06 
Final Equity      :  215220.1   Return :  -78.48 %
Number of trading positions:  231 

Use function "tradingEvaluation()" for further stats on this simulation.
tradingEvaluation(t2)
    NTrades       NProf    PercProf          PL         Ret   RetOverBH       MaxDD SharpeRatio     AvgProf     AvgLoss       AvgPL     MaxProf 
     231.00       29.00       12.55  -784779.95      -78.48     -111.74   973177.31        0.02        5.19       -2.59       -1.62        5.56 
    MaxLoss 
      -4.89 
plot(t2, marketTP,  theme = "white",  name = "SP500 Policy 2b")
Rentability =  -78.47799 %

Model Evaluation and Selection

tradingWF <- function(form, train, test, 
                      quotes, pred.target="signals",
                      learner, learner.pars=NULL,
                      predictor.pars=NULL,
                      learn.test.type='fixed', relearn.step=30,
                      b.t, s.t,
                      policy, policy.pars,
                      trans.cost=5, init.cap=1e+06)
{
    ## obtain the model(s) and respective predictions for the test set
    if (learn.test.type == 'fixed') {  # a single fixed model
        m <- do.call(learner,c(list(form,train),learner.pars))
        preds <- do.call("predict",c(list(m,test),predictor.pars))
    } else {  # either slide or growing window strategies
        data <- rbind(train,test)
        n <- NROW(data)
        train.size <- NROW(train)
        sts <- seq(train.size+1,n,by=relearn.step)
        preds <- vector()
        for(s in sts) {  # loop over each relearn step
            tr <- if (learn.test.type=='slide') data[(s-train.size):(s-1),] 
                  else data[1:(s-1),]
            ts <- data[s:min((s+relearn.step-1),n),]
            
            m <- do.call(learner,c(list(form,tr),learner.pars))
            preds <- c(preds,do.call("predict",c(list(m,ts),predictor.pars)))
        }    
    } 
    
    ## Getting the trading signals
    if (pred.target != "signals") {  # the model predicts the T indicator
        predSigs <- trading.signals(preds,b.t,s.t)
        tgtName <- all.vars(form)[1]
        trueSigs <- trading.signals(test[[tgtName]],b.t,s.t)
    } else {  # the model predicts the signals directly
        tgtName <- all.vars(form)[1]
        if (is.factor(preds))
            predSigs <- preds
        else {
            if (preds[1] %in% levels(train[[tgtName]]))
                predSigs <- factor(preds,labels=levels(train[[tgtName]]),
                                   levels=levels(train[[tgtName]]))
            else 
                predSigs <- factor(preds,labels=levels(train[[tgtName]]),
                                   levels=1:3)
        }
        trueSigs <- test[[tgtName]]
    }

    ## obtaining the trading record from trading with the signals
    date <- rownames(test)[1]
    market <- get(quotes)[paste(date,"/",sep='')][1:length(preds),]
    tradeRec <- trading.simulator(market,predSigs,
                                  policy.func=policy,policy.pars=policy.pars,
                                  trans.cost=trans.cost,init.cap=init.cap)
    
    return(list(trueSigs=trueSigs,predSigs=predSigs,tradeRec=tradeRec))
}
tradingEval <- function(trueSigs,predSigs,tradeRec,...) 
{
    ## Signals evaluation
    st <- sigs.PR(predSigs,trueSigs)
    dim(st) <- NULL
    names(st) <- paste(rep(c('prec','rec'),each=3),c('s','b','sb'),sep='.')
    
    ## Trading record evaluation
    tradRes <- tradingEvaluation(tradeRec)
    return(c(st,tradRes))
}
library(performanceEstimation)
library(e1071)
library(earth)
library(nnet)
LEARNERS <- c('svm','earth','nnet')
EST.TASK <- EstimationTask(method=MonteCarlo(nReps=1,
                                             szTrain=254,szTest=127,
                                             seed=1234),
                           evaluator="tradingEval")
VARS <- list()

VARS$svm <- list(learner.pars=list(cost=c(10,50,5),
                                   gamma=c(0.01,0.05)))
VARS$earth <- list(learner.pars=list(nk=c(10,17),
                                     degree=c(1,2),
                                     thresh=c(0.01,0.001)))
VARS$nnet <-  list(learner.pars=list(linout=TRUE, trace=FALSE,
                                     maxit=750,
                                     size=c(5,10),
                                     decay=c(0.001,0.01,0.1)))

VARS$learning <- list(learn.test.type=c("fixed","slide","grow"), relearn.step=12)
VARS$trading  <- list(policy=c("policy.1","policy.2"),
                     policy.pars=list(bet=c(0.2,0.5),exp.prof=0.05,max.loss=0.05),
                     b.t=c(0.01,0.05),s.t=c(-0.01,-0.05))
## Regression (forecast T indicator) Workflows
for(lrn in LEARNERS) {
    objName <- paste(lrn,"res","regr",sep="_") #svm_res_regr
    assign(objName,
           performanceEstimation(PredTask(Tform,Tdata.train,"SP500"),
                                 do.call("workflowVariants",
                                         c(list("tradingWF",
                                                varsRootName=paste(lrn,"Regr"),
                                                quotes="GSPC",
                                                learner=lrn,
                                                pred.target="indicator"),
                                           VARS[[lrn]],
                                           VARS$learning,
                                           VARS$trading)
                                         ),
                                 EST.TASK) # for parallel computation
           )
    save(list=objName,file=paste(objName,'Rdata',sep='.'))
}


##### PERFORMANCE ESTIMATION USING  MONTE CARLO  #####

** PREDICTIVE TASK :: SP500

++ MODEL/WORKFLOW :: svm Regr.v1 
Task for estimating all metrics of the selected evaluation function using
1  repetitions Monte Carlo Simulation using: 
     seed =  1234 
     train size =  254  cases 
     test size =  127  cases 
Repetition  1 
     start test =  7706 ; test size =  127 



++ MODEL/WORKFLOW :: svm Regr.v2 
Task for estimating all metrics of the selected evaluation function using
1  repetitions Monte Carlo Simulation using: 
     seed =  1234 
     train size =  254  cases 
     test size =  127  cases 
Repetition  1 
     start test =  7706 ; test size =  127 



++ MODEL/WORKFLOW :: svm Regr.v3 
Task for estimating all metrics of the selected evaluation function using
1  repetitions Monte Carlo Simulation using: 
     seed =  1234 
     train size =  254  cases 
     test size =  127  cases 
Repetition  1 
     start test =  7706 ; test size =  127 



++ MODEL/WORKFLOW :: svm Regr.v4 
Task for estimating all metrics of the selected evaluation function using
1  repetitions Monte Carlo Simulation using: 
     seed =  1234 
     train size =  254  cases 
     test size =  127  cases 
Repetition  1 
     start test =  7706 ; test size =  127 



++ MODEL/WORKFLOW :: svm Regr.v5 
Task for estimating all metrics of the selected evaluation function using
1  repetitions Monte Carlo Simulation using: 
     seed =  1234 
     train size =  254  cases 
     test size =  127  cases 
Repetition  1 
     start test =  7706 ; test size =  127 



++ MODEL/WORKFLOW :: svm Regr.v6 
Task for estimating all metrics of the selected evaluation function using
1  repetitions Monte Carlo Simulation using: 
     seed =  1234 
     train size =  254  cases 
     test size =  127  cases 
Repetition  1 
     start test =  7706 ; test size =  127 



++ MODEL/WORKFLOW :: svm Regr.v7 
Task for estimating all metrics of the selected evaluation function using
1  repetitions Monte Carlo Simulation using: 
     seed =  1234 
     train size =  254  cases 
     test size =  127  cases 
Repetition  1 
     start test =  7706 ; test size =  127 



++ MODEL/WORKFLOW :: svm Regr.v8 
Task for estimating all metrics of the selected evaluation function using
1  repetitions Monte Carlo Simulation using: 
     seed =  1234 
     train size =  254  cases 
     test size =  127  cases 
Repetition  1 
     start test =  7706 ; test size =  127 



++ MODEL/WORKFLOW :: svm Regr.v9 
Task for estimating all metrics of the selected evaluation function using
1  repetitions Monte Carlo Simulation using: 
     seed =  1234 
     train size =  254  cases 
     test size =  127  cases 
Repetition  1 
     start test =  7706 ; test size =  127 



++ MODEL/WORKFLOW :: svm Regr.v10 
Task for estimating all metrics of the selected evaluation function using
1  repetitions Monte Carlo Simulation using: 
     seed =  1234 
     train size =  254  cases 
     test size =  127  cases 
Repetition  1 
     start test =  7706 ; test size =  127 



++ MODEL/WORKFLOW :: svm Regr.v11 
Task for estimating all metrics of the selected evaluation function using
1  repetitions Monte Carlo Simulation using: 
     seed =  1234 
     train size =  254  cases 
     test size =  127  cases 
Repetition  1 
     start test =  7706 ; test size =  127 



++ MODEL/WORKFLOW :: svm Regr.v12 
Task for estimating all metrics of the selected evaluation function using
1  repetitions Monte Carlo Simulation using: 
     seed =  1234 
     train size =  254  cases 
     test size =  127  cases 
Repetition  1 
     start test =  7706 ; test size =  127 



++ MODEL/WORKFLOW :: svm Regr.v13 
Task for estimating all metrics of the selected evaluation function using
1  repetitions Monte Carlo Simulation using: 
     seed =  1234 
     train size =  254  cases 
     test size =  127  cases 
Repetition  1 
     start test =  7706 ; test size =  127 



++ MODEL/WORKFLOW :: svm Regr.v14 
Task for estimating all metrics of the selected evaluation function using
1  repetitions Monte Carlo Simulation using: 
     seed =  1234 
     train size =  254  cases 
     test size =  127  cases 
Repetition  1 
     start test =  7706 ; test size =  127 



++ MODEL/WORKFLOW :: svm Regr.v15 
Task for estimating all metrics of the selected evaluation function using
1  repetitions Monte Carlo Simulation using: 
     seed =  1234 
     train size =  254  cases 
     test size =  127  cases 
Repetition  1 
     start test =  7706 ; test size =  127 



++ MODEL/WORKFLOW :: svm Regr.v16 
Task for estimating all metrics of the selected evaluation function using
1  repetitions Monte Carlo Simulation using: 
     seed =  1234 
     train size =  254  cases 
     test size =  127  cases 
Repetition  1 
     start test =  7706 ; test size =  127 



++ MODEL/WORKFLOW :: svm Regr.v17 
Task for estimating all metrics of the selected evaluation function using
1  repetitions Monte Carlo Simulation using: 
     seed =  1234 
     train size =  254  cases 
     test size =  127  cases 
Repetition  1 
     start test =  7706 ; test size =  127 



++ MODEL/WORKFLOW :: svm Regr.v18 
Task for estimating all metrics of the selected evaluation function using
1  repetitions Monte Carlo Simulation using: 
     seed =  1234 
     train size =  254  cases 
     test size =  127  cases 
Repetition  1 
     start test =  7706 ; test size =  127 



++ MODEL/WORKFLOW :: svm Regr.v19 
Task for estimating all metrics of the selected evaluation function using
1  repetitions Monte Carlo Simulation using: 
     seed =  1234 
     train size =  254  cases 
     test size =  127  cases 
Repetition  1 
     start test =  7706 ; test size =  127 
Borrowing money ( 125576 ) for closing a short position (PosID= 6 )
Borrowing money ( 312999 ) for closing a short position (PosID= 7 )
Borrowing money ( 501428.8 ) for closing a short position (PosID= 12 )
Borrowing money ( 691275.9 ) for closing a short position (PosID= 17 )
Borrowing money ( 880309.4 ) for closing a short position (PosID= 3 )
Borrowing money ( 1073404 ) for closing a short position (PosID= 18 )
Borrowing money ( 1263305 ) for closing a short position (PosID= 4 )
Borrowing money ( 1457526 ) for closing a short position (PosID= 16 )
Borrowing money ( 1647909 ) for closing a short position (PosID= 1 )
Borrowing money ( 1837705 ) for closing a short position (PosID= 2 )
Borrowing money ( 2032952 ) for closing a short position (PosID= 19 )
Borrowing money ( 2231470 ) for closing a short position (PosID= 20 )
Borrowing money ( 1283508 ) for closing a short position (PosID= 21 )
Borrowing money ( 525233.5 ) for closing a short position (PosID= 22 )



++ MODEL/WORKFLOW :: svm Regr.v20 
Task for estimating all metrics of the selected evaluation function using
1  repetitions Monte Carlo Simulation using: 
     seed =  1234 
     train size =  254  cases 
     test size =  127  cases 
Repetition  1 
     start test =  7706 ; test size =  127 
Borrowing money ( 125576 ) for closing a short position (PosID= 6 )
Borrowing money ( 312999 ) for closing a short position (PosID= 7 )
Borrowing money ( 501428.8 ) for closing a short position (PosID= 12 )
Borrowing money ( 691275.9 ) for closing a short position (PosID= 17 )
Borrowing money ( 880309.4 ) for closing a short position (PosID= 3 )
Borrowing money ( 1073404 ) for closing a short position (PosID= 18 )
Borrowing money ( 1263305 ) for closing a short position (PosID= 4 )
Borrowing money ( 1457526 ) for closing a short position (PosID= 16 )
Borrowing money ( 1647909 ) for closing a short position (PosID= 1 )
Borrowing money ( 1837705 ) for closing a short position (PosID= 2 )
Borrowing money ( 2032952 ) for closing a short position (PosID= 19 )
Borrowing money ( 2231470 ) for closing a short position (PosID= 20 )
Borrowing money ( 1283508 ) for closing a short position (PosID= 21 )
Borrowing money ( 525233.5 ) for closing a short position (PosID= 22 )



++ MODEL/WORKFLOW :: svm Regr.v21 
Task for estimating all metrics of the selected evaluation function using
1  repetitions Monte Carlo Simulation using: 
     seed =  1234 
     train size =  254  cases 
     test size =  127  cases 
Repetition  1 
     start test =  7706 ; test size =  127 
Borrowing money ( 167202.8 ) for closing a short position (PosID= 6 )
Borrowing money ( 354625.8 ) for closing a short position (PosID= 7 )
Borrowing money ( 543055.6 ) for closing a short position (PosID= 12 )
Borrowing money ( 732902.7 ) for closing a short position (PosID= 17 )
Borrowing money ( 921936.2 ) for closing a short position (PosID= 3 )
Borrowing money ( 1115031 ) for closing a short position (PosID= 18 )
Borrowing money ( 1304932 ) for closing a short position (PosID= 4 )
Borrowing money ( 1499153 ) for closing a short position (PosID= 16 )
Borrowing money ( 1689536 ) for closing a short position (PosID= 1 )
Borrowing money ( 1879332 ) for closing a short position (PosID= 2 )
Borrowing money ( 2074579 ) for closing a short position (PosID= 19 )
Borrowing money ( 1166116 ) for closing a short position (PosID= 20 )
Borrowing money ( 440198.3 ) for closing a short position (PosID= 21 )



++ MODEL/WORKFLOW :: svm Regr.v22 
Task for estimating all metrics of the selected evaluation function using
1  repetitions Monte Carlo Simulation using: 
     seed =  1234 
     train size =  254  cases 
     test size =  127  cases 
Repetition  1 
     start test =  7706 ; test size =  127 
Borrowing money ( 135220.9 ) for closing a short position (PosID= 12 )
Borrowing money ( 324213.7 ) for closing a short position (PosID= 14 )
Borrowing money ( 513678 ) for closing a short position (PosID= 4 )
Borrowing money ( 702971.8 ) for closing a short position (PosID= 5 )
Borrowing money ( 891825.4 ) for closing a short position (PosID= 6 )
Borrowing money ( 1081683 ) for closing a short position (PosID= 11 )
Borrowing money ( 1271530 ) for closing a short position (PosID= 16 )
Borrowing money ( 1460563 ) for closing a short position (PosID= 2 )
Borrowing money ( 1653658 ) for closing a short position (PosID= 17 )
Borrowing money ( 1843559 ) for closing a short position (PosID= 3 )
Borrowing money ( 2037780 ) for closing a short position (PosID= 15 )
Borrowing money ( 2228163 ) for closing a short position (PosID= 1 )
Borrowing money ( 1394853 ) for closing a short position (PosID= 18 )
Borrowing money ( 728925.4 ) for closing a short position (PosID= 19 )
Borrowing money ( 195699.2 ) for closing a short position (PosID= 20 )



++ MODEL/WORKFLOW :: svm Regr.v23 
Task for estimating all metrics of the selected evaluation function using
1  repetitions Monte Carlo Simulation using: 
     seed =  1234 
     train size =  254  cases 
     test size =  127  cases 
Repetition  1 
     start test =  7706 ; test size =  127 
Borrowing money ( 18831.38 ) for closing a short position (PosID= 11 )
Borrowing money ( 113994.9 ) for closing a short position (PosID= 13 )
Borrowing money ( 211357.3 ) for closing a short position (PosID= 15 )
Borrowing money ( 308228.7 ) for closing a short position (PosID= 5 )
Borrowing money ( 405012.9 ) for closing a short position (PosID= 6 )
Borrowing money ( 502303.5 ) for closing a short position (PosID= 7 )
Borrowing money ( 599375.9 ) for closing a short position (PosID= 12 )
Borrowing money ( 696443 ) for closing a short position (PosID= 17 )
Borrowing money ( 574219.1 ) for closing a short position (PosID= 3 )
Borrowing money ( 673608.3 ) for closing a short position (PosID= 18 )
Borrowing money ( 771395.6 ) for closing a short position (PosID= 4 )
Borrowing money ( 870635.2 ) for closing a short position (PosID= 16 )
Borrowing money ( 680262.1 ) for closing a short position (PosID= 1 )
Borrowing money ( 528434.4 ) for closing a short position (PosID= 2 )
Borrowing money ( 140785.1 ) for closing a short position (PosID= 19 )
Borrowing money ( 49460.28 ) for closing a short position (PosID= 37 )



++ MODEL/WORKFLOW :: svm Regr.v24 
Task for estimating all metrics of the selected evaluation function using
1  repetitions Monte Carlo Simulation using: 
     seed =  1234 
     train size =  254  cases 
     test size =  127  cases 
Repetition  1 
     start test =  7706 ; test size =  127 
Borrowing money ( 177542 ) for closing a short position (PosID= 11 )
Borrowing money ( 366534.8 ) for closing a short position (PosID= 13 )
Borrowing money ( 555999.1 ) for closing a short position (PosID= 3 )
Borrowing money ( 745292.8 ) for closing a short position (PosID= 4 )
Borrowing money ( 934146.4 ) for closing a short position (PosID= 5 )
Borrowing money ( 1124004 ) for closing a short position (PosID= 10 )
Borrowing money ( 1313851 ) for closing a short position (PosID= 15 )
Borrowing money ( 1506945 ) for closing a short position (PosID= 16 )
Borrowing money ( 1696846 ) for closing a short position (PosID= 2 )
Borrowing money ( 1891068 ) for closing a short position (PosID= 14 )
Borrowing money ( 2081451 ) for closing a short position (PosID= 1 )
Borrowing money ( 1286340 ) for closing a short position (PosID= 17 )
Borrowing money ( 649978.2 ) for closing a short position (PosID= 18 )
Borrowing money ( 140733.3 ) for closing a short position (PosID= 19 )



++ MODEL/WORKFLOW :: svm Regr.v25 
Task for estimating all metrics of the selected evaluation function using
1  repetitions Monte Carlo Simulation using: 
     seed =  1234 
     train size =  254  cases 
     test size =  127  cases 
Repetition  1 
     start test =  7706 ; test size =  127 
Borrowing money ( 173153.4 ) for closing a short position (PosID= 10 )
Borrowing money ( 359623.6 ) for closing a short position (PosID= 11 )
Borrowing money ( 544178.5 ) for closing a short position (PosID= 13 )
Borrowing money ( 733642.8 ) for closing a short position (PosID= 5 )
Borrowing money ( 922936.5 ) for closing a short position (PosID= 6 )
Borrowing money ( 1110360 ) for closing a short position (PosID= 7 )
Borrowing money ( 1298789 ) for closing a short position (PosID= 12 )
Borrowing money ( 583674.6 ) for closing a short position (PosID= 15 )
Borrowing money ( 772708.1 ) for closing a short position (PosID= 3 )
Borrowing money ( 200543.8 ) for closing a short position (PosID= 16 )
Borrowing money ( 390444.7 ) for closing a short position (PosID= 4 )
Borrowing money ( 580827.9 ) for closing a short position (PosID= 1 )
Borrowing money ( 770623.6 ) for closing a short position (PosID= 2 )
Borrowing money ( 312234.4 ) for closing a short position (PosID= 17 )
Borrowing money ( 19416.78 ) for closing a short position (PosID= 48 )



++ MODEL/WORKFLOW :: svm Regr.v26 
Task for estimating all metrics of the selected evaluation function using
1  repetitions Monte Carlo Simulation using: 
     seed =  1234 
     train size =  254  cases 
     test size =  127  cases 
Repetition  1 
     start test =  7706 ; test size =  127 
Borrowing money ( 173153.4 ) for closing a short position (PosID= 10 )
Borrowing money ( 359623.6 ) for closing a short position (PosID= 11 )
Borrowing money ( 544178.5 ) for closing a short position (PosID= 13 )
Borrowing money ( 733642.8 ) for closing a short position (PosID= 5 )
Borrowing money ( 922936.5 ) for closing a short position (PosID= 6 )
Borrowing money ( 1110360 ) for closing a short position (PosID= 7 )
Borrowing money ( 1298789 ) for closing a short position (PosID= 12 )
Borrowing money ( 583674.6 ) for closing a short position (PosID= 15 )
Borrowing money ( 772708.1 ) for closing a short position (PosID= 3 )
Borrowing money ( 200543.8 ) for closing a short position (PosID= 16 )
Borrowing money ( 390444.7 ) for closing a short position (PosID= 4 )
Borrowing money ( 580827.9 ) for closing a short position (PosID= 1 )
Borrowing money ( 770623.6 ) for closing a short position (PosID= 2 )
Borrowing money ( 312234.4 ) for closing a short position (PosID= 17 )
Borrowing money ( 86293.55 ) for closing a short position (PosID= 53 )
Borrowing money ( 77796.01 ) for closing a short position (PosID= 49 )



++ MODEL/WORKFLOW :: svm Regr.v27 
Task for estimating all metrics of the selected evaluation function using
1  repetitions Monte Carlo Simulation using: 
     seed =  1234 
     train size =  254  cases 
     test size =  127  cases 
Repetition  1 
     start test =  7706 ; test size =  127 
Borrowing money ( 12730.58 ) for closing a short position (PosID= 10 )
Borrowing money ( 199200.8 ) for closing a short position (PosID= 11 )
Borrowing money ( 383755.7 ) for closing a short position (PosID= 13 )
Borrowing money ( 572748.5 ) for closing a short position (PosID= 15 )
Borrowing money ( 762212.8 ) for closing a short position (PosID= 5 )
Borrowing money ( 951506.6 ) for closing a short position (PosID= 6 )
Borrowing money ( 1138930 ) for closing a short position (PosID= 7 )
Borrowing money ( 1327359 ) for closing a short position (PosID= 12 )
Borrowing money ( 1516393 ) for closing a short position (PosID= 3 )
Borrowing money ( 762497.2 ) for closing a short position (PosID= 16 )
Borrowing money ( 952398.2 ) for closing a short position (PosID= 4 )
Borrowing money ( 1142781 ) for closing a short position (PosID= 1 )
Borrowing money ( 1332577 ) for closing a short position (PosID= 2 )
Borrowing money ( 729878.6 ) for closing a short position (PosID= 17 )
Borrowing money ( 246977.1 ) for closing a short position (PosID= 18 )
Borrowing money ( 4982.876 ) for closing a short position (PosID= 39 )



++ MODEL/WORKFLOW :: svm Regr.v28 
Task for estimating all metrics of the selected evaluation function using
1  repetitions Monte Carlo Simulation using: 
     seed =  1234 
     train size =  254  cases 
     test size =  127  cases 
Repetition  1 
     start test =  7706 ; test size =  127 
Borrowing money ( 175206.2 ) for closing a short position (PosID= 9 )
Borrowing money ( 363110.8 ) for closing a short position (PosID= 10 )
Borrowing money ( 549107.5 ) for closing a short position (PosID= 12 )
Borrowing money ( 738100.3 ) for closing a short position (PosID= 14 )
Borrowing money ( 927564.6 ) for closing a short position (PosID= 4 )
Borrowing money ( 1116858 ) for closing a short position (PosID= 5 )
Borrowing money ( 1305712 ) for closing a short position (PosID= 6 )
Borrowing money ( 1495569 ) for closing a short position (PosID= 11 )
Borrowing money ( 777599.8 ) for closing a short position (PosID= 15 )
Borrowing money ( 966633.2 ) for closing a short position (PosID= 2 )
Borrowing money ( 393049.1 ) for closing a short position (PosID= 16 )
Borrowing money ( 582950.1 ) for closing a short position (PosID= 3 )
Borrowing money ( 773333.2 ) for closing a short position (PosID= 1 )
Borrowing money ( 313529.2 ) for closing a short position (PosID= 17 )



++ MODEL/WORKFLOW :: svm Regr.v29 
Task for estimating all metrics of the selected evaluation function using
1  repetitions Monte Carlo Simulation using: 
     seed =  1234 
     train size =  254  cases 
     test size =  127  cases 
Repetition  1 
     start test =  7706 ; test size =  127 
Borrowing money ( 22266.59 ) for closing a short position (PosID= 9 )
Borrowing money ( 118643.4 ) for closing a short position (PosID= 10 )
Borrowing money ( 214749.7 ) for closing a short position (PosID= 11 )
Borrowing money ( 309913.3 ) for closing a short position (PosID= 13 )
Borrowing money ( 407275.6 ) for closing a short position (PosID= 15 )
Borrowing money ( 504147 ) for closing a short position (PosID= 5 )
Borrowing money ( 600931.2 ) for closing a short position (PosID= 6 )
Borrowing money ( 698221.9 ) for closing a short position (PosID= 7 )
Borrowing money ( 795294.2 ) for closing a short position (PosID= 12 )
Borrowing money ( 467000.8 ) for closing a short position (PosID= 16 )
Borrowing money ( 344776.9 ) for closing a short position (PosID= 3 )
Borrowing money ( 82123.49 ) for closing a short position (PosID= 17 )
Borrowing money ( 179910.7 ) for closing a short position (PosID= 4 )



++ MODEL/WORKFLOW :: svm Regr.v30 
Task for estimating all metrics of the selected evaluation function using
1  repetitions Monte Carlo Simulation using: 
     seed =  1234 
     train size =  254  cases 
     test size =  127  cases 
Repetition  1 
     start test =  7706 ; test size =  127 
Borrowing money ( 13736.99 ) for closing a short position (PosID= 7 )
Borrowing money ( 200732.1 ) for closing a short position (PosID= 8 )
Borrowing money ( 388636.7 ) for closing a short position (PosID= 9 )
Borrowing money ( 574633.4 ) for closing a short position (PosID= 11 )
Borrowing money ( 764097.7 ) for closing a short position (PosID= 3 )
Borrowing money ( 953391.4 ) for closing a short position (PosID= 4 )
Borrowing money ( 1142245 ) for closing a short position (PosID= 5 )
Borrowing money ( 1332102 ) for closing a short position (PosID= 10 )
Borrowing money ( 651244.9 ) for closing a short position (PosID= 14 )
Borrowing money ( 106056.3 ) for closing a short position (PosID= 15 )
Borrowing money ( 295957.2 ) for closing a short position (PosID= 2 )
Borrowing money ( 490178.6 ) for closing a short position (PosID= 13 )
Borrowing money ( 680561.7 ) for closing a short position (PosID= 1 )
Borrowing money ( 244809.2 ) for closing a short position (PosID= 16 )



++ MODEL/WORKFLOW :: svm Regr.v31 
Task for estimating all metrics of the selected evaluation function using
1  repetitions Monte Carlo Simulation using: 
     seed =  1234 
     train size =  254  cases 
     test size =  127  cases 
Repetition  1 
     start test =  7706 ; test size =  127 
Borrowing money ( 173153.4 ) for closing a short position (PosID= 10 )
Borrowing money ( 359623.6 ) for closing a short position (PosID= 11 )
Borrowing money ( 544178.5 ) for closing a short position (PosID= 13 )
Borrowing money ( 733642.8 ) for closing a short position (PosID= 5 )
Borrowing money ( 922936.5 ) for closing a short position (PosID= 6 )
Borrowing money ( 1110360 ) for closing a short position (PosID= 7 )
Borrowing money ( 1298789 ) for closing a short position (PosID= 12 )
Borrowing money ( 583674.6 ) for closing a short position (PosID= 15 )
Borrowing money ( 772708.1 ) for closing a short position (PosID= 3 )
Borrowing money ( 200543.8 ) for closing a short position (PosID= 16 )
Borrowing money ( 390444.7 ) for closing a short position (PosID= 4 )
Borrowing money ( 580827.9 ) for closing a short position (PosID= 1 )
Borrowing money ( 770623.6 ) for closing a short position (PosID= 2 )
Borrowing money ( 312234.4 ) for closing a short position (PosID= 17 )



++ MODEL/WORKFLOW :: svm Regr.v32 
Task for estimating all metrics of the selected evaluation function using
1  repetitions Monte Carlo Simulation using: 
     seed =  1234 
     train size =  254  cases 
     test size =  127  cases 
Repetition  1 
     start test =  7706 ; test size =  127 
Borrowing money ( 173153.4 ) for closing a short position (PosID= 10 )
Borrowing money ( 359623.6 ) for closing a short position (PosID= 11 )
Borrowing money ( 544178.5 ) for closing a short position (PosID= 13 )
Borrowing money ( 733642.8 ) for closing a short position (PosID= 5 )
Borrowing money ( 922936.5 ) for closing a short position (PosID= 6 )
Borrowing money ( 1110360 ) for closing a short position (PosID= 7 )
Borrowing money ( 1298789 ) for closing a short position (PosID= 12 )
Borrowing money ( 583674.6 ) for closing a short position (PosID= 15 )
Borrowing money ( 772708.1 ) for closing a short position (PosID= 3 )
Borrowing money ( 200543.8 ) for closing a short position (PosID= 16 )
Borrowing money ( 390444.7 ) for closing a short position (PosID= 4 )
Borrowing money ( 580827.9 ) for closing a short position (PosID= 1 )
Borrowing money ( 770623.6 ) for closing a short position (PosID= 2 )
Borrowing money ( 312234.4 ) for closing a short position (PosID= 17 )



++ MODEL/WORKFLOW :: svm Regr.v33 
Task for estimating all metrics of the selected evaluation function using
1  repetitions Monte Carlo Simulation using: 
     seed =  1234 
     train size =  254  cases 
     test size =  127  cases 
Repetition  1 
     start test =  7706 ; test size =  127 
Borrowing money ( 146684.2 ) for closing a short position (PosID= 10 )
Borrowing money ( 333154.4 ) for closing a short position (PosID= 11 )
Borrowing money ( 517709.3 ) for closing a short position (PosID= 13 )
Borrowing money ( 706702.1 ) for closing a short position (PosID= 15 )
Borrowing money ( 896166.4 ) for closing a short position (PosID= 5 )
Borrowing money ( 1085460 ) for closing a short position (PosID= 6 )
Borrowing money ( 1272883 ) for closing a short position (PosID= 7 )
Borrowing money ( 1461313 ) for closing a short position (PosID= 12 )
Borrowing money ( 707658.9 ) for closing a short position (PosID= 16 )
Borrowing money ( 896692.3 ) for closing a short position (PosID= 3 )
Borrowing money ( 293293 ) for closing a short position (PosID= 17 )
Borrowing money ( 483193.9 ) for closing a short position (PosID= 4 )
Borrowing money ( 673577.1 ) for closing a short position (PosID= 1 )
Borrowing money ( 863372.8 ) for closing a short position (PosID= 2 )
Borrowing money ( 380932 ) for closing a short position (PosID= 18 )



++ MODEL/WORKFLOW :: svm Regr.v34 
Task for estimating all metrics of the selected evaluation function using
1  repetitions Monte Carlo Simulation using: 
     seed =  1234 
     train size =  254  cases 
     test size =  127  cases 
Repetition  1 
     start test =  7706 ; test size =  127 
Borrowing money ( 13234.03 ) for closing a short position (PosID= 8 )
Borrowing money ( 200229.1 ) for closing a short position (PosID= 9 )
Borrowing money ( 388133.7 ) for closing a short position (PosID= 10 )
Borrowing money ( 574130.4 ) for closing a short position (PosID= 12 )
Borrowing money ( 763594.7 ) for closing a short position (PosID= 4 )
Borrowing money ( 952888.4 ) for closing a short position (PosID= 5 )
Borrowing money ( 1141742 ) for closing a short position (PosID= 6 )
Borrowing money ( 1331599 ) for closing a short position (PosID= 11 )
Borrowing money ( 652169.3 ) for closing a short position (PosID= 14 )
Borrowing money ( 841202.7 ) for closing a short position (PosID= 2 )
Borrowing money ( 297433.9 ) for closing a short position (PosID= 15 )
Borrowing money ( 487334.9 ) for closing a short position (PosID= 3 )
Borrowing money ( 677718 ) for closing a short position (PosID= 1 )
Borrowing money ( 241965.5 ) for closing a short position (PosID= 16 )
Borrowing money ( 22434.15 ) for closing a short position (PosID= 50 )
Borrowing money ( 177579.9 ) for closing a short position (PosID= 51 )



++ MODEL/WORKFLOW :: svm Regr.v35 
Task for estimating all metrics of the selected evaluation function using
1  repetitions Monte Carlo Simulation using: 
     seed =  1234 
     train size =  254  cases 
     test size =  127  cases 
Repetition  1 
     start test =  7706 ; test size =  127 
Borrowing money ( 22266.59 ) for closing a short position (PosID= 9 )
Borrowing money ( 118643.4 ) for closing a short position (PosID= 10 )
Borrowing money ( 214749.7 ) for closing a short position (PosID= 11 )
Borrowing money ( 309913.3 ) for closing a short position (PosID= 13 )
Borrowing money ( 407275.6 ) for closing a short position (PosID= 15 )
Borrowing money ( 504147 ) for closing a short position (PosID= 5 )
Borrowing money ( 600931.2 ) for closing a short position (PosID= 6 )
Borrowing money ( 698221.9 ) for closing a short position (PosID= 7 )
Borrowing money ( 795294.2 ) for closing a short position (PosID= 12 )
Borrowing money ( 467000.8 ) for closing a short position (PosID= 16 )
Borrowing money ( 344776.9 ) for closing a short position (PosID= 3 )
Borrowing money ( 82123.49 ) for closing a short position (PosID= 17 )
Borrowing money ( 179910.7 ) for closing a short position (PosID= 4 )
Borrowing money ( 71831.76 ) for closing a short position (PosID= 52 )



++ MODEL/WORKFLOW :: svm Regr.v36 
Task for estimating all metrics of the selected evaluation function using
1  repetitions Monte Carlo Simulation using: 
     seed =  1234 
     train size =  254  cases 
     test size =  127  cases 
Repetition  1 
     start test =  7706 ; test size =  127 
Borrowing money ( 41278.74 ) for closing a short position (PosID= 7 )
Borrowing money ( 228273.9 ) for closing a short position (PosID= 8 )
Borrowing money ( 416178.4 ) for closing a short position (PosID= 9 )
Borrowing money ( 602175.1 ) for closing a short position (PosID= 11 )
Borrowing money ( 791639.4 ) for closing a short position (PosID= 3 )
Borrowing money ( 980933.1 ) for closing a short position (PosID= 4 )
Borrowing money ( 1169787 ) for closing a short position (PosID= 5 )
Borrowing money ( 1359644 ) for closing a short position (PosID= 10 )
Borrowing money ( 717326 ) for closing a short position (PosID= 13 )
Borrowing money ( 203372.4 ) for closing a short position (PosID= 14 )
Borrowing money ( 393273.4 ) for closing a short position (PosID= 2 )
Borrowing money ( 583656.6 ) for closing a short position (PosID= 1 )
Borrowing money ( 173370.4 ) for closing a short position (PosID= 15 )
Borrowing money ( 37346.24 ) for closing a short position (PosID= 50 )



++ MODEL/WORKFLOW :: svm Regr.v37 
Task for estimating all metrics of the selected evaluation function using
1  repetitions Monte Carlo Simulation using: 
     seed =  1234 
     train size =  254  cases 
     test size =  127  cases 
Repetition  1 
     start test =  7706 ; test size =  127 



++ MODEL/WORKFLOW :: svm Regr.v38 
Task for estimating all metrics of the selected evaluation function using
1  repetitions Monte Carlo Simulation using: 
     seed =  1234 
     train size =  254  cases 
     test size =  127  cases 
Repetition  1 
     start test =  7706 ; test size =  127 



++ MODEL/WORKFLOW :: svm Regr.v39 
Task for estimating all metrics of the selected evaluation function using
1  repetitions Monte Carlo Simulation using: 
     seed =  1234 
     train size =  254  cases 
     test size =  127  cases 
Repetition  1 
     start test =  7706 ; test size =  127 



++ MODEL/WORKFLOW :: svm Regr.v40 
Task for estimating all metrics of the selected evaluation function using
1  repetitions Monte Carlo Simulation using: 
     seed =  1234 
     train size =  254  cases 
     test size =  127  cases 
Repetition  1 
     start test =  7706 ; test size =  127 



++ MODEL/WORKFLOW :: svm Regr.v41 
Task for estimating all metrics of the selected evaluation function using
1  repetitions Monte Carlo Simulation using: 
     seed =  1234 
     train size =  254  cases 
     test size =  127  cases 
Repetition  1 
     start test =  7706 ; test size =  127 



++ MODEL/WORKFLOW :: svm Regr.v42 
Task for estimating all metrics of the selected evaluation function using
1  repetitions Monte Carlo Simulation using: 
     seed =  1234 
     train size =  254  cases 
     test size =  127  cases 
Repetition  1 
     start test =  7706 ; test size =  127 



++ MODEL/WORKFLOW :: svm Regr.v43 
Task for estimating all metrics of the selected evaluation function using
1  repetitions Monte Carlo Simulation using: 
     seed =  1234 
     train size =  254  cases 
     test size =  127  cases 
Repetition  1 
     start test =  7706 ; test size =  127 



++ MODEL/WORKFLOW :: svm Regr.v44 
Task for estimating all metrics of the selected evaluation function using
1  repetitions Monte Carlo Simulation using: 
     seed =  1234 
     train size =  254  cases 
     test size =  127  cases 
Repetition  1 
     start test =  7706 ; test size =  127 



++ MODEL/WORKFLOW :: svm Regr.v45 
Task for estimating all metrics of the selected evaluation function using
1  repetitions Monte Carlo Simulation using: 
     seed =  1234 
     train size =  254  cases 
     test size =  127  cases 
Repetition  1 
     start test =  7706 ; test size =  127 



++ MODEL/WORKFLOW :: svm Regr.v46 
Task for estimating all metrics of the selected evaluation function using
1  repetitions Monte Carlo Simulation using: 
     seed =  1234 
     train size =  254  cases 
     test size =  127  cases 
Repetition  1 
     start test =  7706 ; test size =  127 



++ MODEL/WORKFLOW :: svm Regr.v47 
Task for estimating all metrics of the selected evaluation function using
1  repetitions Monte Carlo Simulation using: 
     seed =  1234 
     train size =  254  cases 
     test size =  127  cases 
Repetition  1 
     start test =  7706 ; test size =  127 



++ MODEL/WORKFLOW :: svm Regr.v48 
Task for estimating all metrics of the selected evaluation function using
1  repetitions Monte Carlo Simulation using: 
     seed =  1234 
     train size =  254  cases 
     test size =  127  cases 
Repetition  1 
     start test =  7706 ; test size =  127 



++ MODEL/WORKFLOW :: svm Regr.v49 
Task for estimating all metrics of the selected evaluation function using
1  repetitions Monte Carlo Simulation using: 
     seed =  1234 
     train size =  254  cases 
     test size =  127  cases 
Repetition  1 
     start test =  7706 ; test size =  127 



++ MODEL/WORKFLOW :: svm Regr.v50 
Task for estimating all metrics of the selected evaluation function using
1  repetitions Monte Carlo Simulation using: 
     seed =  1234 
     train size =  254  cases 
     test size =  127  cases 
Repetition  1 
     start test =  7706 ; test size =  127 



++ MODEL/WORKFLOW :: svm Regr.v51 
Task for estimating all metrics of the selected evaluation function using
1  repetitions Monte Carlo Simulation using: 
     seed =  1234 
     train size =  254  cases 
     test size =  127  cases 
Repetition  1 
     start test =  7706 ; test size =  127 



++ MODEL/WORKFLOW :: svm Regr.v52 
Task for estimating all metrics of the selected evaluation function using
1  repetitions Monte Carlo Simulation using: 
     seed =  1234 
     train size =  254  cases 
     test size =  127  cases 
Repetition  1 
     start test =  7706 ; test size =  127 



++ MODEL/WORKFLOW :: svm Regr.v53 
Task for estimating all metrics of the selected evaluation function using
1  repetitions Monte Carlo Simulation using: 
     seed =  1234 
     train size =  254  cases 
     test size =  127  cases 
Repetition  1 
     start test =  7706 ; test size =  127 



++ MODEL/WORKFLOW :: svm Regr.v54 
Task for estimating all metrics of the selected evaluation function using
1  repetitions Monte Carlo Simulation using: 
     seed =  1234 
     train size =  254  cases 
     test size =  127  cases 
Repetition  1 
     start test =  7706 ; test size =  127 



++ MODEL/WORKFLOW :: svm Regr.v55 
Task for estimating all metrics of the selected evaluation function using
1  repetitions Monte Carlo Simulation using: 
     seed =  1234 
     train size =  254  cases 
     test size =  127  cases 
Repetition  1 
     start test =  7706 ; test size =  127 
Borrowing money ( 225901.8 ) for closing a short position (PosID= 8 )
Borrowing money ( 686729.9 ) for closing a short position (PosID= 9 )
Borrowing money ( 1136950 ) for closing a short position (PosID= 10 )
Borrowing money ( 1594512 ) for closing a short position (PosID= 11 )
Borrowing money ( 2035706 ) for closing a short position (PosID= 13 )
Borrowing money ( 2499590 ) for closing a short position (PosID= 15 )
Borrowing money ( 2966833 ) for closing a short position (PosID= 5 )
Borrowing money ( 3435079 ) for closing a short position (PosID= 6 )
Borrowing money ( 3895760 ) for closing a short position (PosID= 7 )
Borrowing money ( 4365400 ) for closing a short position (PosID= 12 )
Borrowing money ( 4839296 ) for closing a short position (PosID= 17 )
Borrowing money ( 5309740 ) for closing a short position (PosID= 3 )
Borrowing money ( 5803827 ) for closing a short position (PosID= 18 )
Borrowing money ( 6275738 ) for closing a short position (PosID= 4 )
Borrowing money ( 6774751 ) for closing a short position (PosID= 16 )
Borrowing money ( 7249996 ) for closing a short position (PosID= 1 )
Borrowing money ( 7725181 ) for closing a short position (PosID= 2 )
Borrowing money ( 8234513 ) for closing a short position (PosID= 19 )
Borrowing money ( 8765293 ) for closing a short position (PosID= 20 )
Borrowing money ( 3574052 ) for closing a short position (PosID= 21 )
Borrowing money ( 978462.5 ) for closing a short position (PosID= 22 )
Borrowing money ( 49181.74 ) for closing a short position (PosID= 50 )



++ MODEL/WORKFLOW :: svm Regr.v56 
Task for estimating all metrics of the selected evaluation function using
1  repetitions Monte Carlo Simulation using: 
     seed =  1234 
     train size =  254  cases 
     test size =  127  cases 
Repetition  1 
     start test =  7706 ; test size =  127 
Borrowing money ( 225901.8 ) for closing a short position (PosID= 8 )
Borrowing money ( 686729.9 ) for closing a short position (PosID= 9 )
Borrowing money ( 1136950 ) for closing a short position (PosID= 10 )
Borrowing money ( 1594512 ) for closing a short position (PosID= 11 )
Borrowing money ( 2035706 ) for closing a short position (PosID= 13 )
Borrowing money ( 2499590 ) for closing a short position (PosID= 15 )
Borrowing money ( 2966833 ) for closing a short position (PosID= 5 )
Borrowing money ( 3435079 ) for closing a short position (PosID= 6 )
Borrowing money ( 3895760 ) for closing a short position (PosID= 7 )
Borrowing money ( 4365400 ) for closing a short position (PosID= 12 )
Borrowing money ( 4839296 ) for closing a short position (PosID= 17 )
Borrowing money ( 5309740 ) for closing a short position (PosID= 3 )
Borrowing money ( 5803827 ) for closing a short position (PosID= 18 )
Borrowing money ( 6275738 ) for closing a short position (PosID= 4 )
Borrowing money ( 6774751 ) for closing a short position (PosID= 16 )
Borrowing money ( 7249996 ) for closing a short position (PosID= 1 )
Borrowing money ( 7725181 ) for closing a short position (PosID= 2 )
Borrowing money ( 8234513 ) for closing a short position (PosID= 19 )
Borrowing money ( 8765293 ) for closing a short position (PosID= 20 )
Borrowing money ( 3574052 ) for closing a short position (PosID= 21 )
Borrowing money ( 978462.5 ) for closing a short position (PosID= 22 )
Borrowing money ( 236855.6 ) for closing a short position (PosID= 49 )



++ MODEL/WORKFLOW :: svm Regr.v57 
Task for estimating all metrics of the selected evaluation function using
1  repetitions Monte Carlo Simulation using: 
     seed =  1234 
     train size =  254  cases 
     test size =  127  cases 
Repetition  1 
     start test =  7706 ; test size =  127 
Borrowing money ( 243696.2 ) for closing a short position (PosID= 8 )
Borrowing money ( 704524.3 ) for closing a short position (PosID= 9 )
Borrowing money ( 1154744 ) for closing a short position (PosID= 10 )
Borrowing money ( 1612306 ) for closing a short position (PosID= 11 )
Borrowing money ( 2053501 ) for closing a short position (PosID= 13 )
Borrowing money ( 2517385 ) for closing a short position (PosID= 15 )
Borrowing money ( 2984628 ) for closing a short position (PosID= 5 )
Borrowing money ( 3452873 ) for closing a short position (PosID= 6 )
Borrowing money ( 3913554 ) for closing a short position (PosID= 7 )
Borrowing money ( 4383194 ) for closing a short position (PosID= 12 )
Borrowing money ( 4857091 ) for closing a short position (PosID= 17 )
Borrowing money ( 5327535 ) for closing a short position (PosID= 3 )
Borrowing money ( 5821621 ) for closing a short position (PosID= 18 )
Borrowing money ( 6293532 ) for closing a short position (PosID= 4 )
Borrowing money ( 6792546 ) for closing a short position (PosID= 16 )
Borrowing money ( 7267791 ) for closing a short position (PosID= 1 )
Borrowing money ( 7742976 ) for closing a short position (PosID= 2 )
Borrowing money ( 8252308 ) for closing a short position (PosID= 19 )
Borrowing money ( 3326272 ) for closing a short position (PosID= 20 )
Borrowing money ( 862923.8 ) for closing a short position (PosID= 21 )
Borrowing money ( 37325 ) for closing a short position (PosID= 48 )



++ MODEL/WORKFLOW :: svm Regr.v58 
Task for estimating all metrics of the selected evaluation function using
1  repetitions Monte Carlo Simulation using: 
     seed =  1234 
     train size =  254  cases 
     test size =  127  cases 
Repetition  1 
     start test =  7706 ; test size =  127 
Borrowing money ( 146547.5 ) for closing a short position (PosID= 13 )
Borrowing money ( 609377.4 ) for closing a short position (PosID= 7 )
Borrowing money ( 1074499 ) for closing a short position (PosID= 8 )
Borrowing money ( 1530472 ) for closing a short position (PosID= 9 )
Borrowing money ( 1992337 ) for closing a short position (PosID= 10 )
Borrowing money ( 2439299 ) for closing a short position (PosID= 12 )
Borrowing money ( 2907478 ) for closing a short position (PosID= 14 )
Borrowing money ( 3378995 ) for closing a short position (PosID= 4 )
Borrowing money ( 3850087 ) for closing a short position (PosID= 5 )
Borrowing money ( 4315060 ) for closing a short position (PosID= 6 )
Borrowing money ( 4787554 ) for closing a short position (PosID= 11 )
Borrowing money ( 5264306 ) for closing a short position (PosID= 16 )
Borrowing money ( 5737592 ) for closing a short position (PosID= 2 )
Borrowing money ( 6234519 ) for closing a short position (PosID= 17 )
Borrowing money ( 6709264 ) for closing a short position (PosID= 3 )
Borrowing money ( 7209695 ) for closing a short position (PosID= 15 )
Borrowing money ( 7684940 ) for closing a short position (PosID= 1 )
Borrowing money ( 3219846 ) for closing a short position (PosID= 18 )
Borrowing money ( 988344.1 ) for closing a short position (PosID= 19 )
Borrowing money ( 439755.2 ) for closing a short position (PosID= 25 )
Borrowing money ( 397971.8 ) for closing a short position (PosID= 29 )
Borrowing money ( 212273 ) for closing a short position (PosID= 27 )
Borrowing money ( 189598.5 ) for closing a short position (PosID= 30 )
Borrowing money ( 448784.4 ) for closing a short position (PosID= 37 )
Borrowing money ( 40196.82 ) for closing a short position (PosID= 39 )



++ MODEL/WORKFLOW :: svm Regr.v59 
Task for estimating all metrics of the selected evaluation function using
1  repetitions Monte Carlo Simulation using: 
     seed =  1234 
     train size =  254  cases 
     test size =  127  cases 
Repetition  1 
     start test =  7706 ; test size =  127 
Borrowing money ( 23123.1 ) for closing a short position (PosID= 14 )
Borrowing money ( 81876.78 ) for closing a short position (PosID= 8 )
Borrowing money ( 140558 ) for closing a short position (PosID= 9 )
Borrowing money ( 198098.4 ) for closing a short position (PosID= 10 )
Borrowing money ( 256911.7 ) for closing a short position (PosID= 11 )
Borrowing money ( 314588.5 ) for closing a short position (PosID= 13 )
Borrowing money ( 374726 ) for closing a short position (PosID= 15 )
Borrowing money ( 434560.3 ) for closing a short position (PosID= 5 )
Borrowing money ( 494340.7 ) for closing a short position (PosID= 6 )
Borrowing money ( 553003.2 ) for closing a short position (PosID= 7 )
Borrowing money ( 612961.5 ) for closing a short position (PosID= 12 )
Borrowing money ( 672916.7 ) for closing a short position (PosID= 17 )
Borrowing money ( 554956.6 ) for closing a short position (PosID= 3 )
Borrowing money ( 617431.7 ) for closing a short position (PosID= 18 )
Borrowing money ( 676956.3 ) for closing a short position (PosID= 4 )
Borrowing money ( 739337.3 ) for closing a short position (PosID= 16 )
Borrowing money ( 264102.1 ) for closing a short position (PosID= 1 )
Borrowing money ( 26517.14 ) for closing a short position (PosID= 2 )
Borrowing money ( 364128.2 ) for closing a short position (PosID= 26 )
Borrowing money ( 187838.2 ) for closing a short position (PosID= 29 )
Borrowing money ( 194331.8 ) for closing a short position (PosID= 44 )
Borrowing money ( 265301.8 ) for closing a short position (PosID= 31 )
Borrowing money ( 545090.9 ) for closing a short position (PosID= 32 )
Borrowing money ( 824022.9 ) for closing a short position (PosID= 33 )
Borrowing money ( 472858.7 ) for closing a short position (PosID= 28 )
Borrowing money ( 754642.9 ) for closing a short position (PosID= 36 )
Borrowing money ( 315837.9 ) for closing a short position (PosID= 47 )
Borrowing money ( 96669.85 ) for closing a short position (PosID= 48 )



++ MODEL/WORKFLOW :: svm Regr.v60 
Task for estimating all metrics of the selected evaluation function using
1  repetitions Monte Carlo Simulation using: 
     seed =  1234 
     train size =  254  cases 
     test size =  127  cases 
Repetition  1 
     start test =  7706 ; test size =  127 
Borrowing money ( 165846.8 ) for closing a short position (PosID= 12 )
Borrowing money ( 631542.6 ) for closing a short position (PosID= 6 )
Borrowing money ( 1098095 ) for closing a short position (PosID= 7 )
Borrowing money ( 1556945 ) for closing a short position (PosID= 8 )
Borrowing money ( 2020244 ) for closing a short position (PosID= 9 )
Borrowing money ( 2470090 ) for closing a short position (PosID= 11 )
Borrowing money ( 2941133 ) for closing a short position (PosID= 13 )
Borrowing money ( 3412649 ) for closing a short position (PosID= 3 )
Borrowing money ( 3885164 ) for closing a short position (PosID= 4 )
Borrowing money ( 4351568 ) for closing a short position (PosID= 5 )
Borrowing money ( 4825490 ) for closing a short position (PosID= 10 )
Borrowing money ( 5303669 ) for closing a short position (PosID= 15 )
Borrowing money ( 5800595 ) for closing a short position (PosID= 16 )
Borrowing money ( 6273923 ) for closing a short position (PosID= 2 )
Borrowing money ( 6774354 ) for closing a short position (PosID= 14 )
Borrowing money ( 7249599 ) for closing a short position (PosID= 1 )
Borrowing money ( 3010872 ) for closing a short position (PosID= 17 )
Borrowing money ( 890594.3 ) for closing a short position (PosID= 18 )
Borrowing money ( 341043.6 ) for closing a short position (PosID= 23 )
Borrowing money ( 328314.9 ) for closing a short position (PosID= 42 )



++ MODEL/WORKFLOW :: svm Regr.v61 
Task for estimating all metrics of the selected evaluation function using
1  repetitions Monte Carlo Simulation using: 
     seed =  1234 
     train size =  254  cases 
     test size =  127  cases 
Repetition  1 
     start test =  7706 ; test size =  127 
## Specific settings to make nnet work as a classifier
VARS$nnet$learner.pars$linout <-  FALSE
VARS$nnet$predictor.pars <-  list(type="class")

## Classification (forecast signal) workflows
for(lrn in c("svm","nnet")) { # only these because MARS is only for regression
    objName <- paste(lrn,"res","class",sep="_")
    assign(objName,
           performanceEstimation(PredTask(TformC,Tdata.trainC,"SP500"),
                                 do.call("workflowVariants",
                                         c(list("tradingWF",
                                                varsRootName=paste0(lrn,"Class"),
                                                quotes="GSPC",
                                                learner=lrn,
                                                pred.target="signals"),
                                           VARS[[lrn]],
                                           VARS$learning,
                                           VARS$trading)
                                         ),
                                 EST.TASK) # for parallel computation
           )
    save(list=objName,file=paste(objName,'Rdata',sep='.'))
}
Results Analysis

Loading the results from model evaluation:

svm_res_regr = load(url("https://web.cs.dal.ca/~ltorgo/AuxFiles/svm_res_regr.Rdata"))
nnet_res_regr = load(url("https://web.cs.dal.ca/~ltorgo/AuxFiles/nnet_res_regr.Rdata"))
earth_res_regr = load(url("https://web.cs.dal.ca/~ltorgo/AuxFiles/earth_res_regr.Rdata"))
load(url("https://web.cs.dal.ca/~ltorgo/AuxFiles/svm_res_class.Rdata"))
nnet_res_class = load(url("https://web.cs.dal.ca/~ltorgo/AuxFiles/nnet_res_class.Rdata"))
allResults <- mergeEstimationRes(svm_res_regr, earth_res_regr, nnet_res_regr, 
                                 svm_res_class, nnet_res_class,
                                 by="workflows")
Error in mergeEstimationRes(svm_res_regr, earth_res_regr, nnet_res_regr,  : 
  trying to get slot "estTask" from an object of a basic class ("character") with no slots
tgtStats <- c('NTrades','prec.sb','Ret','RetOverBH','PercProf',
              'MaxDD','SharpeRatio')
toMax <- c(rep(TRUE,5),FALSE,TRUE)
rankWorkflows(subset(allResults,
                     metrics=tgtStats,
                     partial=FALSE),
              top=3,
              maxs=toMax)
Error in h(simpleError(msg, call)) : 
  error in evaluating the argument 'x' in selecting a method for function 'subset': object 'allResults' not found
best <- rankWorkflows(subset(allResults,
                     metrics=tgtStats,
                     partial=FALSE),
              top=100,
              maxs=toMax)
Error in h(simpleError(msg, call)) : 
  error in evaluating the argument 'x' in selecting a method for function 'subset': object 'allResults' not found
getWorkflow("svmRegr.v138",analysisSet)
Workflow Object:
    Workflow ID       ::  svmRegr.v138 
    Workflow Function ::  tradingWF
         Parameter values:
         learner.pars  -> cost=150 gamma=0.05 
         policy.pars  -> bet=0.5 exp.prof=0.05 max.loss=0.05 
         quotes  -> GSPC 
         learner  -> svm 
         pred.target  -> indicator 
         learn.test.type  -> slide 
         relearn.step  -> 120 
         policy  -> policy.2 
         b.t  -> 0.05 
         s.t  -> -0.01 
(tps <- topPerformers(subset(analysisSet,metrics=tgtStats,partial=FALSE),
                      maxs=toMax))
$SP500
NA
summary(subset(analysisSet,
               workflows=tps$SP500[c("prec.sb","Ret","PercProf","MaxDD"),
                   "Workflow"],
               metrics=tgtStats[-c(1,4,7)],
               partial=FALSE))

== Summary of a  Monte Carlo Performance Estimation Experiment ==

Task for estimating all metrics of the selected evaluation function using
20  repetitions Monte Carlo Simulation using: 
     seed =  1234 
     train size =  2540  cases 
     test size =  1270  cases 

* Predictive Tasks ::  SP500
* Workflows  ::  nnetClass.v1, svmRegr.v138, nnetRegr.v169, nnetClass.v1 

-> Task:  SP500
  *Workflow: nnetClass.v1 
           prec.sb       Ret PercProf    MaxDD
avg      0.3199433  0.198500  21.7040 12594.36
std      0.2134790  2.048353  28.8249 20844.75
med      0.2329298  0.000000   0.0000     0.00
iqr      0.2459596  0.000000  43.5525 16435.03
min      0.0000000 -4.180000   0.0000     0.00
max      0.6250000  6.280000  75.0000 64942.07
invalid 12.0000000  0.000000   0.0000     0.00

  *Workflow: svmRegr.v138 
           prec.sb       Ret  PercProf     MaxDD
avg     0.22493318  155.1225 52.384500 2081116.6
std     0.06968098  390.1813  4.616856 1352582.7
med     0.21721373   16.3600 51.975000 1652147.9
iqr     0.08365744  195.7275  7.060000 1439520.3
min     0.10979548  -92.3400 45.860000  789925.2
max     0.35475352 1519.3300 62.350000 6537727.0
invalid 0.00000000    0.0000  0.000000       0.0

  *Workflow: nnetRegr.v169 
           prec.sb       Ret PercProf    MaxDD
avg     0.29545145  25.83700 63.87600 248605.8
std     0.09640889  31.57113 10.47377 158502.6
med     0.33147567  21.38500 66.22500 235386.7
iqr     0.15400154  37.89000 12.34750 175996.6
min     0.11247803 -45.33000 40.25000  69260.9
max     0.41073826  77.11000 77.50000 601398.2
invalid 0.00000000   0.00000  0.00000      0.0

  *Workflow: nnetClass.v1 
           prec.sb       Ret PercProf    MaxDD
avg      0.3199433  0.198500  21.7040 12594.36
std      0.2134790  2.048353  28.8249 20844.75
med      0.2329298  0.000000   0.0000     0.00
iqr      0.2459596  0.000000  43.5525 16435.03
min      0.0000000 -4.180000   0.0000     0.00
max      0.6250000  6.280000  75.0000 64942.07
invalid 12.0000000  0.000000   0.0000     0.00
ms <- metricsSummary(subset(analysisSet,
                            metrics=c("NTrades","Ret","PercProf"),
                            partial=FALSE),
                     summary="median")[["SP500"]]
candidates <- subset(analysisSet,
                     workflows=colnames(ms)[which(ms["NTrades",] > 120)],
                     partial=FALSE)
ms <- metricsSummary(subset(candidates,
                            metrics=c("Ret","PercProf"),
                            partial=FALSE),
                     summary="median")[["SP500"]]
(sms <- apply(ms,1,function(x) names(x[order(x,decreasing=TRUE)][1:15])))
      Ret             PercProf       
 [1,] "nnetRegr.v200" "nnetRegr.v169"
 [2,] "svmRegr.v168"  "nnetRegr.v167"
 [3,] "svmRegr.v204"  "nnetRegr.v179"
 [4,] "svmRegr.v102"  "nnetRegr.v177"
 [5,] "svmRegr.v30"   "svmRegr.v169" 
 [6,] "svmRegr.v24"   "svmRegr.v175" 
 [7,] "svmRegr.v174"  "nnetRegr.v203"
 [8,] "nnetRegr.v211" "nnetRegr.v175"
 [9,] "nnetRegr.v213" "nnetRegr.v176"
[10,] "svmRegr.v60"   "nnetRegr.v205"
[11,] "nnetRegr.v202" "nnetRegr.v172"
[12,] "svmRegr.v246"  "nnetRegr.v173"
[13,] "svmRegr.v36"   "nnetRegr.v178"
[14,] "nnetRegr.v175" "nnetRegr.v213"
[15,] "nnetRegr.v203" "nnetRegr.v215"
(winners <- unique(c(intersect(sms[,1],sms[,2]),sms[1:3,1],sms[1:3,2])))
[1] "nnetRegr.v213" "nnetRegr.v175" "nnetRegr.v203" "nnetRegr.v200" "svmRegr.v168"  "svmRegr.v204"  "nnetRegr.v169" "nnetRegr.v167" "nnetRegr.v179"
winnersResults <- subset(analysisSet,
                         metrics=tgtStats,workflows=winners,
                         partial=FALSE)
p <- pairedComparisons(winnersResults,baseline="nnetRegr.v200",maxs=toMax)
cannot compute exact p-value with tiescannot compute exact p-value with tiescannot compute exact p-value with tiesWith less 2 tasks the Friedman, Nemenyi and Bonferroni-Dunn tests are not calculated.Error in compResults[[p]] <- list() : 
  attempt to select less than one element in integerOneIndex
p <- pairedComparisons(winnersResults,"nnetRegr.v175",maxs=toMax)
cannot compute exact p-value with tiescannot compute exact p-value with zeroescannot compute exact p-value with tiescannot compute exact p-value with tiescannot compute exact p-value with tiesWith less 2 tasks the Friedman, Nemenyi and Bonferroni-Dunn tests are not calculated.Error in compResults[[p]] <- list() : 
  attempt to select less than one element in integerOneIndex
sds <- signifDiffs(p,p.limit=0.05,metrics="MaxDD")
Error in ps[[1]]$avgScores : $ operator is invalid for atomic vectors
sds <- signifDiffs(p,p.limit=0.05,metrics="MaxDD")
Error in ps[[1]]$avgScores : $ operator is invalid for atomic vectors
The Trading System

Evaluation of the Final Test Data

set.seed(1234)
data <- tail(Tdata.train, 2540) # the last 10 years of the training dataset
results <- list()
wfsOut <- list()
for (name in winners) {
    sys <- getWorkflow(name, analysisSet)
    wfsOut[[name]] <- runWorkflow(sys, Tform, data, Tdata.eval)
    results[[name]] <- do.call("tradingEval",wfsOut[[name]])
}
# weights:  66
initial  value 723.764266 
iter  10 value 73.179826
iter  20 value 72.759087
iter  30 value 70.092639
iter  40 value 67.614682
iter  50 value 65.698379
iter  60 value 63.482243
iter  70 value 62.754706
iter  80 value 62.701928
iter  90 value 62.532085
iter 100 value 61.856865
iter 110 value 61.161001
iter 120 value 60.766317
iter 130 value 60.701042
iter 140 value 60.606619
iter 150 value 60.548637
iter 160 value 60.439620
iter 170 value 60.372325
iter 180 value 60.363908
iter 190 value 60.363548
final  value 60.363545 
converged
# weights:  66
initial  value 622.805289 
iter  10 value 73.595530
iter  20 value 72.352158
iter  30 value 69.666734
iter  40 value 67.814438
iter  50 value 67.026124
iter  60 value 66.495737
iter  70 value 65.597801
iter  80 value 64.817716
iter  90 value 64.167924
iter 100 value 63.968434
iter 110 value 63.602499
iter 120 value 63.573449
iter 130 value 63.552979
iter 140 value 63.477910
iter 150 value 63.092694
iter 160 value 62.418822
iter 170 value 61.903183
iter 180 value 61.373497
iter 190 value 60.879074
iter 200 value 60.405669
iter 210 value 60.094456
iter 220 value 59.990995
iter 230 value 59.873016
iter 240 value 59.802321
iter 250 value 59.641353
iter 260 value 59.205676
iter 270 value 58.003508
iter 280 value 57.711090
iter 290 value 57.669105
iter 300 value 57.554377
iter 310 value 57.492506
iter 320 value 57.485509
iter 330 value 57.485375
iter 340 value 57.485127
iter 350 value 57.484871
iter 360 value 57.484038
iter 370 value 57.483379
iter 380 value 57.483334
final  value 57.483333 
converged
# weights:  66
initial  value 4173.512946 
iter  10 value 74.008731
iter  20 value 73.121326
iter  30 value 71.236849
iter  40 value 69.586461
iter  50 value 67.873161
iter  60 value 67.011604
iter  70 value 65.497158
iter  80 value 64.484458
iter  90 value 64.007951
iter 100 value 63.476831
iter 110 value 62.395184
iter 120 value 61.774897
iter 130 value 59.854186
iter 140 value 59.434372
iter 150 value 59.009914
iter 160 value 58.919242
iter 170 value 58.875926
iter 180 value 58.853891
iter 190 value 58.738627
iter 200 value 58.435546
iter 210 value 56.927447
iter 220 value 55.926128
iter 230 value 55.805789
iter 240 value 55.730833
iter 250 value 55.566208
iter 260 value 54.817000
iter 270 value 53.688573
iter 280 value 53.566421
iter 290 value 53.530536
iter 300 value 53.524329
iter 310 value 53.523251
iter 320 value 53.523169
final  value 53.523163 
converged
# weights:  66
initial  value 1660.581205 
iter  10 value 74.414775
iter  20 value 73.894249
iter  30 value 72.934734
iter  40 value 71.888230
iter  50 value 69.317228
iter  60 value 65.237233
iter  70 value 64.746009
iter  80 value 64.247565
iter  90 value 64.009586
iter 100 value 63.913727
iter 110 value 63.781309
iter 120 value 63.589997
iter 130 value 63.395547
iter 140 value 63.159172
iter 150 value 63.033699
iter 160 value 62.522191
iter 170 value 62.383552
iter 180 value 62.355667
iter 190 value 62.257693
iter 200 value 61.942666
iter 210 value 61.183246
iter 220 value 60.698657
iter 230 value 59.856011
iter 240 value 58.504908
iter 250 value 57.787584
iter 260 value 57.086891
iter 270 value 56.779391
iter 280 value 56.653344
iter 290 value 56.528349
iter 300 value 56.409004
iter 310 value 56.402321
iter 320 value 56.381977
iter 330 value 56.334873
iter 340 value 56.276273
iter 350 value 56.231242
iter 360 value 56.105320
iter 370 value 56.015276
iter 380 value 55.989916
iter 390 value 55.959460
iter 400 value 55.900043
iter 410 value 55.770933
iter 420 value 55.711199
iter 430 value 55.699701
iter 440 value 55.698765
iter 450 value 55.697183
iter 460 value 55.694695
iter 470 value 55.692744
iter 480 value 55.685266
iter 490 value 55.662278
iter 500 value 55.644499
iter 510 value 55.640963
iter 520 value 55.640526
final  value 55.640511 
converged
# weights:  66
initial  value 1085.291876 
iter  10 value 76.675745
iter  20 value 76.343265
iter  30 value 72.203558
iter  40 value 70.906852
iter  50 value 68.705023
iter  60 value 66.833496
iter  70 value 66.600778
iter  80 value 66.246697
iter  90 value 65.513950
iter 100 value 65.481658
iter 110 value 65.397823
iter 120 value 65.208658
iter 130 value 65.162477
iter 140 value 65.144302
iter 150 value 65.036709
iter 160 value 64.987565
iter 170 value 64.418119
iter 180 value 63.724280
iter 190 value 63.474103
iter 200 value 63.340222
iter 210 value 63.165111
iter 220 value 62.934377
iter 230 value 62.530634
iter 240 value 62.044669
iter 250 value 61.995219
iter 260 value 61.934181
iter 270 value 61.764984
iter 280 value 61.286144
iter 290 value 60.847176
iter 300 value 60.482331
iter 310 value 60.354253
iter 320 value 60.300536
iter 330 value 60.233822
iter 340 value 60.199992
iter 350 value 60.155490
iter 360 value 60.133897
iter 370 value 60.119673
iter 380 value 60.114777
final  value 60.114751 
converged
# weights:  66
initial  value 2847.074107 
iter  10 value 80.049947
iter  20 value 78.441717
iter  30 value 76.870690
iter  40 value 75.748968
iter  50 value 74.847241
iter  60 value 73.387794
iter  70 value 73.150901
iter  80 value 73.024034
iter  90 value 72.845450
iter 100 value 72.744149
iter 110 value 72.576797
iter 120 value 72.527772
iter 130 value 72.503703
iter 140 value 72.500672
iter 150 value 72.499519
iter 160 value 72.492741
iter 170 value 72.459033
iter 180 value 72.415892
iter 190 value 72.373394
iter 200 value 72.342051
iter 210 value 72.322373
iter 220 value 71.549037
iter 230 value 69.970156
iter 240 value 68.673899
iter 250 value 67.774513
iter 260 value 67.262013
iter 270 value 67.074614
iter 280 value 66.967113
iter 290 value 66.906800
iter 300 value 66.889932
iter 310 value 66.888909
iter 320 value 66.888028
final  value 66.888001 
converged
# weights:  66
initial  value 103.976470 
iter  10 value 101.388796
iter  20 value 101.302515
iter  30 value 100.663713
iter  40 value 97.936642
iter  50 value 95.773011
iter  60 value 94.059920
iter  70 value 90.858763
iter  80 value 88.934740
iter  90 value 84.599126
iter 100 value 83.223060
iter 110 value 82.467610
iter 120 value 82.209466
iter 130 value 81.381312
iter 140 value 81.005151
iter 150 value 80.442107
iter 160 value 79.875086
iter 170 value 79.675239
iter 180 value 78.872500
iter 190 value 77.164295
iter 200 value 76.914408
iter 210 value 76.840271
iter 220 value 76.740368
iter 230 value 76.292533
iter 240 value 75.214910
iter 250 value 74.739813
iter 260 value 74.611190
iter 270 value 74.602174
iter 280 value 74.601177
iter 290 value 74.601102
final  value 74.601100 
converged
# weights:  66
initial  value 4323.975862 
iter  10 value 121.902385
iter  20 value 121.723494
iter  30 value 121.109191
iter  40 value 119.433112
iter  50 value 118.511948
iter  60 value 117.575108
iter  70 value 117.309222
iter  80 value 116.860843
iter  90 value 115.320128
iter 100 value 110.689890
iter 110 value 108.894317
iter 120 value 105.534692
iter 130 value 101.252396
iter 140 value 99.906252
iter 150 value 98.945361
iter 160 value 98.014060
iter 170 value 97.015812
iter 180 value 95.705974
iter 190 value 95.094423
iter 200 value 94.772161
iter 210 value 94.728197
iter 220 value 94.725486
final  value 94.725152 
converged
# weights:  66
initial  value 7388.724811 
iter  10 value 126.663240
iter  20 value 125.398720
iter  30 value 122.359238
iter  40 value 120.454376
iter  50 value 118.200420
iter  60 value 115.242438
iter  70 value 110.150520
iter  80 value 104.483948
iter  90 value 100.400141
iter 100 value 94.290885
iter 110 value 93.303255
iter 120 value 93.061059
iter 130 value 92.940234
iter 140 value 92.891850
iter 150 value 92.843163
iter 160 value 92.820419
iter 170 value 92.807983
iter 180 value 92.800934
iter 190 value 92.788286
iter 200 value 92.772257
iter 210 value 92.767799
final  value 92.767650 
converged
# weights:  66
initial  value 1051.560850 
iter  10 value 128.345730
iter  20 value 127.399488
iter  30 value 124.978401
iter  40 value 118.610591
iter  50 value 116.623114
iter  60 value 115.996596
iter  70 value 115.772531
iter  80 value 115.340184
iter  90 value 114.945743
iter 100 value 114.612267
iter 110 value 114.442359
iter 120 value 114.412372
iter 130 value 114.396273
iter 140 value 114.392454
iter 150 value 114.392247
iter 160 value 114.392224
final  value 114.392212 
converged
# weights:  66
initial  value 4937.572947 
iter  10 value 133.755869
iter  20 value 133.009717
iter  30 value 131.761132
iter  40 value 129.669594
iter  50 value 127.126904
iter  60 value 123.917459
iter  70 value 122.692998
iter  80 value 122.449877
iter  90 value 122.018850
iter 100 value 121.317352
iter 110 value 119.903029
iter 120 value 119.702434
iter 130 value 119.521320
iter 140 value 119.172234
iter 150 value 118.304289
iter 160 value 116.671227
iter 170 value 115.382806
iter 180 value 114.725944
iter 190 value 113.903607
iter 200 value 113.396127
iter 210 value 111.664798
iter 220 value 105.081000
iter 230 value 101.616638
iter 240 value 100.560985
iter 250 value 100.244550
iter 260 value 99.870021
iter 270 value 99.612523
iter 280 value 99.432840
iter 290 value 99.362623
iter 300 value 99.317963
iter 310 value 99.222798
iter 320 value 99.205707
iter 330 value 99.193976
iter 340 value 99.185672
iter 350 value 99.171029
iter 360 value 99.153266
final  value 99.152762 
converged
# weights:  66
initial  value 375.456151 
iter  10 value 134.573065
iter  20 value 134.088239
iter  30 value 130.918460
iter  40 value 126.874079
iter  50 value 125.583339
iter  60 value 124.280422
iter  70 value 123.626631
iter  80 value 121.850807
iter  90 value 120.576113
iter 100 value 118.515823
iter 110 value 115.721215
iter 120 value 112.554727
iter 130 value 109.895258
iter 140 value 108.469972
iter 150 value 107.635098
iter 160 value 105.300200
iter 170 value 105.073249
iter 180 value 104.992283
iter 190 value 104.960495
iter 200 value 104.952414
iter 210 value 104.950871
iter 220 value 104.946498
iter 230 value 104.930381
iter 240 value 104.875974
iter 250 value 104.387616
iter 260 value 104.282717
iter 270 value 104.202676
iter 280 value 104.134553
iter 290 value 103.944200
iter 300 value 103.534662
iter 310 value 103.000770
iter 320 value 101.237414
iter 330 value 100.219717
iter 340 value 99.860333
iter 350 value 99.680706
iter 360 value 99.591925
iter 370 value 99.496055
iter 380 value 99.447049
iter 390 value 99.432902
iter 400 value 99.432630
iter 410 value 99.432458
iter 420 value 99.432288
iter 430 value 99.431882
iter 440 value 99.430849
iter 450 value 99.430770
final  value 99.430761 
converged
# weights:  66
initial  value 1054.035528 
iter  10 value 140.879253
iter  20 value 140.490742
iter  30 value 138.943417
iter  40 value 137.083615
iter  50 value 130.271040
iter  60 value 124.601020
iter  70 value 119.643785
iter  80 value 117.865102
iter  90 value 116.516661
iter 100 value 115.249255
iter 110 value 114.410102
iter 120 value 112.825465
iter 130 value 109.372996
iter 140 value 107.268039
iter 150 value 106.178375
iter 160 value 105.478868
iter 170 value 104.292346
iter 180 value 103.530488
iter 190 value 103.162719
iter 200 value 102.870934
iter 210 value 102.700801
iter 220 value 102.403142
iter 230 value 102.191736
iter 240 value 101.987892
iter 250 value 101.968966
iter 260 value 101.968692
final  value 101.968691 
converged
# weights:  66
initial  value 1909.059674 
iter  10 value 144.956119
iter  20 value 142.769564
iter  30 value 136.488129
iter  40 value 135.134707
iter  50 value 129.805384
iter  60 value 125.534309
iter  70 value 123.336882
iter  80 value 119.705355
iter  90 value 115.527730
iter 100 value 111.735677
iter 110 value 109.817827
iter 120 value 108.755083
iter 130 value 108.293594
iter 140 value 108.142693
iter 150 value 108.108522
iter 160 value 108.061947
iter 170 value 108.000670
iter 180 value 107.997025
iter 190 value 107.992111
iter 200 value 107.981497
iter 210 value 107.951096
iter 220 value 107.937376
iter 230 value 107.936592
final  value 107.936560 
converged
# weights:  66
initial  value 493.219765 
iter  10 value 146.170285
iter  20 value 145.930775
iter  30 value 144.207361
iter  40 value 141.598274
iter  50 value 134.938246
iter  60 value 133.640996
iter  70 value 133.352819
iter  80 value 133.275018
iter  90 value 133.259068
iter 100 value 133.240278
iter 110 value 133.170467
iter 120 value 133.167887
iter 130 value 133.167673
iter 140 value 133.166719
iter 150 value 133.166179
final  value 133.166149 
converged
# weights:  66
initial  value 449.314942 
iter  10 value 147.014069
iter  20 value 144.989731
iter  30 value 144.312846
iter  40 value 140.541592
iter  50 value 136.708949
iter  60 value 132.164011
iter  70 value 129.610320
iter  80 value 128.289984
iter  90 value 127.814679
iter 100 value 127.640710
iter 110 value 127.116071
iter 120 value 126.678321
iter 130 value 126.558666
iter 140 value 126.441359
iter 150 value 126.430283
iter 160 value 126.404172
iter 170 value 126.374470
iter 180 value 126.289591
iter 190 value 126.274446
iter 200 value 126.251373
iter 210 value 126.219041
iter 220 value 126.139696
iter 230 value 126.121902
iter 240 value 125.980849
iter 250 value 123.774779
iter 260 value 123.234999
iter 270 value 122.868329
iter 280 value 122.401729
iter 290 value 121.383971
iter 300 value 116.544332
iter 310 value 113.543409
iter 320 value 112.396446
iter 330 value 111.663265
iter 340 value 111.472449
iter 350 value 111.398668
iter 360 value 111.385966
iter 370 value 111.381199
iter 380 value 111.239374
iter 390 value 111.101999
iter 400 value 111.096001
iter 410 value 111.091099
iter 420 value 111.087013
iter 430 value 111.072376
iter 440 value 110.990017
iter 450 value 110.954974
iter 460 value 110.944098
final  value 110.943934 
converged
# weights:  66
initial  value 467.905159 
iter  10 value 146.661533
iter  20 value 141.650704
iter  30 value 138.273919
iter  40 value 137.354611
iter  50 value 136.599880
iter  60 value 135.928645
iter  70 value 134.718430
iter  80 value 133.701905
iter  90 value 132.830412
iter 100 value 131.978438
iter 110 value 130.555362
iter 120 value 129.100921
iter 130 value 128.600525
iter 140 value 128.373677
iter 150 value 128.285504
iter 160 value 128.188756
iter 170 value 128.078082
iter 180 value 127.525680
iter 190 value 125.640754
iter 200 value 124.304383
iter 210 value 123.697264
iter 220 value 122.858526
iter 230 value 122.615581
iter 240 value 122.432010
iter 250 value 122.292371
iter 260 value 122.177841
iter 270 value 122.061636
iter 280 value 122.023311
iter 290 value 122.020089
iter 300 value 122.018393
iter 310 value 122.013927
iter 320 value 121.998027
iter 330 value 121.977776
iter 340 value 121.973362
final  value 121.973340 
converged
# weights:  66
initial  value 5388.295308 
iter  10 value 148.779957
iter  20 value 148.129155
iter  30 value 144.124892
iter  40 value 138.068872
iter  50 value 135.864110
iter  60 value 134.349068
iter  70 value 133.475996
iter  80 value 132.441495
iter  90 value 131.093675
iter 100 value 130.290585
iter 110 value 129.145281
iter 120 value 128.438253
iter 130 value 128.279250
iter 140 value 128.271641
iter 150 value 128.218645
iter 160 value 128.048025
iter 170 value 127.493756
iter 180 value 126.799565
iter 190 value 126.086296
iter 200 value 125.133602
iter 210 value 124.625893
iter 220 value 124.439081
iter 230 value 124.269345
iter 240 value 123.996652
iter 250 value 123.646355
iter 260 value 123.317574
iter 270 value 122.769196
iter 280 value 122.571529
iter 290 value 122.481780
iter 300 value 122.435364
iter 310 value 122.420126
iter 320 value 122.413300
iter 330 value 122.187044
iter 340 value 122.154156
iter 350 value 122.151790
final  value 122.151753 
converged
# weights:  66
initial  value 270.288640 
iter  10 value 148.966431
iter  20 value 148.687996
iter  30 value 146.557893
iter  40 value 144.239414
iter  50 value 141.984877
iter  60 value 136.578914
iter  70 value 132.197944
iter  80 value 130.053702
iter  90 value 128.464047
iter 100 value 127.528666
iter 110 value 126.229383
iter 120 value 124.381116
iter 130 value 123.318626
iter 140 value 123.058194
iter 150 value 122.846594
iter 160 value 122.654861
iter 170 value 122.480018
iter 180 value 122.292918
iter 190 value 122.125023
iter 200 value 121.946783
iter 210 value 121.896597
iter 220 value 121.895977
iter 230 value 121.895266
iter 240 value 121.893218
iter 250 value 121.886887
iter 260 value 121.871971
iter 270 value 121.871594
final  value 121.871585 
converged
# weights:  66
initial  value 1569.110778 
iter  10 value 150.872614
iter  20 value 147.684034
iter  30 value 145.419866
iter  40 value 142.919427
iter  50 value 141.494973
iter  60 value 139.302758
iter  70 value 137.492569
iter  80 value 133.932129
iter  90 value 131.995207
iter 100 value 131.505536
iter 110 value 131.289841
iter 120 value 130.921004
iter 130 value 130.266729
iter 140 value 129.472171
iter 150 value 129.202865
iter 160 value 129.168443
iter 170 value 129.167497
iter 180 value 129.167454
iter 180 value 129.167453
final  value 129.167453 
converged
# weights:  66
initial  value 4401.922586 
iter  10 value 151.086911
iter  20 value 150.640850
iter  30 value 147.244739
iter  40 value 145.643466
iter  50 value 141.120982
iter  60 value 140.026733
iter  70 value 137.375300
iter  80 value 135.718707
iter  90 value 135.397370
iter 100 value 134.808597
iter 110 value 134.508508
iter 120 value 134.334165
iter 130 value 134.169112
iter 140 value 134.046191
iter 150 value 133.999351
iter 160 value 133.960613
iter 170 value 133.940047
iter 180 value 133.938240
iter 190 value 133.934975
iter 200 value 133.925476
iter 210 value 133.920020
iter 220 value 133.918799
final  value 133.918783 
converged
# weights:  66
initial  value 204.220078 
iter  10 value 155.135446
iter  20 value 154.382172
iter  30 value 153.594658
iter  40 value 150.301301
iter  50 value 144.398526
iter  60 value 143.721635
iter  70 value 142.322410
iter  80 value 141.250940
iter  90 value 139.719944
iter 100 value 138.508523
iter 110 value 137.549162
iter 120 value 135.952470
iter 130 value 135.499714
iter 140 value 135.140685
iter 150 value 134.669407
iter 160 value 134.362640
iter 170 value 133.477138
iter 180 value 133.131600
iter 190 value 133.003008
iter 200 value 132.945224
iter 210 value 132.851291
iter 220 value 132.630175
iter 230 value 132.122650
iter 240 value 131.749916
iter 250 value 131.208525
iter 260 value 130.379488
iter 270 value 130.182432
iter 280 value 130.096322
iter 290 value 129.941962
iter 300 value 129.203695
iter 310 value 126.145432
iter 320 value 123.591959
iter 330 value 121.357999
iter 340 value 120.791580
iter 350 value 120.567443
iter 360 value 120.167999
iter 370 value 119.506115
iter 380 value 118.930961
iter 390 value 118.202520
iter 400 value 117.874210
iter 410 value 117.853439
iter 420 value 117.818766
iter 430 value 117.701099
iter 440 value 117.393727
iter 450 value 116.977446
iter 460 value 116.851226
iter 470 value 116.814864
iter 480 value 116.781027
iter 490 value 116.723917
iter 500 value 116.689976
iter 510 value 116.676147
iter 520 value 116.647600
iter 530 value 116.580205
iter 540 value 116.515030
iter 550 value 116.423842
iter 560 value 116.417379
iter 570 value 116.417117
iter 570 value 116.417116
iter 570 value 116.417116
final  value 116.417116 
converged
Borrowing money ( 154950.8 ) for closing a short position (PosID= 49 )
Borrowing money ( 203521.7 ) for closing a short position (PosID= 46 )
Borrowing money ( 461777.9 ) for closing a short position (PosID= 47 )
Borrowing money ( 235104.3 ) for closing a short position (PosID= 128 )
Borrowing money ( 367471.1 ) for closing a short position (PosID= 133 )
Borrowing money ( 909325.9 ) for closing a short position (PosID= 134 )
Borrowing money ( 1455319 ) for closing a short position (PosID= 137 )
Borrowing money ( 114186.4 ) for closing a short position (PosID= 139 )
Borrowing money ( 395198.9 ) for closing a short position (PosID= 146 )
Borrowing money ( 114105.7 ) for closing a short position (PosID= 343 )
Borrowing money ( 313158.6 ) for closing a short position (PosID= 344 )
Borrowing money ( 108990.9 ) for closing a short position (PosID= 347 )
Borrowing money ( 7125.031 ) for closing a short position (PosID= 348 )
# weights:  66
initial  value 2184.640405 
iter  10 value 73.270611
iter  20 value 72.978586
iter  30 value 72.631956
iter  40 value 71.729029
iter  50 value 70.560813
iter  60 value 70.189213
iter  70 value 70.100579
iter  80 value 70.061860
iter  90 value 70.026225
iter 100 value 69.195181
iter 110 value 67.280069
iter 120 value 64.988720
iter 130 value 63.773440
iter 140 value 62.795096
iter 150 value 62.159998
iter 160 value 60.859369
iter 170 value 60.667830
iter 180 value 60.646716
iter 190 value 60.609120
iter 200 value 60.594233
iter 210 value 60.532900
iter 220 value 60.252125
iter 230 value 59.522955
iter 240 value 58.769808
iter 250 value 58.682310
iter 260 value 58.627315
iter 270 value 58.612564
iter 280 value 58.574812
iter 290 value 58.563333
iter 300 value 58.555093
iter 310 value 58.551148
iter 320 value 58.549127
iter 320 value 58.549127
final  value 58.549124 
converged
# weights:  66
initial  value 207.410306 
iter  10 value 73.654016
iter  20 value 73.593355
iter  30 value 73.414819
iter  40 value 72.990820
iter  50 value 70.886254
iter  60 value 69.784151
iter  70 value 68.367455
iter  80 value 66.782327
iter  90 value 65.881367
iter 100 value 64.247427
iter 110 value 63.461912
iter 120 value 63.215069
iter 130 value 63.098542
iter 140 value 62.690272
iter 150 value 61.726235
iter 160 value 61.314112
iter 170 value 61.143161
iter 180 value 61.105888
iter 190 value 61.052531
iter 200 value 60.991124
iter 210 value 60.926248
iter 220 value 60.901365
iter 230 value 60.887557
iter 240 value 60.850943
iter 250 value 60.819395
iter 260 value 60.739025
iter 270 value 60.733001
iter 280 value 60.719003
iter 290 value 60.695174
iter 300 value 60.617296
iter 310 value 60.586924
iter 320 value 60.553064
iter 330 value 60.549807
iter 340 value 60.540895
iter 350 value 60.514089
iter 360 value 60.287801
iter 370 value 59.910736
iter 380 value 59.286890
iter 390 value 58.983128
iter 400 value 58.850660
iter 410 value 58.603404
iter 420 value 58.119167
iter 430 value 57.867621
iter 440 value 57.690566
iter 450 value 57.652531
iter 460 value 57.640985
iter 470 value 57.638509
iter 480 value 57.637968
iter 490 value 57.637467
iter 500 value 57.634089
iter 510 value 57.615473
iter 520 value 57.585007
iter 530 value 57.572654
iter 540 value 57.568734
iter 550 value 57.567888
iter 560 value 57.567646
iter 570 value 57.567500
iter 570 value 57.567499
iter 570 value 57.567499
final  value 57.567499 
converged
# weights:  66
initial  value 258.246314 
iter  10 value 73.780497
iter  20 value 73.293033
iter  30 value 71.593654
iter  40 value 70.200168
iter  50 value 68.955087
iter  60 value 66.506155
iter  70 value 65.505935
iter  80 value 65.021525
iter  90 value 64.970526
iter 100 value 64.463804
iter 110 value 62.083252
iter 120 value 61.571197
iter 130 value 61.077412
iter 140 value 61.026899
iter 150 value 61.015934
iter 160 value 61.004471
iter 160 value 61.004471
final  value 61.004471 
converged
# weights:  66
initial  value 476.543742 
iter  10 value 74.539675
iter  20 value 74.497558
iter  30 value 73.929810
iter  40 value 73.670973
iter  50 value 72.720273
iter  60 value 70.747856
iter  70 value 70.002362
iter  80 value 69.504136
iter  90 value 68.373634
iter 100 value 67.242103
iter 110 value 65.366429
iter 120 value 64.595341
iter 130 value 64.476407
iter 140 value 64.417289
iter 150 value 64.377199
iter 160 value 64.234214
iter 170 value 64.192992
iter 180 value 64.186186
iter 190 value 64.144573
iter 200 value 64.135510
iter 210 value 64.132844
iter 220 value 64.132641
final  value 64.132639 
converged
# weights:  66
initial  value 9184.506236 
iter  10 value 76.909855
iter  20 value 76.909280
final  value 76.909271 
converged
# weights:  66
initial  value 244.810632 
final  value 80.268293 
converged
# weights:  66
initial  value 321.067310 
iter  10 value 101.379662
iter  20 value 101.376814
iter  30 value 101.339250
iter  40 value 100.728293
iter  50 value 100.198602
iter  60 value 99.870683
iter  70 value 99.818959
iter  80 value 99.757796
iter  90 value 99.742923
iter 100 value 99.721244
iter 110 value 99.716196
iter 120 value 99.523006
iter 130 value 98.538299
iter 140 value 96.322016
iter 150 value 95.508607
iter 160 value 94.209137
iter 170 value 92.495864
iter 180 value 92.272786
iter 190 value 92.199316
iter 200 value 92.187605
iter 210 value 91.835244
iter 220 value 90.415252
iter 230 value 89.843901
iter 240 value 89.714785
iter 250 value 89.700554
iter 260 value 89.692161
iter 270 value 89.664594
iter 280 value 89.495480
iter 290 value 89.222308
iter 300 value 89.182093
iter 310 value 89.131368
iter 320 value 89.120487
iter 330 value 89.116174
iter 340 value 89.109669
iter 350 value 89.071619
iter 360 value 89.045337
iter 370 value 89.043348
iter 380 value 89.042215
iter 390 value 89.041315
iter 400 value 89.040977
final  value 89.040846 
converged
# weights:  66
initial  value 4114.361628 
iter  10 value 121.606385
iter  20 value 120.101077
iter  30 value 118.140053
iter  40 value 116.218925
iter  50 value 116.128990
iter  60 value 116.039892
iter  70 value 115.982949
iter  80 value 115.973368
iter  90 value 115.972222
iter 100 value 115.969113
final  value 115.952313 
converged
# weights:  66
initial  value 135.072962 
iter  10 value 126.557548
iter  20 value 125.639263
iter  30 value 124.250737
iter  40 value 123.106745
iter  50 value 117.114537
iter  60 value 110.821448
iter  70 value 108.290830
iter  80 value 106.168273
iter  90 value 105.435389
iter 100 value 104.505238
iter 110 value 104.210815
iter 120 value 104.080916
iter 130 value 103.760685
iter 140 value 102.993418
iter 150 value 102.480463
iter 160 value 102.260137
iter 170 value 102.216730
iter 180 value 102.197983
iter 190 value 102.196020
iter 200 value 102.191252
iter 210 value 102.179294
iter 220 value 102.165321
iter 230 value 102.048383
iter 240 value 101.854525
iter 250 value 101.315886
iter 260 value 101.171354
iter 270 value 101.127273
iter 280 value 101.087328
iter 290 value 101.061955
iter 300 value 101.051168
iter 310 value 101.029106
iter 320 value 101.022487
final  value 101.021898 
converged
# weights:  66
initial  value 1022.300799 
iter  10 value 128.292386
iter  20 value 126.695900
iter  30 value 126.012434
iter  40 value 124.788027
iter  50 value 123.184593
iter  60 value 119.843307
iter  70 value 110.748228
iter  80 value 106.857862
iter  90 value 102.091133
iter 100 value 98.185067
iter 110 value 96.687327
iter 120 value 95.318370
iter 130 value 94.288324
iter 140 value 93.460767
iter 150 value 92.995339
iter 160 value 92.907704
iter 170 value 92.864993
iter 180 value 92.808070
iter 190 value 92.713343
iter 200 value 92.142909
iter 210 value 91.866195
iter 220 value 91.769855
iter 230 value 91.750443
iter 240 value 91.747388
iter 250 value 91.745772
iter 260 value 91.745379
final  value 91.745315 
converged
# weights:  66
initial  value 368.441893 
iter  10 value 133.706608
iter  20 value 132.245777
iter  30 value 130.049620
iter  40 value 125.842615
iter  50 value 124.283233
iter  60 value 123.488339
iter  70 value 121.746138
iter  80 value 120.178685
iter  90 value 116.980769
iter 100 value 115.205689
iter 110 value 114.317890
iter 120 value 113.492259
iter 130 value 112.994025
iter 140 value 112.565885
iter 150 value 112.160738
iter 160 value 111.354354
iter 170 value 110.774674
iter 180 value 110.097236
iter 190 value 108.988243
iter 200 value 108.030634
iter 210 value 107.274730
iter 220 value 105.235233
iter 230 value 103.062273
iter 240 value 101.376238
iter 250 value 99.629950
iter 260 value 98.422903
iter 270 value 97.900084
iter 280 value 96.830123
iter 290 value 96.347553
iter 300 value 96.028745
iter 310 value 95.908200
iter 320 value 95.884773
iter 330 value 95.882824
iter 340 value 95.881933
iter 350 value 95.879926
iter 360 value 95.874707
iter 370 value 95.856693
iter 380 value 95.852096
iter 390 value 95.850823
iter 400 value 95.850610
final  value 95.850519 
converged
# weights:  66
initial  value 7116.477438 
iter  10 value 134.407491
iter  20 value 133.589974
iter  30 value 130.141781
iter  40 value 127.935807
iter  50 value 122.212997
iter  60 value 115.621734
iter  70 value 112.000843
iter  80 value 108.767513
iter  90 value 106.415793
iter 100 value 105.474709
iter 110 value 105.131603
iter 120 value 104.923842
iter 130 value 104.411847
iter 140 value 103.227104
iter 150 value 102.605692
iter 160 value 102.202948
iter 170 value 102.066420
iter 180 value 102.023688
iter 190 value 101.976852
iter 200 value 101.599805
iter 210 value 101.313292
iter 220 value 101.242781
iter 230 value 101.123311
iter 240 value 101.110725
iter 250 value 101.037477
iter 260 value 100.956798
iter 270 value 100.845206
iter 280 value 100.794241
iter 290 value 100.774230
iter 300 value 100.766369
iter 310 value 100.762176
iter 320 value 100.761032
iter 330 value 100.760661
final  value 100.760648 
converged
# weights:  66
initial  value 920.006771 
iter  10 value 140.879267
iter  20 value 139.946009
iter  30 value 134.260909
iter  40 value 131.913745
iter  50 value 131.561173
iter  60 value 131.219428
iter  70 value 130.548027
iter  80 value 129.467360
iter  90 value 128.906687
iter 100 value 128.390782
iter 110 value 128.148427
iter 120 value 127.897706
iter 130 value 127.308319
iter 140 value 126.250840
iter 150 value 126.099646
iter 160 value 125.987658
iter 170 value 125.773305
iter 180 value 125.662912
iter 190 value 125.582271
iter 200 value 125.515664
iter 210 value 125.381592
iter 220 value 125.334922
iter 230 value 124.963407
iter 240 value 124.508751
iter 250 value 123.422458
iter 260 value 120.640763
iter 270 value 118.895132
iter 280 value 118.204927
iter 290 value 117.967553
iter 300 value 117.845791
iter 310 value 117.806892
iter 320 value 117.729773
iter 330 value 117.222811
iter 340 value 116.931293
iter 350 value 116.702906
iter 360 value 115.725442
iter 370 value 114.873490
iter 380 value 114.709692
iter 390 value 114.604002
iter 400 value 114.531312
iter 410 value 114.505496
iter 420 value 114.482819
iter 430 value 114.475363
iter 440 value 114.464560
iter 450 value 114.450994
iter 460 value 114.428930
iter 470 value 114.407319
iter 480 value 114.399760
iter 490 value 114.396583
iter 500 value 114.395746
final  value 114.395586 
converged
# weights:  66
initial  value 207.204535 
iter  10 value 144.984706
iter  20 value 143.828447
iter  30 value 140.391373
iter  40 value 138.745466
iter  50 value 132.149641
iter  60 value 128.732127
iter  70 value 127.890815
iter  80 value 127.452844
iter  90 value 126.922808
iter 100 value 126.691077
iter 110 value 126.321029
iter 120 value 125.873045
iter 130 value 125.250320
iter 140 value 124.798628
iter 150 value 124.095576
iter 160 value 122.971459
iter 170 value 118.142769
iter 180 value 115.705270
iter 190 value 114.802202
iter 200 value 114.218271
iter 210 value 113.417063
iter 220 value 112.295553
iter 230 value 110.936546
iter 240 value 109.340463
iter 250 value 109.107550
iter 260 value 108.791588
iter 270 value 108.543314
iter 280 value 108.195193
iter 290 value 107.535285
iter 300 value 106.598390
iter 310 value 106.020201
iter 320 value 105.829308
iter 330 value 105.573549
iter 340 value 105.416027
iter 350 value 104.977465
iter 360 value 104.854318
iter 370 value 104.829516
final  value 104.825781 
converged
# weights:  66
initial  value 286.033133 
iter  10 value 146.119169
iter  20 value 145.374010
iter  30 value 142.762354
iter  40 value 137.126718
iter  50 value 134.990290
iter  60 value 130.506161
iter  70 value 123.051498
iter  80 value 118.612320
iter  90 value 116.730591
iter 100 value 116.293094
iter 110 value 115.899873
iter 120 value 115.641513
iter 130 value 115.538528
iter 140 value 115.190697
iter 150 value 115.047608
iter 160 value 114.959311
iter 170 value 114.953530
iter 180 value 114.934524
iter 190 value 114.919426
iter 200 value 114.827364
iter 210 value 114.761780
iter 220 value 114.748567
iter 230 value 114.740792
iter 240 value 114.713218
iter 250 value 114.665992
iter 260 value 114.530907
iter 270 value 114.507351
iter 280 value 114.498186
iter 290 value 114.483305
iter 300 value 114.434181
iter 310 value 114.424268
iter 320 value 114.383441
iter 330 value 114.291851
iter 340 value 114.264125
iter 350 value 114.249784
iter 360 value 114.233096
iter 370 value 114.198426
iter 380 value 114.141948
iter 390 value 114.044516
iter 400 value 113.999194
iter 410 value 113.877571
iter 420 value 113.337848
iter 430 value 112.424960
iter 440 value 111.867388
iter 450 value 111.072360
iter 460 value 110.789071
iter 470 value 110.698266
iter 480 value 110.697333
iter 490 value 110.695257
iter 500 value 110.690848
iter 510 value 110.631328
iter 520 value 110.591334
iter 530 value 110.570900
iter 540 value 110.569434
iter 550 value 110.568483
final  value 110.568376 
converged
# weights:  66
initial  value 10376.069194 
iter  10 value 147.162587
iter  20 value 145.599417
iter  30 value 143.613439
iter  40 value 143.298024
iter  50 value 143.208551
iter  60 value 143.200446
iter  70 value 143.196799
iter  80 value 142.849513
iter  90 value 141.802883
iter 100 value 140.995895
iter 110 value 139.894525
iter 120 value 139.706622
iter 130 value 139.675764
iter 140 value 139.660764
final  value 139.659223 
converged
# weights:  66
initial  value 312.200936 
final  value 147.728570 
converged
# weights:  66
initial  value 274.305971 
iter  10 value 148.990630
iter  20 value 148.988256
iter  30 value 148.922230
iter  40 value 148.336679
iter  50 value 147.447808
iter  60 value 144.322972
iter  70 value 142.783447
iter  80 value 142.032886
iter  90 value 141.901979
iter 100 value 141.856009
iter 110 value 141.827210
iter 120 value 141.804594
iter 130 value 141.801092
iter 140 value 141.781834
iter 150 value 141.409452
iter 160 value 140.958956
iter 170 value 139.930939
iter 180 value 139.571908
iter 190 value 139.004591
iter 200 value 138.959209
iter 210 value 138.915953
iter 220 value 138.849953
iter 230 value 138.792600
iter 240 value 138.317876
iter 250 value 137.575491
iter 260 value 137.245368
iter 270 value 137.167927
iter 280 value 137.125273
iter 290 value 137.118040
iter 300 value 137.092303
iter 310 value 136.889533
iter 320 value 135.794892
iter 330 value 134.837776
iter 340 value 134.586377
iter 350 value 134.484866
iter 360 value 134.384471
iter 370 value 134.360864
iter 380 value 134.345863
iter 390 value 134.343464
iter 400 value 134.340375
iter 410 value 134.336791
final  value 134.336689 
converged
# weights:  66
initial  value 2772.909781 
iter  10 value 148.999198
iter  20 value 147.859739
iter  30 value 142.664338
iter  40 value 141.312994
iter  50 value 140.472673
iter  60 value 138.044034
iter  70 value 136.450521
iter  80 value 135.126142
iter  90 value 134.135382
iter 100 value 132.821304
iter 110 value 132.347480
iter 120 value 132.107251
iter 130 value 131.842601
iter 140 value 131.677634
iter 150 value 131.566622
iter 160 value 131.520750
iter 170 value 131.513659
iter 180 value 131.485842
iter 190 value 131.456135
iter 200 value 131.437989
iter 210 value 131.433927
iter 220 value 131.433385
final  value 131.433165 
converged
# weights:  66
initial  value 347.748771 
iter  10 value 150.865667
iter  20 value 147.765836
iter  30 value 145.504605
iter  40 value 142.410905
iter  50 value 139.655025
iter  60 value 136.424887
iter  70 value 134.013781
iter  80 value 131.861610
iter  90 value 125.443886
iter 100 value 123.194160
iter 110 value 122.291150
iter 120 value 121.692565
iter 130 value 120.921374
iter 140 value 120.265882
iter 150 value 118.808308
iter 160 value 118.059924
iter 170 value 117.342216
iter 180 value 116.217041
iter 190 value 114.922281
iter 200 value 114.375302
iter 210 value 113.746168
iter 220 value 113.519632
iter 230 value 113.471006
iter 240 value 113.458158
iter 250 value 113.445345
iter 260 value 113.386466
iter 270 value 113.210378
iter 280 value 112.989667
iter 290 value 112.878292
iter 300 value 112.857905
iter 310 value 112.854792
iter 320 value 112.853894
iter 330 value 112.853461
iter 340 value 112.853311
final  value 112.853309 
converged
# weights:  66
initial  value 8987.133787 
iter  10 value 161.890213
iter  20 value 149.532705
iter  30 value 146.291971
iter  40 value 146.173746
iter  50 value 146.031730
iter  60 value 146.011433
iter  70 value 145.812158
iter  80 value 145.227439
iter  90 value 142.205161
iter 100 value 138.766551
iter 110 value 137.281265
iter 120 value 135.487842
iter 130 value 133.302906
iter 140 value 131.468911
iter 150 value 129.390568
iter 160 value 129.019591
iter 170 value 128.974334
iter 180 value 128.924855
iter 190 value 128.918345
iter 200 value 128.913774
iter 210 value 128.913196
final  value 128.913124 
converged
# weights:  66
initial  value 157.052466 
iter  10 value 155.432993
iter  20 value 154.695894
iter  30 value 150.946530
iter  40 value 148.153517
iter  50 value 147.150537
iter  60 value 143.869085
iter  70 value 140.943109
iter  80 value 137.753910
iter  90 value 135.304878
iter 100 value 132.882339
iter 110 value 131.817457
iter 120 value 131.407327
iter 130 value 131.301781
iter 140 value 131.227497
iter 150 value 131.159751
iter 160 value 131.133166
iter 170 value 131.118711
iter 180 value 131.096078
iter 190 value 131.085817
iter 200 value 131.072912
iter 210 value 131.059789
iter 220 value 131.052559
iter 230 value 131.051032
iter 240 value 131.049763
iter 250 value 131.049639
final  value 131.049600 
converged
Borrowing money ( 58298.56 ) for closing a short position (PosID= 79 )
Borrowing money ( 235889.4 ) for closing a short position (PosID= 80 )
Borrowing money ( 413673.1 ) for closing a short position (PosID= 81 )
Borrowing money ( 161009.8 ) for closing a short position (PosID= 86 )
Borrowing money ( 336263.9 ) for closing a short position (PosID= 82 )
Borrowing money ( 511330.2 ) for closing a short position (PosID= 83 )
Borrowing money ( 308458.1 ) for closing a short position (PosID= 87 )
Borrowing money ( 146227.7 ) for closing a short position (PosID= 88 )
Borrowing money ( 112655.7 ) for closing a short position (PosID= 93 )
Borrowing money ( 85223.59 ) for closing a short position (PosID= 94 )
Borrowing money ( 49366.7 ) for closing a short position (PosID= 263 )
Borrowing money ( 28627.33 ) for closing a short position (PosID= 335 )
Borrowing money ( 213468.1 ) for closing a short position (PosID= 336 )
# weights:  66
initial  value 2382.245838 
iter  10 value 73.234197
iter  20 value 73.043050
iter  30 value 71.840041
iter  40 value 70.299729
iter  50 value 69.761645
iter  60 value 68.822919
iter  70 value 67.537955
iter  80 value 66.856140
iter  90 value 65.922366
iter 100 value 64.627841
iter 110 value 62.954839
iter 120 value 61.467469
iter 130 value 60.703687
iter 140 value 60.573978
iter 150 value 60.471328
iter 160 value 60.459209
iter 170 value 60.429514
iter 180 value 60.404042
iter 190 value 60.390538
iter 200 value 60.380304
final  value 60.380091 
converged
Borrowing money ( 48167.11 ) for closing a short position (PosID= 27 )
Borrowing money ( 294856.6 ) for closing a short position (PosID= 28 )
Borrowing money ( 296160.9 ) for closing a short position (PosID= 26 )
Borrowing money ( 17508.74 ) for closing a short position (PosID= 31 )
Borrowing money ( 591903.8 ) for closing a short position (PosID= 67 )
Borrowing money ( 1314171 ) for closing a short position (PosID= 62 )
Borrowing money ( 2070599 ) for closing a short position (PosID= 65 )
Borrowing money ( 2854014 ) for closing a short position (PosID= 68 )
Borrowing money ( 3638736 ) for closing a short position (PosID= 69 )
Borrowing money ( 4421271 ) for closing a short position (PosID= 70 )
Borrowing money ( 3454218 ) for closing a short position (PosID= 75 )
Borrowing money ( 4204413 ) for closing a short position (PosID= 71 )
Borrowing money ( 4956874 ) for closing a short position (PosID= 72 )
Borrowing money ( 4472740 ) for closing a short position (PosID= 76 )
Borrowing money ( 4230923 ) for closing a short position (PosID= 77 )
Borrowing money ( 2294985 ) for closing a short position (PosID= 74 )
Borrowing money ( 419786.6 ) for closing a short position (PosID= 79 )
Borrowing money ( 1168231 ) for closing a short position (PosID= 78 )
Borrowing money ( 1953120 ) for closing a short position (PosID= 86 )
Borrowing money ( 495738.3 ) for closing a short position (PosID= 88 )
Borrowing money ( 120755.1 ) for closing a short position (PosID= 96 )
Borrowing money ( 99101.05 ) for closing a short position (PosID= 104 )
Borrowing money ( 82221.01 ) for closing a short position (PosID= 110 )
Borrowing money ( 73248.58 ) for closing a short position (PosID= 111 )
Borrowing money ( 70669.52 ) for closing a short position (PosID= 113 )
Borrowing money ( 34794.84 ) for closing a short position (PosID= 109 )
Borrowing money ( 29674.48 ) for closing a short position (PosID= 112 )
Borrowing money ( 28404.08 ) for closing a short position (PosID= 114 )
Borrowing money ( 1047.793 ) for closing a short position (PosID= 124 )
Borrowing money ( 78827.55 ) for closing a short position (PosID= 126 )
Borrowing money ( 628538.5 ) for closing a short position (PosID= 154 )
Borrowing money ( 1932095 ) for closing a short position (PosID= 155 )
Borrowing money ( 3224784 ) for closing a short position (PosID= 156 )
Borrowing money ( 4572746 ) for closing a short position (PosID= 160 )
Borrowing money ( 2506627 ) for closing a short position (PosID= 164 )
Borrowing money ( 4131139 ) for closing a short position (PosID= 161 )
Borrowing money ( 1378299 ) for closing a short position (PosID= 157 )
Borrowing money ( 2766421 ) for closing a short position (PosID= 158 )
Borrowing money ( 4194059 ) for closing a short position (PosID= 159 )
Borrowing money ( 333313.4 ) for closing a short position (PosID= 329 )
Borrowing money ( 889054.6 ) for closing a short position (PosID= 369 )
Borrowing money ( 2165295 ) for closing a short position (PosID= 364 )
Borrowing money ( 2064564 ) for closing a short position (PosID= 362 )
Borrowing money ( 1789326 ) for closing a short position (PosID= 363 )
Borrowing money ( 2948590 ) for closing a short position (PosID= 372 )
Borrowing money ( 4055428 ) for closing a short position (PosID= 373 )
Borrowing money ( 828383.7 ) for closing a short position (PosID= 377 )
Borrowing money ( 1260819 ) for closing a short position (PosID= 385 )
Borrowing money ( 946581.6 ) for closing a short position (PosID= 389 )
Borrowing money ( 788907 ) for closing a short position (PosID= 390 )
Borrowing money ( 159212 ) for closing a short position (PosID= 388 )
Borrowing money ( 759518.9 ) for closing a short position (PosID= 449 )
Borrowing money ( 176293.6 ) for closing a short position (PosID= 463 )
Borrowing money ( 955882 ) for closing a short position (PosID= 535 )
Borrowing money ( 870206.5 ) for closing a short position (PosID= 540 )
Borrowing money ( 602570.1 ) for closing a short position (PosID= 561 )
Borrowing money ( 1721422 ) for closing a short position (PosID= 563 )
Borrowing money ( 2802184 ) for closing a short position (PosID= 564 )
Borrowing money ( 3822554 ) for closing a short position (PosID= 554 )
Borrowing money ( 4896919 ) for closing a short position (PosID= 566 )
Borrowing money ( 5943288 ) for closing a short position (PosID= 559 )
Borrowing money ( 6995180 ) for closing a short position (PosID= 565 )
Borrowing money ( 80088.23 ) for closing a short position (PosID= 567 )
Borrowing money ( 10606.1 ) for closing a short position (PosID= 584 )
Borrowing money ( 240056.5 ) for closing a short position (PosID= 585 )
Borrowing money ( 467899.3 ) for closing a short position (PosID= 586 )
Borrowing money ( 761345.7 ) for closing a short position (PosID= 577 )
Borrowing money ( 638683.9 ) for closing a short position (PosID= 644 )
Borrowing money ( 630278 ) for closing a short position (PosID= 655 )
Borrowing money ( 1437653 ) for closing a short position (PosID= 647 )
Borrowing money ( 1420685 ) for closing a short position (PosID= 654 )
Borrowing money ( 2235503 ) for closing a short position (PosID= 642 )
Borrowing money ( 2231253 ) for closing a short position (PosID= 656 )
Borrowing money ( 501406.2 ) for closing a short position (PosID= 665 )
Borrowing money ( 458713.3 ) for closing a short position (PosID= 662 )
Borrowing money ( 985868.3 ) for closing a short position (PosID= 663 )
Borrowing money ( 1519841 ) for closing a short position (PosID= 664 )
Borrowing money ( 1448836 ) for closing a short position (PosID= 673 )
Borrowing money ( 2049914 ) for closing a short position (PosID= 661 )
Borrowing money ( 1909456 ) for closing a short position (PosID= 672 )
# weights:  131
initial  value 6549.908247 
iter  10 value 73.303219
iter  20 value 73.157269
iter  30 value 71.291114
iter  40 value 69.984708
iter  50 value 69.292514
iter  60 value 69.130329
iter  70 value 68.447853
iter  80 value 68.117319
iter  90 value 67.745797
iter 100 value 67.179594
iter 110 value 63.569582
iter 120 value 62.843570
iter 130 value 62.550867
iter 140 value 62.484420
iter 150 value 62.190655
iter 160 value 61.574850
iter 170 value 61.243677
iter 180 value 61.035671
iter 190 value 60.915463
iter 200 value 60.716972
iter 210 value 60.632898
iter 220 value 60.483104
iter 230 value 60.272825
iter 240 value 59.795678
iter 250 value 59.752656
iter 260 value 59.699004
iter 270 value 59.295959
iter 280 value 57.871833
iter 290 value 57.571582
iter 300 value 57.331488
iter 310 value 57.257991
iter 320 value 57.247823
iter 330 value 57.244035
iter 340 value 57.224280
iter 350 value 56.912001
iter 360 value 56.453463
iter 370 value 56.200899
iter 380 value 55.984432
iter 390 value 55.873166
iter 400 value 55.865894
iter 410 value 55.831218
iter 420 value 55.741260
iter 430 value 55.124889
iter 440 value 53.361959
iter 450 value 50.192382
iter 460 value 49.780948
iter 470 value 49.566107
iter 480 value 49.423093
iter 490 value 49.339743
iter 500 value 49.337853
iter 510 value 49.334360
iter 520 value 49.325405
iter 530 value 49.272876
iter 540 value 49.075990
iter 550 value 48.633606
iter 560 value 48.475236
iter 570 value 48.342519
iter 580 value 48.291286
iter 590 value 48.274869
iter 600 value 48.273352
iter 610 value 48.269785
iter 620 value 48.269028
iter 630 value 48.266553
iter 640 value 48.239096
iter 650 value 48.145719
iter 660 value 48.057235
iter 670 value 48.048075
iter 680 value 48.035050
iter 690 value 48.003666
iter 700 value 47.909071
iter 710 value 47.620452
iter 720 value 46.965663
iter 730 value 46.241081
iter 740 value 45.905364
iter 750 value 45.224774
final  value 45.224774 
stopped after 750 iterations
Borrowing money ( 9344.895 ) for closing a short position (PosID= 19 )
Borrowing money ( 19682.23 ) for closing a short position (PosID= 20 )
Borrowing money ( 30081.73 ) for closing a short position (PosID= 18 )
Borrowing money ( 26198.08 ) for closing a short position (PosID= 26 )
Borrowing money ( 24904.38 ) for closing a short position (PosID= 27 )
Borrowing money ( 55630.26 ) for closing a short position (PosID= 33 )
Borrowing money ( 124498.7 ) for closing a short position (PosID= 35 )
Borrowing money ( 193197.5 ) for closing a short position (PosID= 36 )
Borrowing money ( 261659.3 ) for closing a short position (PosID= 37 )
Borrowing money ( 330373.3 ) for closing a short position (PosID= 38 )
Borrowing money ( 400280.6 ) for closing a short position (PosID= 39 )
Borrowing money ( 469532 ) for closing a short position (PosID= 32 )
Borrowing money ( 332161.1 ) for closing a short position (PosID= 31 )
Borrowing money ( 381452.8 ) for closing a short position (PosID= 78 )
Borrowing money ( 773746.6 ) for closing a short position (PosID= 79 )
Borrowing money ( 182104.3 ) for closing a short position (PosID= 94 )
Borrowing money ( 468697 ) for closing a short position (PosID= 92 )
Borrowing money ( 150725 ) for closing a short position (PosID= 162 )
Borrowing money ( 541145 ) for closing a short position (PosID= 167 )
Borrowing money ( 216549.6 ) for closing a short position (PosID= 161 )
Borrowing money ( 671963.3 ) for closing a short position (PosID= 148 )
Borrowing money ( 1129075 ) for closing a short position (PosID= 149 )
Borrowing money ( 1600818 ) for closing a short position (PosID= 158 )
Borrowing money ( 2071498 ) for closing a short position (PosID= 159 )
Borrowing money ( 2543121 ) for closing a short position (PosID= 160 )
Borrowing money ( 3016295 ) for closing a short position (PosID= 164 )
Borrowing money ( 3468715 ) for closing a short position (PosID= 166 )
Borrowing money ( 3911796 ) for closing a short position (PosID= 168 )
Borrowing money ( 176894 ) for closing a short position (PosID= 153 )
Borrowing money ( 662383.6 ) for closing a short position (PosID= 163 )
Borrowing money ( 160477.9 ) for closing a short position (PosID= 264 )
Borrowing money ( 301592 ) for closing a short position (PosID= 262 )
Borrowing money ( 153143.7 ) for closing a short position (PosID= 277 )
Borrowing money ( 490392.1 ) for closing a short position (PosID= 278 )
Borrowing money ( 150882.4 ) for closing a short position (PosID= 298 )
Borrowing money ( 376209.2 ) for closing a short position (PosID= 300 )
Borrowing money ( 600194 ) for closing a short position (PosID= 303 )
Borrowing money ( 397587.3 ) for closing a short position (PosID= 304 )
Borrowing money ( 434034.4 ) for closing a short position (PosID= 361 )
Borrowing money ( 428895.8 ) for closing a short position (PosID= 369 )
Borrowing money ( 426822.5 ) for closing a short position (PosID= 370 )
Borrowing money ( 347478.3 ) for closing a short position (PosID= 365 )
Borrowing money ( 413563.6 ) for closing a short position (PosID= 434 )
Borrowing money ( 234212.3 ) for closing a short position (PosID= 470 )
Borrowing money ( 101376.4 ) for closing a short position (PosID= 468 )
Borrowing money ( 65751.07 ) for closing a short position (PosID= 476 )
Borrowing money ( 58133 ) for closing a short position (PosID= 478 )
Borrowing money ( 54332.54 ) for closing a short position (PosID= 479 )
Borrowing money ( 311136.9 ) for closing a short position (PosID= 589 )
Borrowing money ( 653727.7 ) for closing a short position (PosID= 590 )
Borrowing money ( 988288.4 ) for closing a short position (PosID= 584 )
Borrowing money ( 1322031 ) for closing a short position (PosID= 585 )
Borrowing money ( 1654847 ) for closing a short position (PosID= 586 )
Borrowing money ( 1989710 ) for closing a short position (PosID= 587 )
Borrowing money ( 2312843 ) for closing a short position (PosID= 594 )
Borrowing money ( 2637322 ) for closing a short position (PosID= 595 )
Borrowing money ( 2278438 ) for closing a short position (PosID= 581 )
Borrowing money ( 2583279 ) for closing a short position (PosID= 596 )
Borrowing money ( 2906462 ) for closing a short position (PosID= 588 )
Borrowing money ( 2844801 ) for closing a short position (PosID= 602 )
Borrowing money ( 2602537 ) for closing a short position (PosID= 600 )
Borrowing money ( 2481409 ) for closing a short position (PosID= 601 )
Borrowing money ( 1508483 ) for closing a short position (PosID= 598 )
Borrowing money ( 1022819 ) for closing a short position (PosID= 599 )
Borrowing money ( 992907.3 ) for closing a short position (PosID= 603 )
Borrowing money ( 167554.6 ) for closing a short position (PosID= 635 )
Borrowing money ( 159416.8 ) for closing a short position (PosID= 649 )
Borrowing money ( 36643.58 ) for closing a short position (PosID= 638 )
Borrowing money ( 152002.6 ) for closing a short position (PosID= 43 )
Borrowing money ( 361900.2 ) for closing a short position (PosID= 44 )
Borrowing money ( 571687.4 ) for closing a short position (PosID= 46 )
Borrowing money ( 780561.9 ) for closing a short position (PosID= 42 )
Borrowing money ( 989467.3 ) for closing a short position (PosID= 45 )
Borrowing money ( 1195532 ) for closing a short position (PosID= 47 )
Borrowing money ( 1406321 ) for closing a short position (PosID= 48 )
Borrowing money ( 1616867 ) for closing a short position (PosID= 50 )
Borrowing money ( 1827683 ) for closing a short position (PosID= 51 )
Borrowing money ( 2036127 ) for closing a short position (PosID= 49 )
Borrowing money ( 2245687 ) for closing a short position (PosID= 52 )
Borrowing money ( 2454062 ) for closing a short position (PosID= 53 )
Borrowing money ( 2659380 ) for closing a short position (PosID= 54 )
Borrowing money ( 2863306 ) for closing a short position (PosID= 55 )
Borrowing money ( 3074458 ) for closing a short position (PosID= 58 )
Borrowing money ( 3285699 ) for closing a short position (PosID= 59 )
Borrowing money ( 2145523 ) for closing a short position (PosID= 60 )
Borrowing money ( 1560841 ) for closing a short position (PosID= 63 )
Borrowing money ( 1768386 ) for closing a short position (PosID= 56 )
Borrowing money ( 855094.3 ) for closing a short position (PosID= 61 )
Borrowing money ( 519904.9 ) for closing a short position (PosID= 64 )
Borrowing money ( 33544.69 ) for closing a short position (PosID= 86 )
Borrowing money ( 157169.7 ) for closing a short position (PosID= 135 )
Borrowing money ( 338805.1 ) for closing a short position (PosID= 139 )
Borrowing money ( 49647.9 ) for closing a short position (PosID= 113 )
Borrowing money ( 175319.6 ) for closing a short position (PosID= 114 )
Borrowing money ( 300383.5 ) for closing a short position (PosID= 115 )
Borrowing money ( 460497.8 ) for closing a short position (PosID= 121 )
Borrowing money ( 618803.3 ) for closing a short position (PosID= 124 )
Borrowing money ( 817074 ) for closing a short position (PosID= 140 )
Borrowing money ( 69388.9 ) for closing a short position (PosID= 189 )
Borrowing money ( 233506 ) for closing a short position (PosID= 199 )
Borrowing money ( 97032.21 ) for closing a short position (PosID= 203 )
Borrowing money ( 7483.347 ) for closing a short position (PosID= 263 )
Borrowing money ( 162103.4 ) for closing a short position (PosID= 264 )
Borrowing money ( 56465.35 ) for closing a short position (PosID= 254 )
Borrowing money ( 122797.9 ) for closing a short position (PosID= 255 )
Borrowing money ( 188872.6 ) for closing a short position (PosID= 256 )
Borrowing money ( 254693.1 ) for closing a short position (PosID= 257 )
Borrowing money ( 410805.2 ) for closing a short position (PosID= 262 )
Borrowing money ( 26586.16 ) for closing a short position (PosID= 291 )
Borrowing money ( 202550.2 ) for closing a short position (PosID= 292 )
Borrowing money ( 379396.2 ) for closing a short position (PosID= 296 )
Borrowing money ( 77852.57 ) for closing a short position (PosID= 285 )
Borrowing money ( 256344.5 ) for closing a short position (PosID= 295 )
Borrowing money ( 113647 ) for closing a short position (PosID= 395 )
Borrowing money ( 16832.94 ) for closing a short position (PosID= 510 )
Borrowing money ( 213228.5 ) for closing a short position (PosID= 511 )
Borrowing money ( 409178.4 ) for closing a short position (PosID= 512 )
Borrowing money ( 316599 ) for closing a short position (PosID= 518 )
Borrowing money ( 28516.6 ) for closing a short position (PosID= 748 )
Borrowing money ( 16981.18 ) for closing a short position (PosID= 916 )
Borrowing money ( 32924.29 ) for closing a short position (PosID= 925 )
Borrowing money ( 51473.22 ) for closing a short position (PosID= 909 )
Borrowing money ( 70002.19 ) for closing a short position (PosID= 915 )
Borrowing money ( 87077.36 ) for closing a short position (PosID= 926 )
Borrowing money ( 104218.9 ) for closing a short position (PosID= 929 )
Borrowing money ( 99707.51 ) for closing a short position (PosID= 905 )
Borrowing money ( 242063.5 ) for closing a short position (PosID= 906 )
Borrowing money ( 7650.458 ) for closing a short position (PosID= 940 )
Borrowing money ( 92957.94 ) for closing a short position (PosID= 941 )
Borrowing money ( 108534.9 ) for closing a short position (PosID= 943 )
Borrowing money ( 225902.7 ) for closing a short position (PosID= 944 )
Borrowing money ( 76220.84 ) for closing a short position (PosID= 949 )
Borrowing money ( 193149.1 ) for closing a short position (PosID= 945 )
Borrowing money ( 187565.3 ) for closing a short position (PosID= 936 )
Borrowing money ( 271512.8 ) for closing a short position (PosID= 939 )
Borrowing money ( 152650.1 ) for closing a short position (PosID= 950 )
Borrowing money ( 57761.68 ) for closing a short position (PosID= 951 )
Borrowing money ( 115355.7 ) for closing a short position (PosID= 972 )
Borrowing money ( 116630.8 ) for closing a short position (PosID= 971 )
Borrowing money ( 242955.6 ) for closing a short position (PosID= 973 )
Borrowing money ( 370505.2 ) for closing a short position (PosID= 974 )
Borrowing money ( 496818 ) for closing a short position (PosID= 975 )
Borrowing money ( 623062.4 ) for closing a short position (PosID= 976 )
Borrowing money ( 749297.4 ) for closing a short position (PosID= 977 )
Borrowing money ( 592160.2 ) for closing a short position (PosID= 983 )
Borrowing money ( 490849.7 ) for closing a short position (PosID= 985 )
Borrowing money ( 410635.7 ) for closing a short position (PosID= 986 )
Borrowing money ( 389908.1 ) for closing a short position (PosID= 992 )
Borrowing money ( 373258.7 ) for closing a short position (PosID= 993 )
Borrowing money ( 359419 ) for closing a short position (PosID= 994 )
Borrowing money ( 73021.92 ) for closing a short position (PosID= 1006 )
Borrowing money ( 201558.1 ) for closing a short position (PosID= 1007 )
Borrowing money ( 52977.16 ) for closing a short position (PosID= 964 )
Borrowing money ( 153905.3 ) for closing a short position (PosID= 965 )
Borrowing money ( 254665 ) for closing a short position (PosID= 967 )
Borrowing money ( 355375.4 ) for closing a short position (PosID= 968 )
Borrowing money ( 456004.5 ) for closing a short position (PosID= 969 )
Borrowing money ( 448590.6 ) for closing a short position (PosID= 997 )
Borrowing money ( 442678.9 ) for closing a short position (PosID= 998 )
Borrowing money ( 438233 ) for closing a short position (PosID= 999 )
Borrowing money ( 433790.4 ) for closing a short position (PosID= 1000 )
Borrowing money ( 430829.9 ) for closing a short position (PosID= 1001 )
Borrowing money ( 61683.75 ) for closing a short position (PosID= 1008 )
Borrowing money ( 44925.8 ) for closing a short position (PosID= 1046 )
Borrowing money ( 93623.5 ) for closing a short position (PosID= 1048 )
Borrowing money ( 140861.9 ) for closing a short position (PosID= 1039 )
Borrowing money ( 188140 ) for closing a short position (PosID= 1041 )
Borrowing money ( 233847.8 ) for closing a short position (PosID= 1042 )
Borrowing money ( 281114.3 ) for closing a short position (PosID= 1045 )
Borrowing money ( 328368.2 ) for closing a short position (PosID= 1050 )
Borrowing money ( 374051.7 ) for closing a short position (PosID= 1056 )
Borrowing money ( 419723.2 ) for closing a short position (PosID= 1058 )
Borrowing money ( 545236.5 ) for closing a short position (PosID= 1063 )
Borrowing money ( 670721.5 ) for closing a short position (PosID= 1065 )
Borrowing money ( 716479.3 ) for closing a short position (PosID= 1040 )
Borrowing money ( 762256.9 ) for closing a short position (PosID= 1049 )
Borrowing money ( 806579.5 ) for closing a short position (PosID= 1043 )
Borrowing money ( 850830.3 ) for closing a short position (PosID= 1044 )
Borrowing money ( 896661.4 ) for closing a short position (PosID= 1047 )
Borrowing money ( 940999.3 ) for closing a short position (PosID= 1051 )
Borrowing money ( 985311.1 ) for closing a short position (PosID= 1052 )
Borrowing money ( 1028155 ) for closing a short position (PosID= 1053 )
Borrowing money ( 1072447 ) for closing a short position (PosID= 1054 )
Borrowing money ( 1113672 ) for closing a short position (PosID= 1055 )
Borrowing money ( 1157902 ) for closing a short position (PosID= 1057 )
Borrowing money ( 1200579 ) for closing a short position (PosID= 1059 )
Borrowing money ( 690349.4 ) for closing a short position (PosID= 1067 )
Borrowing money ( 811045.2 ) for closing a short position (PosID= 1064 )
Borrowing money ( 403251.3 ) for closing a short position (PosID= 1068 )
Borrowing money ( 76683.59 ) for closing a short position (PosID= 1069 )
Borrowing money ( 12609.42 ) for closing a short position (PosID= 1224 )
Borrowing money ( 106712.6 ) for closing a short position (PosID= 1346 )
Borrowing money ( 217942 ) for closing a short position (PosID= 1347 )
Borrowing money ( 357595.2 ) for closing a short position (PosID= 1348 )
Borrowing money ( 497055.1 ) for closing a short position (PosID= 1349 )
Borrowing money ( 635289.3 ) for closing a short position (PosID= 1350 )
Borrowing money ( 371206.2 ) for closing a short position (PosID= 1353 )
Borrowing money ( 506824.1 ) for closing a short position (PosID= 1351 )
Borrowing money ( 176311.9 ) for closing a short position (PosID= 1352 )
Borrowing money ( 12338.01 ) for closing a short position (PosID= 1402 )
Borrowing money ( 43229.54 ) for closing a short position (PosID= 1405 )
Borrowing money ( 86409.11 ) for closing a short position (PosID= 1410 )
Borrowing money ( 129785.8 ) for closing a short position (PosID= 1411 )
Borrowing money ( 115734.7 ) for closing a short position (PosID= 3 )
Borrowing money ( 113280.9 ) for closing a short position (PosID= 12 )
Borrowing money ( 80144.03 ) for closing a short position (PosID= 14 )
Borrowing money ( 77550.41 ) for closing a short position (PosID= 18 )
Borrowing money ( 59083.68 ) for closing a short position (PosID= 15 )
Borrowing money ( 49838.19 ) for closing a short position (PosID= 16 )
Borrowing money ( 372424.4 ) for closing a short position (PosID= 21 )
Borrowing money ( 930541.5 ) for closing a short position (PosID= 19 )
Borrowing money ( 1477783 ) for closing a short position (PosID= 22 )
Borrowing money ( 2026193 ) for closing a short position (PosID= 24 )
Borrowing money ( 2573621 ) for closing a short position (PosID= 25 )
Borrowing money ( 3123596 ) for closing a short position (PosID= 27 )
Borrowing money ( 3669219 ) for closing a short position (PosID= 23 )
Borrowing money ( 4213502 ) for closing a short position (PosID= 26 )
Borrowing money ( 4738673 ) for closing a short position (PosID= 28 )
Borrowing money ( 5259184 ) for closing a short position (PosID= 29 )
Borrowing money ( 5783394 ) for closing a short position (PosID= 31 )
Borrowing money ( 6302539 ) for closing a short position (PosID= 32 )
Borrowing money ( 6814299 ) for closing a short position (PosID= 30 )
Borrowing money ( 7331015 ) for closing a short position (PosID= 33 )
Borrowing money ( 7842603 ) for closing a short position (PosID= 34 )
Borrowing money ( 8326974 ) for closing a short position (PosID= 35 )
Borrowing money ( 8810026 ) for closing a short position (PosID= 36 )
Borrowing money ( 9295957 ) for closing a short position (PosID= 39 )
Borrowing money ( 9780649 ) for closing a short position (PosID= 40 )
Borrowing money ( 3506035 ) for closing a short position (PosID= 41 )
Borrowing money ( 2721633 ) for closing a short position (PosID= 44 )
Borrowing money ( 3187515 ) for closing a short position (PosID= 37 )
Borrowing money ( 49786.9 ) for closing a short position (PosID= 42 )
Borrowing money ( 252276 ) for closing a short position (PosID= 38 )
Borrowing money ( 482397.7 ) for closing a short position (PosID= 51 )
Borrowing money ( 1016949 ) for closing a short position (PosID= 49 )
Borrowing money ( 1552956 ) for closing a short position (PosID= 52 )
Borrowing money ( 2083629 ) for closing a short position (PosID= 53 )
Borrowing money ( 2621007 ) for closing a short position (PosID= 54 )
Borrowing money ( 3152884 ) for closing a short position (PosID= 48 )
Borrowing money ( 3669618 ) for closing a short position (PosID= 55 )
Borrowing money ( 4196887 ) for closing a short position (PosID= 50 )
Borrowing money ( 4700598 ) for closing a short position (PosID= 56 )
Borrowing money ( 629184.6 ) for closing a short position (PosID= 62 )
Borrowing money ( 297007.6 ) for closing a short position (PosID= 95 )
Borrowing money ( 693274.5 ) for closing a short position (PosID= 96 )
Borrowing money ( 1120874 ) for closing a short position (PosID= 97 )
Borrowing money ( 682543.2 ) for closing a short position (PosID= 104 )
Borrowing money ( 464373.5 ) for closing a short position (PosID= 105 )
Borrowing money ( 355102.4 ) for closing a short position (PosID= 106 )
Borrowing money ( 812237 ) for closing a short position (PosID= 86 )
Borrowing money ( 1264282 ) for closing a short position (PosID= 87 )
Borrowing money ( 1718932 ) for closing a short position (PosID= 88 )
Borrowing money ( 2177371 ) for closing a short position (PosID= 89 )
Borrowing money ( 2652558 ) for closing a short position (PosID= 91 )
Borrowing money ( 3121279 ) for closing a short position (PosID= 92 )
Borrowing money ( 3550131 ) for closing a short position (PosID= 93 )
Borrowing money ( 3977638 ) for closing a short position (PosID= 94 )
Borrowing money ( 4459108 ) for closing a short position (PosID= 98 )
Borrowing money ( 2708211 ) for closing a short position (PosID= 102 )
Borrowing money ( 1832889 ) for closing a short position (PosID= 103 )
Borrowing money ( 2232981 ) for closing a short position (PosID= 77 )
Borrowing money ( 2689937 ) for closing a short position (PosID= 79 )
Borrowing money ( 3135856 ) for closing a short position (PosID= 84 )
Borrowing money ( 3614420 ) for closing a short position (PosID= 85 )
Borrowing money ( 35631.59 ) for closing a short position (PosID= 71 )
Borrowing money ( 348268.4 ) for closing a short position (PosID= 72 )
Borrowing money ( 656086.2 ) for closing a short position (PosID= 73 )
Borrowing money ( 951685 ) for closing a short position (PosID= 74 )
Borrowing money ( 1434852 ) for closing a short position (PosID= 80 )
Borrowing money ( 1905480 ) for closing a short position (PosID= 83 )
Borrowing money ( 2496033 ) for closing a short position (PosID= 99 )
Borrowing money ( 45823.11 ) for closing a short position (PosID= 148 )
Borrowing money ( 314861.3 ) for closing a short position (PosID= 149 )
Borrowing money ( 592482.9 ) for closing a short position (PosID= 146 )
Borrowing money ( 877658.5 ) for closing a short position (PosID= 153 )
Borrowing money ( 1160194 ) for closing a short position (PosID= 154 )
Borrowing money ( 1443894 ) for closing a short position (PosID= 145 )
Borrowing money ( 1740727 ) for closing a short position (PosID= 155 )
Borrowing money ( 27270.81 ) for closing a short position (PosID= 156 )
Borrowing money ( 107948.4 ) for closing a short position (PosID= 164 )
Borrowing money ( 468338.8 ) for closing a short position (PosID= 163 )
Borrowing money ( 192414.3 ) for closing a short position (PosID= 162 )
Borrowing money ( 511608.5 ) for closing a short position (PosID= 165 )
Borrowing money ( 231313.5 ) for closing a short position (PosID= 172 )
Borrowing money ( 211984.7 ) for closing a short position (PosID= 178 )
Borrowing money ( 173012.4 ) for closing a short position (PosID= 177 )
Borrowing money ( 163295.5 ) for closing a short position (PosID= 179 )
Borrowing money ( 400837.6 ) for closing a short position (PosID= 171 )
Borrowing money ( 277281.5 ) for closing a short position (PosID= 185 )
Borrowing money ( 570114.8 ) for closing a short position (PosID= 186 )
Borrowing money ( 859799.4 ) for closing a short position (PosID= 187 )
Borrowing money ( 1154486 ) for closing a short position (PosID= 189 )
Borrowing money ( 1449059 ) for closing a short position (PosID= 190 )
Borrowing money ( 1369033 ) for closing a short position (PosID= 195 )
Borrowing money ( 1403565 ) for closing a short position (PosID= 180 )
Borrowing money ( 1438060 ) for closing a short position (PosID= 181 )
Borrowing money ( 1473743 ) for closing a short position (PosID= 182 )
Borrowing money ( 1509288 ) for closing a short position (PosID= 183 )
Borrowing money ( 1808278 ) for closing a short position (PosID= 188 )
Borrowing money ( 528065.2 ) for closing a short position (PosID= 191 )
Borrowing money ( 161709.5 ) for closing a short position (PosID= 218 )
Borrowing money ( 223868.1 ) for closing a short position (PosID= 204 )
Borrowing money ( 527411.1 ) for closing a short position (PosID= 205 )
Borrowing money ( 841109.8 ) for closing a short position (PosID= 214 )
Borrowing money ( 1153700 ) for closing a short position (PosID= 215 )
Borrowing money ( 1467319 ) for closing a short position (PosID= 216 )
Borrowing money ( 1781576 ) for closing a short position (PosID= 220 )
Borrowing money ( 531817.3 ) for closing a short position (PosID= 222 )
Borrowing money ( 528212.2 ) for closing a short position (PosID= 228 )
Borrowing money ( 527006.4 ) for closing a short position (PosID= 229 )
Borrowing money ( 839901.1 ) for closing a short position (PosID= 206 )
Borrowing money ( 1153066 ) for closing a short position (PosID= 209 )
Borrowing money ( 1475537 ) for closing a short position (PosID= 219 )
Borrowing money ( 899686.5 ) for closing a short position (PosID= 231 )
Borrowing money ( 747807 ) for closing a short position (PosID= 232 )
Borrowing money ( 671708.7 ) for closing a short position (PosID= 233 )
Borrowing money ( 190965.2 ) for closing a short position (PosID= 235 )
Borrowing money ( 23546.79 ) for closing a short position (PosID= 237 )
Borrowing money ( 73212.75 ) for closing a short position (PosID= 288 )
Borrowing money ( 80566.05 ) for closing a short position (PosID= 302 )
Borrowing money ( 164445.6 ) for closing a short position (PosID= 298 )
Borrowing money ( 388083.9 ) for closing a short position (PosID= 299 )
Borrowing money ( 617978.6 ) for closing a short position (PosID= 301 )
Borrowing money ( 277039.4 ) for closing a short position (PosID= 304 )
Borrowing money ( 106718.4 ) for closing a short position (PosID= 305 )
Borrowing money ( 154527.6 ) for closing a short position (PosID= 319 )
Borrowing money ( 387363.7 ) for closing a short position (PosID= 320 )
Borrowing money ( 624984.9 ) for closing a short position (PosID= 321 )
Borrowing money ( 322174.5 ) for closing a short position (PosID= 407 )
Borrowing money ( 641956.8 ) for closing a short position (PosID= 408 )
Borrowing money ( 958567.5 ) for closing a short position (PosID= 409 )
Borrowing money ( 950342.8 ) for closing a short position (PosID= 415 )
Borrowing money ( 70131.06 ) for closing a short position (PosID= 469 )
Borrowing money ( 64895.29 ) for closing a short position (PosID= 476 )
Borrowing money ( 63784.03 ) for closing a short position (PosID= 478 )
Borrowing money ( 15961.25 ) for closing a short position (PosID= 473 )
Borrowing money ( 158526.2 ) for closing a short position (PosID= 470 )
Borrowing money ( 151748.9 ) for closing a short position (PosID= 481 )
Borrowing money ( 487332.3 ) for closing a short position (PosID= 483 )
Borrowing money ( 818629.4 ) for closing a short position (PosID= 484 )
Borrowing money ( 1153653 ) for closing a short position (PosID= 485 )
Borrowing money ( 196640.5 ) for closing a short position (PosID= 488 )
Borrowing money ( 16853.14 ) for closing a short position (PosID= 523 )
Borrowing money ( 394209.5 ) for closing a short position (PosID= 531 )
Borrowing money ( 55708.79 ) for closing a short position (PosID= 528 )
Borrowing money ( 256197 ) for closing a short position (PosID= 558 )
Borrowing money ( 142456.7 ) for closing a short position (PosID= 573 )
Borrowing money ( 403093.9 ) for closing a short position (PosID= 575 )
Borrowing money ( 646514.9 ) for closing a short position (PosID= 602 )
Borrowing money ( 887453.9 ) for closing a short position (PosID= 604 )
Borrowing money ( 50729.12 ) for closing a short position (PosID= 577 )
Borrowing money ( 273961.6 ) for closing a short position (PosID= 603 )
Borrowing money ( 65038.84 ) for closing a short position (PosID= 591 )
Borrowing money ( 256126.3 ) for closing a short position (PosID= 592 )
Borrowing money ( 449729.4 ) for closing a short position (PosID= 595 )
Borrowing money ( 639916.1 ) for closing a short position (PosID= 596 )
Borrowing money ( 829103.9 ) for closing a short position (PosID= 599 )
Borrowing money ( 347612.4 ) for closing a short position (PosID= 608 )
Borrowing money ( 301237.3 ) for closing a short position (PosID= 622 )
Borrowing money ( 277531.1 ) for closing a short position (PosID= 623 )
Borrowing money ( 2635.458 ) for closing a short position (PosID= 701 )
Borrowing money ( 68105.86 ) for closing a short position (PosID= 699 )
Borrowing money ( 65848.19 ) for closing a short position (PosID= 720 )
Borrowing money ( 283671.2 ) for closing a short position (PosID= 721 )
Borrowing money ( 499129.8 ) for closing a short position (PosID= 722 )
Borrowing money ( 713486.5 ) for closing a short position (PosID= 723 )
Borrowing money ( 927814.6 ) for closing a short position (PosID= 724 )
Borrowing money ( 1112743 ) for closing a short position (PosID= 725 )
Borrowing money ( 1296510 ) for closing a short position (PosID= 726 )
Borrowing money ( 65478.79 ) for closing a short position (PosID= 731 )
Borrowing money ( 132900.3 ) for closing a short position (PosID= 732 )
Borrowing money ( 55870.17 ) for closing a short position (PosID= 729 )
Borrowing money ( 120776.8 ) for closing a short position (PosID= 734 )
Borrowing money ( 185676.6 ) for closing a short position (PosID= 735 )
Borrowing money ( 113610.1 ) for closing a short position (PosID= 740 )
Borrowing money ( 177644.5 ) for closing a short position (PosID= 736 )
Borrowing money ( 243404.4 ) for closing a short position (PosID= 730 )
Borrowing money ( 208448.4 ) for closing a short position (PosID= 741 )
Borrowing money ( 190312 ) for closing a short position (PosID= 742 )
Borrowing money ( 103021.1 ) for closing a short position (PosID= 760 )
Borrowing money ( 87754.49 ) for closing a short position (PosID= 772 )
Borrowing money ( 194557.8 ) for closing a short position (PosID= 759 )
Borrowing money ( 300060.7 ) for closing a short position (PosID= 761 )
Borrowing money ( 405428.6 ) for closing a short position (PosID= 762 )
Borrowing money ( 510921.4 ) for closing a short position (PosID= 763 )
Borrowing money ( 616357.2 ) for closing a short position (PosID= 764 )
Borrowing money ( 721785 ) for closing a short position (PosID= 765 )
Borrowing money ( 688707.4 ) for closing a short position (PosID= 771 )
Borrowing money ( 680385.1 ) for closing a short position (PosID= 773 )
Borrowing money ( 676240.9 ) for closing a short position (PosID= 774 )
Borrowing money ( 149700.3 ) for closing a short position (PosID= 767 )
Borrowing money ( 83779.12 ) for closing a short position (PosID= 770 )
Borrowing money ( 69173.49 ) for closing a short position (PosID= 758 )
Borrowing money ( 34004.98 ) for closing a short position (PosID= 777 )
Borrowing money ( 158235 ) for closing a short position (PosID= 778 )
Borrowing money ( 273282.5 ) for closing a short position (PosID= 779 )
Borrowing money ( 386949.2 ) for closing a short position (PosID= 780 )
Borrowing money ( 499419 ) for closing a short position (PosID= 781 )
Borrowing money ( 117513.4 ) for closing a short position (PosID= 783 )
Borrowing money ( 172123.2 ) for closing a short position (PosID= 748 )
Borrowing money ( 304188.9 ) for closing a short position (PosID= 752 )
Borrowing money ( 436284.6 ) for closing a short position (PosID= 753 )
Borrowing money ( 568159.7 ) for closing a short position (PosID= 755 )
Borrowing money ( 699970.3 ) for closing a short position (PosID= 756 )
Borrowing money ( 833154.2 ) for closing a short position (PosID= 757 )
Borrowing money ( 68278 ) for closing a short position (PosID= 782 )
Borrowing money ( 113394.2 ) for closing a short position (PosID= 792 )
Borrowing money ( 224225.5 ) for closing a short position (PosID= 793 )
Borrowing money ( 337778.7 ) for closing a short position (PosID= 794 )
Borrowing money ( 445824 ) for closing a short position (PosID= 796 )
Borrowing money ( 555322 ) for closing a short position (PosID= 798 )
Borrowing money ( 663292.3 ) for closing a short position (PosID= 799 )
Borrowing money ( 102906.7 ) for closing a short position (PosID= 806 )
Borrowing money ( 203970.3 ) for closing a short position (PosID= 803 )
Borrowing money ( 306640.8 ) for closing a short position (PosID= 805 )
Borrowing money ( 5536.193 ) for closing a short position (PosID= 804 )
Borrowing money ( 54384.41 ) for closing a short position (PosID= 801 )
Borrowing money ( 40969.82 ) for closing a short position (PosID= 812 )
Borrowing money ( 37619.88 ) for closing a short position (PosID= 814 )
Borrowing money ( 6750.299 ) for closing a short position (PosID= 868 )
Borrowing money ( 1141.999 ) for closing a short position (PosID= 850 )
Borrowing money ( 35129.55 ) for closing a short position (PosID= 869 )
Borrowing money ( 72931.19 ) for closing a short position (PosID= 870 )
Borrowing money ( 109240.2 ) for closing a short position (PosID= 871 )
Borrowing money ( 89966.07 ) for closing a short position (PosID= 913 )
Borrowing money ( 180734.7 ) for closing a short position (PosID= 914 )
Borrowing money ( 271367 ) for closing a short position (PosID= 915 )
Borrowing money ( 381840 ) for closing a short position (PosID= 916 )
Borrowing money ( 492160 ) for closing a short position (PosID= 917 )
Borrowing money ( 601072.9 ) for closing a short position (PosID= 918 )
Borrowing money ( 364454.9 ) for closing a short position (PosID= 921 )
Borrowing money ( 470407.6 ) for closing a short position (PosID= 919 )
Borrowing money ( 5197.122 ) for closing a short position (PosID= 963 )
Borrowing money ( 13313.75 ) for closing a short position (PosID= 964 )
Borrowing money ( 3136.884 ) for closing a short position (PosID= 961 )
Borrowing money ( 5209.765 ) for closing a short position (PosID= 951 )
Borrowing money ( 7273.867 ) for closing a short position (PosID= 954 )
Borrowing money ( 15502.59 ) for closing a short position (PosID= 959 )
Borrowing money ( 23768.87 ) for closing a short position (PosID= 960 )
# weights:  66
initial  value 1292.732696 
iter  10 value 73.304596
iter  20 value 73.282704
iter  30 value 73.270407
iter  40 value 73.268518
iter  50 value 73.263778
iter  60 value 73.263286
iter  70 value 73.262157
final  value 73.262103 
converged
# weights:  66
initial  value 2411.534022 
iter  10 value 72.489666
iter  20 value 72.143955
iter  30 value 70.974580
iter  40 value 67.104353
iter  50 value 65.425178
iter  60 value 64.925818
iter  70 value 64.699259
iter  80 value 64.502597
iter  90 value 64.303211
iter 100 value 63.671490
iter 110 value 63.554385
iter 120 value 63.552009
iter 130 value 63.495445
iter 140 value 62.843702
iter 150 value 61.606186
iter 160 value 61.505603
iter 170 value 61.439700
iter 180 value 61.323537
iter 190 value 61.308112
iter 200 value 61.303756
iter 210 value 61.220591
iter 220 value 60.518885
iter 230 value 59.524053
iter 240 value 59.080936
iter 250 value 59.062206
iter 260 value 59.030972
iter 270 value 58.996877
iter 280 value 58.917277
iter 290 value 58.374834
iter 300 value 58.055720
iter 310 value 57.670638
iter 320 value 57.409878
iter 330 value 57.258829
iter 340 value 56.957341
iter 350 value 56.910082
iter 360 value 56.894531
iter 370 value 56.888018
iter 380 value 56.884676
iter 390 value 56.883751
final  value 56.883722 
converged
# weights:  66
initial  value 2553.111160 
iter  10 value 70.746444
iter  20 value 70.480702
iter  30 value 66.943587
iter  40 value 61.944913
iter  50 value 61.851561
iter  60 value 61.223407
iter  70 value 60.348993
iter  80 value 59.924210
iter  90 value 59.310412
iter 100 value 59.142809
iter 110 value 58.956462
iter 120 value 58.457886
iter 130 value 57.371741
iter 140 value 56.042280
iter 150 value 55.937784
iter 160 value 55.885078
iter 170 value 55.782170
iter 180 value 55.432613
iter 190 value 55.067222
iter 200 value 54.726740
iter 210 value 54.224881
iter 220 value 52.805057
iter 230 value 52.343235
iter 240 value 52.240040
iter 250 value 52.197721
iter 260 value 52.174522
iter 270 value 52.152450
iter 280 value 52.126806
iter 290 value 52.056945
iter 300 value 52.044939
iter 310 value 52.044399
iter 320 value 52.039521
iter 330 value 52.014182
iter 340 value 51.997250
iter 350 value 51.979907
iter 360 value 51.975500
iter 370 value 51.974164
iter 380 value 51.974030
final  value 51.974009 
converged
# weights:  66
initial  value 957.352318 
iter  10 value 68.753785
iter  20 value 68.743721
iter  30 value 68.540648
iter  40 value 66.193764
iter  50 value 65.219803
iter  60 value 64.586161
iter  70 value 62.948217
iter  80 value 60.800769
iter  90 value 60.775235
iter 100 value 60.511353
iter 110 value 60.135813
iter 120 value 59.429023
iter 130 value 58.698529
iter 140 value 57.750870
iter 150 value 57.633542
iter 160 value 57.587252
iter 170 value 57.579804
iter 180 value 57.579209
final  value 57.579183 
converged
# weights:  66
initial  value 296.093719 
iter  10 value 69.164714
iter  20 value 68.514327
iter  30 value 66.392427
iter  40 value 64.045996
iter  50 value 61.720826
iter  60 value 60.011821
iter  70 value 60.004144
iter  80 value 60.001137
iter  90 value 59.999149
final  value 59.998886 
converged
# weights:  66
initial  value 4603.113490 
iter  10 value 70.806996
iter  20 value 70.034356
iter  30 value 68.373665
iter  40 value 65.491468
iter  50 value 65.158200
iter  60 value 65.078178
iter  70 value 65.005041
iter  80 value 64.914930
iter  90 value 64.887914
iter 100 value 64.876897
iter 110 value 64.868419
iter 120 value 64.206673
iter 130 value 63.489907
iter 140 value 62.526338
iter 150 value 61.027188
iter 160 value 59.841488
iter 170 value 59.016463
iter 180 value 58.877804
iter 190 value 58.604672
iter 200 value 58.490856
iter 210 value 58.460292
iter 220 value 58.309277
iter 230 value 57.621743
iter 240 value 56.476240
iter 250 value 55.935330
iter 260 value 55.764613
iter 270 value 55.738803
iter 280 value 55.692372
iter 290 value 55.409352
iter 300 value 54.798641
iter 310 value 54.316777
iter 320 value 54.095646
iter 330 value 53.907663
iter 340 value 53.801464
iter 350 value 53.760357
iter 360 value 53.751331
iter 370 value 53.747600
iter 380 value 53.747123
iter 390 value 53.747038
final  value 53.747016 
converged
# weights:  66
initial  value 435.916786 
iter  10 value 85.428795
iter  20 value 84.348265
iter  30 value 82.234088
iter  40 value 78.200169
iter  50 value 75.291253
iter  60 value 75.000139
iter  70 value 74.703047
iter  80 value 74.593503
iter  90 value 74.102335
iter 100 value 73.532120
iter 110 value 72.974751
iter 120 value 72.420719
iter 130 value 71.385140
iter 140 value 69.750060
iter 150 value 65.412113
iter 160 value 62.895489
iter 170 value 61.671285
iter 180 value 60.930099
iter 190 value 60.686232
iter 200 value 60.511374
iter 210 value 60.466545
iter 220 value 60.433472
iter 230 value 60.418312
final  value 60.417935 
converged
# weights:  66
initial  value 616.394247 
iter  10 value 99.890069
iter  20 value 99.398798
iter  30 value 93.885497
iter  40 value 92.760878
iter  50 value 91.911801
iter  60 value 91.347988
iter  70 value 91.178051
iter  80 value 91.143870
iter  90 value 91.141860
iter 100 value 91.138926
iter 110 value 91.133391
iter 120 value 90.999277
iter 130 value 90.611053
iter 140 value 88.548953
iter 150 value 88.214474
iter 160 value 88.046935
iter 170 value 87.996328
iter 180 value 87.986025
iter 190 value 87.983585
iter 200 value 87.981586
iter 210 value 87.981370
final  value 87.981269 
converged
# weights:  66
initial  value 2626.789526 
iter  10 value 102.506076
iter  20 value 102.428685
iter  30 value 101.993585
iter  40 value 101.564812
iter  50 value 98.618964
iter  60 value 95.559775
iter  70 value 93.889751
iter  80 value 92.754424
iter  90 value 90.191830
iter 100 value 86.144547
iter 110 value 82.375947
iter 120 value 80.857252
iter 130 value 80.475564
iter 140 value 80.364773
iter 150 value 80.216023
iter 160 value 80.017514
iter 170 value 79.670994
iter 180 value 79.302469
iter 190 value 79.125745
iter 200 value 79.077357
iter 210 value 79.055281
iter 220 value 79.053238
final  value 79.053198 
converged
# weights:  66
initial  value 7873.000750 
iter  10 value 100.100452
iter  20 value 99.840418
iter  30 value 99.497932
iter  40 value 98.266847
iter  50 value 96.770215
iter  60 value 96.367485
iter  70 value 96.267090
iter  80 value 96.145670
iter  90 value 96.121171
iter 100 value 96.094146
iter 110 value 96.080303
iter 120 value 95.728904
iter 130 value 95.201586
iter 140 value 94.096120
iter 150 value 93.553950
iter 160 value 93.091414
iter 170 value 93.004923
iter 180 value 92.978740
iter 190 value 92.965924
iter 200 value 92.954009
iter 210 value 92.780209
iter 220 value 92.172891
iter 230 value 89.378884
iter 240 value 85.714000
iter 250 value 84.887030
iter 260 value 84.055235
iter 270 value 83.042161
iter 280 value 81.527905
iter 290 value 80.564306
iter 300 value 80.153707
iter 310 value 79.979748
iter 320 value 79.959438
iter 330 value 79.944539
iter 340 value 79.942367
iter 350 value 79.942065
final  value 79.942057 
converged
# weights:  66
initial  value 6800.283443 
iter  10 value 100.244301
iter  20 value 100.127571
iter  30 value 98.631350
iter  40 value 98.012501
iter  50 value 97.535405
iter  60 value 96.264834
iter  70 value 95.327775
iter  80 value 93.971245
iter  90 value 93.892371
iter 100 value 93.852879
iter 110 value 93.814153
iter 120 value 93.813563
iter 130 value 93.710597
iter 140 value 93.245025
iter 150 value 92.533481
iter 160 value 92.048503
iter 170 value 91.599802
iter 180 value 91.129707
iter 190 value 90.998971
iter 200 value 90.968424
iter 210 value 90.955883
iter 220 value 90.955561
final  value 90.955549 
converged
# weights:  66
initial  value 134.157647 
iter  10 value 97.016101
iter  20 value 96.514567
iter  30 value 93.400029
iter  40 value 89.309021
iter  50 value 88.833900
iter  60 value 88.603412
iter  70 value 88.468626
iter  80 value 88.031492
iter  90 value 87.796689
iter 100 value 87.465063
iter 110 value 85.640903
iter 120 value 80.684394
iter 130 value 79.546100
iter 140 value 78.346356
iter 150 value 78.303031
iter 160 value 78.282933
iter 170 value 78.079303
iter 180 value 75.193707
iter 190 value 71.728966
iter 200 value 70.222894
iter 210 value 69.239081
iter 220 value 69.148090
iter 230 value 68.874544
iter 240 value 68.308265
iter 250 value 66.203587
iter 260 value 64.336709
iter 270 value 63.550901
iter 280 value 63.443432
iter 290 value 63.330832
iter 300 value 63.185932
iter 310 value 62.941830
iter 320 value 61.996858
iter 330 value 60.549744
iter 340 value 58.912464
iter 350 value 58.341290
iter 360 value 58.214700
iter 370 value 57.971531
iter 380 value 57.702792
iter 390 value 57.692719
iter 400 value 57.683614
iter 410 value 57.654922
iter 420 value 57.605215
iter 430 value 57.589503
iter 440 value 57.571745
iter 450 value 57.560155
iter 460 value 57.559918
iter 470 value 57.559620
iter 480 value 57.555534
iter 490 value 57.537398
iter 500 value 57.529016
iter 510 value 57.508593
iter 520 value 57.486256
iter 530 value 57.480401
iter 540 value 57.473899
iter 550 value 57.463536
iter 560 value 57.455018
iter 570 value 57.435947
iter 580 value 57.409252
iter 590 value 57.406399
iter 600 value 57.405503
iter 610 value 57.404966
final  value 57.404930 
converged
# weights:  66
initial  value 588.314268 
iter  10 value 98.098353
iter  20 value 98.097124
iter  30 value 98.049543
iter  40 value 97.309441
iter  50 value 94.549917
iter  60 value 93.057904
iter  70 value 92.429166
iter  80 value 92.222719
iter  90 value 92.217308
iter 100 value 92.170081
iter 110 value 91.457891
iter 120 value 87.727145
iter 130 value 85.605814
iter 140 value 82.625315
iter 150 value 80.883250
iter 160 value 79.771864
iter 170 value 79.505444
iter 180 value 79.351990
iter 190 value 78.728243
iter 200 value 77.752166
iter 210 value 77.465127
iter 220 value 77.404100
iter 230 value 77.344230
iter 240 value 77.277518
iter 250 value 77.221921
iter 260 value 77.214005
iter 270 value 77.210783
iter 280 value 77.209919
iter 290 value 77.209213
iter 290 value 77.209213
iter 290 value 77.209213
final  value 77.209213 
converged
# weights:  66
initial  value 2675.496867 
final  value 95.645423 
converged
# weights:  66
initial  value 498.151556 
iter  10 value 89.173846
iter  20 value 89.166650
iter  30 value 88.431096
iter  40 value 86.586988
iter  50 value 83.752108
iter  60 value 78.911809
iter  70 value 76.965466
iter  80 value 76.729934
iter  90 value 76.665096
iter 100 value 76.653461
iter 110 value 76.637686
iter 120 value 76.409667
iter 130 value 76.144821
iter 140 value 75.442239
iter 150 value 71.640985
iter 160 value 66.486710
iter 170 value 65.589716
iter 180 value 64.041468
iter 190 value 63.607848
iter 200 value 62.313723
iter 210 value 61.530534
iter 220 value 60.894732
iter 230 value 60.467382
iter 240 value 60.197522
iter 250 value 60.077325
iter 260 value 59.316737
iter 270 value 58.996134
iter 280 value 58.753368
iter 290 value 58.342933
iter 300 value 57.242138
iter 310 value 55.281129
iter 320 value 54.993091
iter 330 value 54.934641
iter 340 value 54.915287
iter 350 value 54.893142
iter 360 value 54.890806
iter 370 value 54.875215
iter 380 value 54.844166
iter 390 value 54.832254
iter 400 value 54.804545
iter 410 value 54.744872
iter 420 value 54.623804
iter 430 value 54.573686
iter 440 value 54.527224
iter 450 value 54.501602
iter 460 value 54.472502
iter 470 value 54.467899
iter 480 value 54.463137
iter 490 value 54.444123
iter 500 value 54.417022
iter 510 value 54.406735
iter 520 value 54.359568
iter 530 value 54.324753
iter 540 value 54.323908
iter 540 value 54.323908
final  value 54.323908 
converged
# weights:  66
initial  value 3608.194080 
iter  10 value 79.462524
iter  20 value 78.065352
iter  30 value 75.715125
iter  40 value 74.703919
iter  50 value 72.203916
iter  60 value 69.031499
iter  70 value 65.253702
iter  80 value 62.885749
iter  90 value 60.690143
iter 100 value 60.252359
iter 110 value 59.951445
iter 120 value 59.618971
iter 130 value 59.259628
iter 140 value 59.054676
iter 150 value 58.971731
iter 160 value 58.951843
iter 170 value 58.944763
iter 180 value 58.943157
iter 190 value 58.930248
iter 200 value 58.888040
iter 210 value 58.879039
iter 220 value 58.878007
iter 230 value 58.874633
iter 240 value 58.756453
iter 250 value 58.675993
iter 260 value 58.672531
iter 270 value 58.627484
iter 280 value 58.571971
iter 290 value 58.531722
iter 300 value 58.510437
iter 310 value 58.507298
final  value 58.506542 
converged
# weights:  66
initial  value 8431.078963 
iter  10 value 76.804232
iter  20 value 71.744356
iter  30 value 71.288346
iter  40 value 71.103689
iter  50 value 70.788327
iter  60 value 69.940702
iter  70 value 68.086992
iter  80 value 67.939015
iter  90 value 67.511970
iter 100 value 67.375337
iter 110 value 66.968889
iter 120 value 66.711417
iter 130 value 66.646756
iter 140 value 66.612223
iter 150 value 66.592826
iter 160 value 66.558918
iter 170 value 66.287104
iter 180 value 62.196915
iter 190 value 59.784153
iter 200 value 57.714444
iter 210 value 56.308715
iter 220 value 54.685013
iter 230 value 53.775283
iter 240 value 53.464741
iter 250 value 52.863003
iter 260 value 51.986799
iter 270 value 51.471234
iter 280 value 51.252749
iter 290 value 51.108027
iter 300 value 50.695051
iter 310 value 50.123133
iter 320 value 49.345670
iter 330 value 48.227055
iter 340 value 46.832857
iter 350 value 46.081578
iter 360 value 45.669812
iter 370 value 45.632655
iter 380 value 45.542615
iter 390 value 45.356961
iter 400 value 44.568834
iter 410 value 44.176818
iter 420 value 44.082095
iter 430 value 44.038064
iter 440 value 44.027686
final  value 44.026433 
converged
# weights:  66
initial  value 884.683957 
iter  10 value 77.263060
iter  20 value 75.931200
iter  30 value 73.819503
iter  40 value 69.637874
iter  50 value 66.852656
iter  60 value 65.027311
iter  70 value 64.838156
iter  80 value 64.696440
iter  90 value 64.230636
iter 100 value 63.890993
iter 110 value 63.776805
iter 120 value 63.727609
iter 130 value 63.600980
iter 140 value 63.583707
iter 140 value 63.583706
iter 140 value 63.583706
final  value 63.583706 
converged
# weights:  66
initial  value 4351.875542 
iter  10 value 77.074409
final  value 77.074284 
converged
# weights:  66
initial  value 2802.769655 
iter  10 value 78.264488
iter  20 value 78.012326
iter  30 value 75.867638
iter  40 value 74.085554
iter  50 value 73.999451
iter  60 value 73.977543
iter  70 value 73.952786
iter  80 value 71.772122
iter  90 value 64.492798
iter 100 value 61.616345
iter 110 value 57.397260
iter 120 value 54.012433
iter 130 value 52.085214
iter 140 value 50.425420
iter 150 value 48.306909
iter 160 value 47.489077
iter 170 value 47.460149
iter 180 value 47.420304
iter 190 value 46.951070
iter 200 value 44.937549
iter 210 value 44.215792
iter 220 value 43.994724
iter 230 value 43.869545
iter 240 value 43.796154
iter 250 value 43.780933
iter 260 value 43.774690
iter 270 value 43.772299
iter 280 value 43.771584
iter 290 value 43.771368
iter 300 value 43.768691
iter 310 value 43.763607
iter 320 value 43.741723
iter 330 value 43.456869
iter 340 value 42.531441
iter 350 value 41.753935
iter 360 value 41.529945
iter 370 value 41.436235
iter 380 value 41.401218
iter 390 value 41.375856
iter 400 value 41.361836
iter 410 value 41.357962
iter 420 value 41.352828
iter 430 value 41.348667
final  value 41.348363 
converged
# weights:  66
initial  value 81.843900 
iter  10 value 78.159740
iter  20 value 78.129347
iter  30 value 74.922014
iter  40 value 74.392872
iter  50 value 74.313681
iter  60 value 73.757224
iter  70 value 72.990916
iter  80 value 72.346056
iter  90 value 72.180818
iter 100 value 72.084476
iter 110 value 72.047589
iter 120 value 71.975924
iter 130 value 71.388624
iter 140 value 71.062775
iter 150 value 70.152832
iter 160 value 69.423216
iter 170 value 67.806113
iter 180 value 67.576122
iter 190 value 67.389155
iter 200 value 66.286548
iter 210 value 61.224520
iter 220 value 58.417597
iter 230 value 56.719004
iter 240 value 55.577502
iter 250 value 55.409458
iter 260 value 55.181934
iter 270 value 55.082152
iter 280 value 54.612161
iter 290 value 54.377782
iter 300 value 54.146523
iter 310 value 54.118946
iter 320 value 54.103464
iter 330 value 54.076987
iter 340 value 54.068287
iter 350 value 54.065726
iter 360 value 54.054218
iter 370 value 54.030164
iter 380 value 53.529512
iter 390 value 53.386570
iter 400 value 51.455076
iter 410 value 48.342479
iter 420 value 47.742202
iter 430 value 47.085405
iter 440 value 46.857190
iter 450 value 46.813777
iter 460 value 46.803982
iter 470 value 46.796630
iter 480 value 46.792242
iter 490 value 46.789992
iter 500 value 46.767539
iter 510 value 46.637126
iter 520 value 44.925953
iter 530 value 42.525070
iter 540 value 41.694883
iter 550 value 41.481907
iter 560 value 41.321185
iter 570 value 41.276155
iter 580 value 41.260020
iter 590 value 41.244146
iter 600 value 41.241883
iter 610 value 41.231346
iter 620 value 41.231065
iter 630 value 41.230575
iter 640 value 41.228538
iter 650 value 41.193002
iter 660 value 41.190104
iter 670 value 41.170155
iter 680 value 41.125883
iter 690 value 41.114294
iter 700 value 41.106330
iter 710 value 41.101212
iter 720 value 41.017043
iter 730 value 40.878249
iter 740 value 40.862074
iter 750 value 40.855680
final  value 40.855680 
stopped after 750 iterations
# weights:  66
initial  value 2571.998993 
iter  10 value 82.023842
iter  20 value 81.584959
iter  30 value 80.748826
iter  40 value 79.644376
iter  50 value 78.197921
iter  60 value 77.812244
iter  70 value 77.531706
iter  80 value 77.334156
iter  90 value 77.308711
iter 100 value 77.299799
iter 110 value 77.294851
iter 120 value 77.247736
iter 130 value 76.941198
iter 140 value 76.701673
iter 150 value 76.153741
iter 160 value 72.472951
iter 170 value 69.751260
iter 180 value 68.907925
iter 190 value 68.293510
iter 200 value 67.764151
iter 210 value 67.505206
iter 220 value 67.444375
iter 230 value 67.114738
iter 240 value 66.683419
iter 250 value 66.469301
iter 260 value 66.461157
iter 270 value 66.453762
iter 280 value 66.436499
iter 290 value 66.429567
iter 300 value 66.393501
iter 310 value 66.391018
iter 320 value 66.389322
iter 330 value 66.388758
final  value 66.388720 
converged
# weights:  66
initial  value 947.418142 
iter  10 value 73.246081
iter  20 value 72.320132
iter  30 value 70.500662
iter  40 value 68.473365
iter  50 value 68.084405
iter  60 value 67.871126
iter  70 value 67.439208
iter  80 value 66.464697
iter  90 value 65.326024
iter 100 value 63.688227
iter 110 value 63.244186
iter 120 value 63.063642
iter 130 value 62.847471
iter 140 value 62.597585
iter 150 value 62.307133
iter 160 value 61.663924
iter 170 value 61.261447
iter 180 value 61.192416
iter 190 value 61.173743
final  value 61.173739 
converged
# weights:  66
initial  value 2512.729722 
iter  10 value 73.064086
iter  20 value 71.420347
iter  30 value 69.613681
iter  40 value 67.849252
iter  50 value 67.191460
iter  60 value 67.102717
iter  70 value 66.847990
iter  80 value 66.469781
iter  90 value 65.253339
iter 100 value 64.424710
iter 110 value 64.261900
iter 120 value 64.049566
iter 130 value 63.395426
iter 140 value 63.168449
iter 150 value 62.866729
iter 160 value 62.302583
iter 170 value 61.118479
iter 180 value 59.249251
iter 190 value 57.349539
iter 200 value 56.717637
iter 210 value 55.716237
iter 220 value 55.081005
iter 230 value 54.564315
iter 240 value 54.442472
iter 250 value 54.325304
iter 260 value 54.271524
iter 270 value 54.071396
iter 280 value 54.056827
iter 290 value 54.044233
iter 300 value 54.025166
iter 310 value 54.002593
final  value 53.998912 
converged
# weights:  66
initial  value 431.935531 
iter  10 value 73.614792
iter  20 value 72.857094
iter  30 value 70.339128
iter  40 value 66.355488
iter  50 value 65.514841
iter  60 value 64.542233
iter  70 value 63.293696
iter  80 value 62.295215
iter  90 value 62.066589
iter 100 value 61.052506
iter 110 value 60.054431
iter 120 value 59.461358
iter 130 value 59.095254
iter 140 value 58.831179
iter 150 value 58.629506
iter 160 value 58.599130
iter 170 value 58.553772
iter 180 value 58.544114
iter 190 value 58.543055
iter 200 value 58.541072
iter 210 value 58.537245
iter 220 value 58.536572
final  value 58.536569 
converged
# weights:  66
initial  value 337.263958 
iter  10 value 72.767471
iter  20 value 71.002933
iter  30 value 68.516466
iter  40 value 68.416599
iter  50 value 67.772063
iter  60 value 66.403195
iter  70 value 64.180835
iter  80 value 63.493646
iter  90 value 63.247361
iter 100 value 63.085424
iter 110 value 63.060908
iter 120 value 63.043653
iter 130 value 63.040739
iter 140 value 63.040552
iter 150 value 63.040541
final  value 63.040535 
converged
# weights:  66
initial  value 85.489071 
iter  10 value 74.477918
iter  20 value 71.736115
iter  30 value 70.074960
iter  40 value 68.530874
iter  50 value 68.272543
iter  60 value 66.842834
iter  70 value 65.196520
iter  80 value 64.193830
iter  90 value 63.668033
iter 100 value 63.568098
iter 110 value 63.345465
iter 120 value 63.318525
iter 130 value 63.317446
iter 130 value 63.317446
iter 130 value 63.317446
final  value 63.317446 
converged
# weights:  66
initial  value 2582.432728 
iter  10 value 77.104618
iter  20 value 77.050005
iter  30 value 77.048967
iter  40 value 76.839353
iter  50 value 76.476594
iter  60 value 75.795585
iter  70 value 74.289745
iter  80 value 72.688483
iter  90 value 69.797651
iter 100 value 68.400533
iter 110 value 68.317927
iter 120 value 68.264985
iter 130 value 68.085572
iter 140 value 67.797544
iter 150 value 66.761898
iter 160 value 65.470962
iter 170 value 65.234871
iter 180 value 64.731669
iter 190 value 64.244129
iter 200 value 63.557258
iter 210 value 62.994761
iter 220 value 62.385145
iter 230 value 61.948913
iter 240 value 61.935476
iter 250 value 61.902613
iter 260 value 61.801523
iter 270 value 61.471162
iter 280 value 60.673433
iter 290 value 60.485253
iter 300 value 60.439254
iter 310 value 60.375310
iter 320 value 60.366425
iter 330 value 60.341109
iter 340 value 60.272450
iter 350 value 60.193918
iter 360 value 60.103466
iter 370 value 60.003468
iter 380 value 59.861746
iter 390 value 59.856774
iter 400 value 59.856552
iter 400 value 59.856552
iter 400 value 59.856552
final  value 59.856552 
converged
# weights:  66
initial  value 951.750277 
iter  10 value 80.765015
iter  20 value 79.600549
iter  30 value 78.000530
iter  40 value 75.880580
iter  50 value 73.760820
iter  60 value 72.740384
iter  70 value 72.476064
iter  80 value 72.439894
iter  90 value 71.952214
iter 100 value 71.540391
iter 110 value 70.715922
iter 120 value 69.854808
iter 130 value 68.957745
iter 140 value 68.213408
iter 150 value 68.152875
iter 160 value 68.144943
iter 170 value 68.143704
final  value 68.143669 
converged
# weights:  66
initial  value 5070.337413 
iter  10 value 101.318489
iter  20 value 101.012630
iter  30 value 100.291292
iter  40 value 99.110139
iter  50 value 97.962778
iter  60 value 97.098254
iter  70 value 94.189166
iter  80 value 93.061960
iter  90 value 90.155379
iter 100 value 86.377034
iter 110 value 85.595222
iter 120 value 83.923474
iter 130 value 82.370472
iter 140 value 81.238183
iter 150 value 78.517505
iter 160 value 77.905972
iter 170 value 77.538209
iter 180 value 77.440544
iter 190 value 77.419371
iter 200 value 77.413564
iter 210 value 77.413516
final  value 77.413496 
converged
# weights:  66
initial  value 154.265995 
iter  10 value 121.637383
iter  20 value 120.859374
iter  30 value 118.581576
iter  40 value 111.577550
iter  50 value 106.735733
iter  60 value 103.432229
iter  70 value 100.903846
iter  80 value 98.927777
iter  90 value 98.870458
iter 100 value 98.682866
iter 110 value 98.517164
iter 120 value 98.164501
iter 130 value 96.806037
iter 140 value 96.496210
iter 150 value 95.944523
iter 160 value 95.318752
iter 170 value 94.611445
iter 180 value 93.005613
iter 190 value 91.322305
iter 200 value 90.438761
iter 210 value 90.277544
iter 220 value 90.098019
iter 230 value 90.024524
iter 240 value 89.709080
iter 250 value 88.690665
iter 260 value 87.839218
iter 270 value 87.675298
iter 280 value 87.609027
iter 290 value 87.553734
iter 300 value 87.432862
iter 310 value 87.188909
iter 320 value 86.886671
iter 330 value 86.845207
iter 340 value 86.143326
iter 350 value 86.001014
iter 360 value 85.987216
iter 370 value 85.979183
iter 380 value 85.925649
iter 390 value 85.872713
final  value 85.869020 
converged
# weights:  66
initial  value 706.353903 
iter  10 value 126.814199
iter  20 value 125.700272
iter  30 value 124.075104
iter  40 value 123.657312
iter  50 value 122.361030
iter  60 value 120.881641
iter  70 value 115.244918
iter  80 value 113.047338
iter  90 value 110.350170
iter 100 value 106.995516
iter 110 value 106.655793
iter 120 value 106.158518
iter 130 value 105.162447
iter 140 value 103.869764
iter 150 value 100.658316
iter 160 value 99.642264
iter 170 value 98.755784
iter 180 value 98.243635
iter 190 value 98.125200
iter 200 value 98.121829
iter 210 value 98.121435
final  value 98.121412 
converged
# weights:  66
initial  value 3335.385212 
iter  10 value 128.171832
iter  20 value 127.544619
iter  30 value 122.969833
iter  40 value 120.013463
iter  50 value 117.507998
iter  60 value 116.808205
iter  70 value 116.634691
iter  80 value 116.356639
iter  90 value 116.190086
iter 100 value 116.154815
iter 110 value 116.001782
iter 120 value 115.538747
iter 130 value 115.240634
iter 140 value 115.005762
iter 150 value 114.492502
iter 160 value 114.015310
iter 170 value 113.255497
iter 180 value 111.133345
iter 190 value 109.505413
iter 200 value 108.047454
iter 210 value 107.491663
iter 220 value 106.614816
iter 230 value 105.083956
iter 240 value 104.586173
iter 250 value 104.527739
iter 260 value 104.524306
iter 270 value 104.523852
iter 270 value 104.523851
iter 270 value 104.523851
final  value 104.523851 
converged
# weights:  66
initial  value 4636.158155 
iter  10 value 133.667400
iter  20 value 133.163641
iter  30 value 128.381043
iter  40 value 127.237205
iter  50 value 124.352065
iter  60 value 123.864205
iter  70 value 123.321044
iter  80 value 122.847610
iter  90 value 121.666655
iter 100 value 119.972821
iter 110 value 117.962589
iter 120 value 116.278598
iter 130 value 114.710167
iter 140 value 112.393584
iter 150 value 109.842472
iter 160 value 107.402873
iter 170 value 106.278201
iter 180 value 105.763972
iter 190 value 105.337044
iter 200 value 105.020523
iter 210 value 104.950300
iter 220 value 104.834671
iter 230 value 104.705340
iter 240 value 104.367690
iter 250 value 104.179087
final  value 104.178340 
converged
# weights:  66
initial  value 843.451900 
iter  10 value 134.506344
iter  20 value 132.978941
iter  30 value 127.393741
iter  40 value 125.449289
iter  50 value 123.609455
iter  60 value 122.946113
iter  70 value 120.359081
iter  80 value 118.535871
iter  90 value 117.198034
iter 100 value 116.152996
iter 110 value 115.342780
iter 120 value 114.325871
iter 130 value 111.810107
iter 140 value 111.186922
iter 150 value 110.923020
iter 160 value 110.590000
iter 170 value 110.147646
iter 180 value 109.431616
iter 190 value 109.060496
iter 200 value 107.645518
iter 210 value 105.255849
iter 220 value 104.033027
iter 230 value 103.710554
iter 240 value 103.050933
iter 250 value 102.882027
iter 260 value 102.819211
iter 270 value 102.812041
iter 280 value 102.796149
iter 290 value 102.785576
final  value 102.785396 
converged
# weights:  66
initial  value 1218.899065 
iter  10 value 141.314236
iter  20 value 140.607630
iter  30 value 139.126194
iter  40 value 135.623060
iter  50 value 133.547590
iter  60 value 126.961276
iter  70 value 119.753044
iter  80 value 117.239789
iter  90 value 114.236863
iter 100 value 112.560255
iter 110 value 111.938137
iter 120 value 111.700052
iter 130 value 111.280351
iter 140 value 110.327506
iter 150 value 108.891181
iter 160 value 108.308862
iter 170 value 108.180357
iter 180 value 108.049353
iter 190 value 107.944064
iter 200 value 107.710314
iter 210 value 107.629268
iter 220 value 107.570662
iter 230 value 107.536142
final  value 107.535763 
converged
# weights:  66
initial  value 4847.591249 
iter  10 value 144.975600
iter  20 value 143.103783
iter  30 value 138.719063
iter  40 value 136.074749
iter  50 value 135.722076
iter  60 value 134.094791
iter  70 value 131.066125
iter  80 value 127.262098
iter  90 value 124.989148
iter 100 value 122.248075
iter 110 value 120.360110
iter 120 value 118.041941
iter 130 value 116.775847
iter 140 value 115.633835
iter 150 value 115.368263
iter 160 value 115.230766
iter 170 value 115.086982
iter 180 value 115.036457
iter 190 value 115.014315
iter 200 value 115.009799
iter 210 value 115.007388
iter 220 value 114.987647
iter 230 value 114.976940
iter 240 value 114.973897
final  value 114.972825 
converged
# weights:  66
initial  value 12632.615064 
iter  10 value 146.355288
iter  20 value 141.740484
iter  30 value 137.754788
iter  40 value 136.430517
iter  50 value 136.070215
iter  60 value 135.755418
iter  70 value 135.558604
iter  80 value 135.542361
iter  90 value 135.536143
iter 100 value 135.532126
iter 110 value 135.529873
iter 120 value 135.478251
iter 130 value 135.451478
final  value 135.451118 
converged
# weights:  66
initial  value 400.632710 
iter  10 value 147.113724
iter  20 value 146.766323
iter  30 value 145.437703
iter  40 value 142.653859
iter  50 value 141.390754
iter  60 value 141.203846
iter  70 value 140.549191
iter  80 value 139.016641
iter  90 value 137.659605
iter 100 value 136.614418
iter 110 value 132.463617
iter 120 value 126.084988
iter 130 value 123.305247
iter 140 value 122.737557
iter 150 value 122.619527
iter 160 value 122.219601
iter 170 value 120.483553
iter 180 value 120.298431
iter 190 value 120.269394
iter 200 value 120.261423
iter 210 value 120.233858
iter 220 value 120.213521
iter 230 value 120.211190
iter 240 value 120.207179
iter 250 value 120.179936
iter 260 value 120.160218
final  value 120.154639 
converged
# weights:  66
initial  value 1348.273967 
iter  10 value 147.545314
iter  20 value 147.062228
iter  30 value 144.998029
iter  40 value 142.330947
iter  50 value 138.420938
iter  60 value 136.979691
iter  70 value 135.461419
iter  80 value 133.797535
iter  90 value 133.202487
iter 100 value 132.755209
iter 110 value 131.936475
iter 120 value 129.729580
iter 130 value 128.631605
iter 140 value 127.148837
iter 150 value 126.296583
iter 160 value 126.187775
iter 170 value 125.760733
iter 180 value 125.525714
iter 190 value 125.269907
iter 200 value 124.819934
iter 210 value 124.786286
iter 220 value 124.752973
iter 230 value 124.637140
iter 240 value 124.557625
iter 250 value 124.459607
iter 260 value 123.727676
iter 270 value 122.638741
iter 280 value 120.392404
iter 290 value 116.512776
iter 300 value 115.452833
iter 310 value 115.226644
iter 320 value 115.115956
iter 330 value 115.015893
iter 340 value 115.012319
iter 350 value 115.012269
iter 350 value 115.012269
final  value 115.012269 
converged
# weights:  66
initial  value 1024.937787 
iter  10 value 149.081992
iter  20 value 147.847792
iter  30 value 147.236905
iter  40 value 142.529508
iter  50 value 136.424193
iter  60 value 130.095365
iter  70 value 127.485213
iter  80 value 125.546507
iter  90 value 125.423395
iter 100 value 125.197961
iter 110 value 124.960686
iter 120 value 124.918220
iter 130 value 124.878513
iter 140 value 124.849771
iter 150 value 124.722775
iter 160 value 124.632075
iter 170 value 124.297581
iter 180 value 123.017303
iter 190 value 122.257223
iter 200 value 122.029138
iter 210 value 121.443090
iter 220 value 119.403497
iter 230 value 116.989555
iter 240 value 114.851877
iter 250 value 114.394296
iter 260 value 114.126413
iter 270 value 114.102941
iter 280 value 114.096091
iter 290 value 114.095857
final  value 114.095851 
converged
# weights:  66
initial  value 683.405427 
iter  10 value 149.002419
iter  20 value 147.523306
iter  30 value 145.509883
iter  40 value 139.646853
iter  50 value 138.870942
iter  60 value 138.389268
iter  70 value 137.567135
iter  80 value 135.863456
iter  90 value 135.159045
iter 100 value 134.766494
iter 110 value 133.399542
iter 120 value 131.559512
iter 130 value 129.755036
iter 140 value 128.469358
iter 150 value 126.581686
iter 160 value 125.348769
iter 170 value 124.946016
iter 180 value 124.375055
iter 190 value 124.027239
iter 200 value 123.946155
iter 210 value 123.800115
iter 220 value 123.779284
iter 230 value 123.775679
iter 240 value 123.764765
iter 250 value 123.750517
iter 260 value 123.744818
final  value 123.744798 
converged
# weights:  66
initial  value 2337.883405 
iter  10 value 150.985824
iter  20 value 150.198742
iter  30 value 144.607715
iter  40 value 143.329812
iter  50 value 142.594628
iter  60 value 142.494533
iter  70 value 142.318322
iter  80 value 141.766396
iter  90 value 141.445674
iter 100 value 141.441498
iter 110 value 141.379372
iter 120 value 141.305443
iter 130 value 141.218538
iter 140 value 140.619301
iter 150 value 139.911640
iter 160 value 139.879735
iter 170 value 139.844601
iter 180 value 138.253942
iter 190 value 137.458324
iter 200 value 136.037787
iter 210 value 135.883630
iter 220 value 135.401905
iter 230 value 134.712773
iter 240 value 134.536232
iter 250 value 134.534592
iter 260 value 134.534077
final  value 134.534061 
converged
# weights:  66
initial  value 1894.574298 
iter  10 value 151.652263
iter  20 value 148.004689
iter  30 value 142.978684
iter  40 value 142.589710
iter  50 value 141.523075
iter  60 value 139.634606
iter  70 value 137.888220
iter  80 value 134.480982
iter  90 value 133.309361
iter 100 value 133.196440
iter 110 value 132.880792
iter 120 value 132.226018
iter 130 value 132.108523
iter 140 value 131.690128
iter 150 value 131.251831
iter 160 value 131.151126
iter 170 value 130.973164
iter 180 value 130.112534
iter 190 value 129.224540
iter 200 value 128.585273
iter 210 value 128.267677
iter 220 value 128.104170
iter 230 value 128.093303
iter 240 value 128.093039
final  value 128.093004 
converged
# weights:  66
initial  value 9045.868436 
iter  10 value 155.375449
iter  20 value 154.132375
iter  30 value 151.121222
iter  40 value 146.572837
iter  50 value 145.052174
iter  60 value 142.293026
iter  70 value 140.313212
iter  80 value 138.693415
iter  90 value 136.768516
iter 100 value 136.084345
iter 110 value 135.312833
iter 120 value 134.163805
iter 130 value 133.873940
iter 140 value 133.728772
iter 150 value 133.616807
iter 160 value 133.603233
iter 170 value 133.563326
iter 180 value 133.478845
iter 190 value 133.407998
iter 200 value 133.359834
final  value 133.357715 
converged
Borrowing money ( 32267.88 ) for closing a short position (PosID= 541 )
Borrowing money ( 181864.8 ) for closing a short position (PosID= 542 )
Borrowing money ( 13951.56 ) for closing a short position (PosID= 529 )
Borrowing money ( 142412.4 ) for closing a short position (PosID= 530 )
Borrowing money ( 141434.7 ) for closing a short position (PosID= 668 )
Borrowing money ( 105396.6 ) for closing a short position (PosID= 650 )
results <- t(as.data.frame(results))
results[, c("NTrades","Ret","RetOverBH","PercProf","MaxDD")]
              NTrades    Ret RetOverBH PercProf     MaxDD
nnetRegr.v213     421  42.71     -8.78    62.47  325977.3
nnetRegr.v175     427 -15.92    -67.40    44.26  286417.3
nnetRegr.v203     689  50.15     -1.33    47.31 2496376.0
nnetRegr.v200     670 -38.58    -90.07    52.39  587003.0
svmRegr.v168     1473 -36.99    -88.47    50.58  570007.6
svmRegr.v204      997 -79.07   -130.56    50.15 1062361.4
nnetRegr.v169     458 -30.23    -81.71    50.00  581950.0
nnetRegr.v167     631  16.32    -35.16    56.74  343796.8
nnetRegr.v179     821 -19.27    -70.76    50.67  389459.5
getWorkflow("nnetRegr.v203", analysisSet)
Workflow Object:
    Workflow ID       ::  nnetRegr.v203 
    Workflow Function ::  tradingWF
         Parameter values:
         learner.pars  -> linout=TRUE maxit=750 size=5 decay=0.1 
         policy.pars  -> bet=0.5 exp.prof=0.05 max.loss=0.05 
         quotes  -> GSPC 
         learner  -> nnet 
         pred.target  -> indicator 
         learn.test.type  -> fixed 
         relearn.step  -> 120 
         policy  -> policy.2 
         b.t  -> 0.01 
         s.t  -> -0.05 
date <- rownames(Tdata.eval)[1]
market <- GSPC[paste(date, "/", sep = "")][1:nrow(Tdata.eval), ]
plot(wfsOut[["nnetRegr.v203"]]$tradeRec, market, 
     theme = "white", name = "SP500 - final test")
Rentability =  50.14928 %

library(PerformanceAnalytics)
equityWF <- as.xts(wfsOut[["nnetRegr.v203"]]$tradeRec@trading$Equity)
rets <- Return.calculate(equityWF)
chart.CumReturns(rets, main="Cumulative returns of the strategy", ylab="returns")

yearlyReturn(equityWF)
           yearly.returns
2006-12-29    0.019189199
2007-12-31    0.762549753
2008-12-31    0.394582701
2009-12-31    0.024126853
2010-12-31   -0.066526901
2011-12-30    0.315754122
2012-12-31   -0.414142134
2013-12-31    0.079720378
2014-12-31   -0.318325258
2015-12-31    0.002674687
2016-01-08    0.102076328
plot(100*yearlyReturn(equityWF), 
     main='Yearly percentage returns of the trading system')

table.DownsideRisk(rets)
LS0tCnRpdGxlOiAiUHJlZGljdGluZyBTdG9jayBNYXJrZXQgUmV0dXJucyIKb3V0cHV0OiBodG1sX25vdGVib29rCi0tLQojIyMjIFN0b2NrIE1hcmtldDoKClRoZSBzdG9jayBtYXJrZXQgcmVmZXJzIHRvIHRoZSBjb2xsZWN0aW9uIG9mIG1hcmtldHMgYW5kIGV4Y2hhbmdlcyB3aGVyZSByZWd1bGFyIGFjdGl2aXRpZXMgb2YgYnV5aW5nLCBzZWxsaW5nLCBhbmQgaXNzdWFuY2Ugb2Ygc2hhcmVzIG9mIHB1YmxpY2x5LWhlbGQgY29tcGFuaWVzIHRha2UgcGxhY2UuCi1Tb3VjZTogSW52ZXN0b3BlZGlhXAohW05ZU0VdKG55c2UuanBlZykgXAoKIyMjIyMgUyZQIDUwMDoKVGhlIFN0YW5kYXJkIGFuZCBQb29yJ3MgNTAwLCBvciBzaW1wbHkgdGhlIFMmUCA1MDAsIGlzIGEgZnJlZS1mbG9hdCwgd2VpZ2h0ZWQgbWVhc3VyZW1lbnQgc3RvY2sgbWFya2V0IGluZGV4IG9mIHRoZSA1MDAgbGFyZ2UgY29tcGFuaWVzIGxpc3RlZCBvbiBzdG9jayBleGNoYW5nZXMgaW4gdGhlIFVuaXRlZCBTdGF0ZXMuIEl0IGlzIG9uZSBvZiB0aGUgbW9zdCBjb21tb25seSBmb2xsb3dlZCBlcXVpdHkgaW5kaWNlcy4KCiMjIyMgUmVhZGluZyBpbiB0aGUgRGF0YQpgYGB7cn0KI05vdGUgR1NQQyBpcyB0aGUgdGlja2VyIHN5bWJvbCBmb3IgUyZQNTAwCmRhdGEoR1NQQywgcGFja2FnZT0iRE13UjIiKQpgYGAKCiMjIyMjIEFib3V0IHRoZSBEYXRhCldlIGhhdmUgdGhlIGRhdGEgZm9yIFMmUCA1MDAgZGFpbHkgc3RvY2sgcHJpY2VzIGZyb20gSmFudWFyeSAxOTcwIGFsbCB0aGUgd2F5IHRvIEphbnVhcnkgMjAxNi4gXAoKV2UgaGF2ZSB0aGUgZm9sbG93aW5nIGNvbHVtbnMgaW4gdGhlIGRhdGFzZXQ6XAoqIERhdGUgb2YgdGhlIHN0b2NrIGV4Y2hhbmdlIHNlc3Npb25cCiogT3BlbiBQcmljZSBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBzZXNzaW9uXAoqIEhpZ2hlc3QgcHJpY2UgZHVyaW5nIHRoZSBzZXNzaW9uXAoqIExvd2VzdCBwcmljZVwKKiBDbG9zaW5nIFByaWNlIG9mIHRoZSBTZXNzaW9uXAoqIFZvbHVtZSBvZiB0cmFuc2FjdGlvbnNcCiogQWRqdXN0ZWQgY2xvc2UgcHJpY2UgXAoKKk5vdGU6IEFkanVzdGVkIGNsb3NlIHByaWNlIGlzIHRoZSBjbG9zaW5nIHByaWNlIGFkanVzdGVkIGZvciBzdG9jayBzcGxpdHMsIGRpdmlkZW50cy9kaXN0cmlidXRpb25zIGFuZCByaWdodHMgb2ZmZXJpbmdzKiAKCmBgYHtyfQpoZWFkKEdTUEMpCmBgYApgYGB7cn0KdGFpbChHU1BDKQpgYGAKCiMjIyMjIFdoYXQgdG8gUHJlZGljdD8KClNldHRpbmcgRnVuY3Rpb24gZm9yIG91ciBJbmRpY2F0b3IgVGkKYGBge3J9ClQuaW5kIDwtIGZ1bmN0aW9uKHF1b3RlcywgdGd0Lm1hcmdpbiA9IDAuMDI1LCBuLmRheXMgPSAxMCkgewogIHYgPC0gYXBwbHkoSExDKHF1b3RlcyksIDEsIG1lYW4pCiAgdlsxXSA8LSBDbChxdW90ZXMpWzFdCiAgCiAgciA8LSBtYXRyaXgoTkEsIG5jb2wgPSBuLmRheXMsIG5yb3cgPSBOUk9XKHF1b3RlcykpCiAgZm9yICh4IGluIDE6bi5kYXlzKSByWywgeF0gPC0gTmV4dChEZWx0KHYsIGsgPSB4KSwgeCkKICAKICB4IDwtIGFwcGx5KHIsIDEsIGZ1bmN0aW9uKHgpIHN1bSh4W3ggPiB0Z3QubWFyZ2luIHwgeCA8IC10Z3QubWFyZ2luXSkpCiAgCiAgaWYgKGlzLnh0cyhxdW90ZXMpKSB4dHMoeCwgdGltZShxdW90ZXMpKSBlbHNlIHh9CmBgYAoKIyMjIyMgQ2FuZGxlIENoYXJ0IGZvciB0aGUgbGFzdCAzIE1vbnRocyBvZiB0aGUgcHJvdmlkZWQgZGF0YQpgYGB7cn0KbGlicmFyeShxdWFudG1vZCkKY2FuZGxlQ2hhcnQobGFzdChHU1BDLCczIG1vbnRocycpLHRoZW1lPSd3aGl0ZScsIFRBPU5VTEwpCmF2Z1ByaWNlIDwtIGZ1bmN0aW9uKHApIGFwcGx5KEhMQyhwKSwxLG1lYW4pCmFkZEF2Z1ByaWNlIDwtIG5ld1RBKEZVTj1hdmdQcmljZSxjb2w9MSxsZWdlbmQ9J0F2Z1ByaWNlJykKYWRkVC5pbmQgPC0gbmV3VEEoRlVOPVQuaW5kLGNvbD0ncmVkJywgbGVnZW5kPSd0Z3RSZXQnKQphZGRBdmdQcmljZShvbj0xKSAKYWRkVC5pbmQoKQpgYGAKU2V0dGluZyBmdW5jdGlvbnMgZm9yIFRlY2huaWNhbCBJbmRpY2F0b3JzCmBgYHtyfQpsaWJyYXJ5KFRUUikKIG15QVRSIDwtIGZ1bmN0aW9uKHgpIEFUUihITEMoeCkpWywnYXRyJ10KIG15U01JIDwtIGZ1bmN0aW9uKHgpIFNNSShITEMoeCkpWywgIlNNSSJdCiBteUFEWCA8LSBmdW5jdGlvbih4KSBBRFgoSExDKHgpKVssJ0FEWCddCiBteUFyb29uIDwtIGZ1bmN0aW9uKHgpIGFyb29uKGNiaW5kKEhpKHgpLExvKHgpKSkkb3NjaWxsYXRvcgogbXlCQiA8LSBmdW5jdGlvbih4KSBCQmFuZHMoSExDKHgpKVssICJwY3RCIl0KIG15Q2hhaWtpblZvbCA8LSBmdW5jdGlvbih4KSBEZWx0KGNoYWlraW5Wb2xhdGlsaXR5KGNiaW5kKEhpKHgpLExvKHgpKSkpWywgMV0KIG15Q0xWIDwtIGZ1bmN0aW9uKHgpIEVNQShDTFYoSExDKHgpKSlbLCAxXQogbXlFTVYgPC0gZnVuY3Rpb24oeCkgRU1WKGNiaW5kKEhpKHgpLExvKHgpKSxWbyh4KSlbLDJdCiBteU1BQ0QgPC0gZnVuY3Rpb24oeCkgTUFDRChDbCh4KSlbLDJdCiBteU1GSSA8LSBmdW5jdGlvbih4KSBNRkkoSExDKHgpLCBWbyh4KSkKIG15U0FSIDwtIGZ1bmN0aW9uKHgpIFNBUihjYmluZChIaSh4KSxDbCh4KSkpIFssMV0KIG15Vm9sYXQgPC0gZnVuY3Rpb24oeCkgdm9sYXRpbGl0eShPSExDKHgpLGNhbGM9Imdhcm1hbiIpWywxXQpgYGAKUmFuZG9tIEZvcmVzdCBNb2RlbCBCdWlsZGluZwoKCmBgYHtyfQpsaWJyYXJ5KHJhbmRvbUZvcmVzdCkKbGlicmFyeShxdWFudG1vZCkKZGF0YS5tb2RlbCA8LSBzcGVjaWZ5TW9kZWwoVC5pbmQoR1NQQykgfiBEZWx0KENsKEdTUEMpLGs9MToxMCkgKyBteUFUUihHU1BDKSArIG15U01JKEdTUEMpICsgbXlBRFgoR1NQQykgKyBteUFyb29uKEdTUEMpICsKbXlCQihHU1BDKSArIG15Q2hhaWtpblZvbChHU1BDKSArIG15Q0xWKEdTUEMpICsKQ01PKENsKEdTUEMpKSArIEVNQShEZWx0KENsKEdTUEMpKSkgKyBteUVNVihHU1BDKSArCm15Vm9sYXQoR1NQQykgKyBteU1BQ0QoR1NQQykgKyBteU1GSShHU1BDKSArIFJTSShDbChHU1BDKSkgKwpteVNBUihHU1BDKSArIHJ1bk1lYW4oQ2woR1NQQykpICsgcnVuU0QoQ2woR1NQQykpKQoKc2V0LnNlZWQoMTIzNCkKCnJmIDwtIGJ1aWxkTW9kZWwoZGF0YS5tb2RlbCxtZXRob2Q9J3JhbmRvbUZvcmVzdCcsIHRyYWluaW5nLnBlcj1jKCIxOTk1LTAxLTAxIiwiMjAwNS0xMi0zMCIpLApudHJlZT0xMDAwLCBpbXBvcnRhbmNlPVRSVUUpCmBgYApBbHRlcm5hdGl2ZSBtb2RlbCBidWlsZGluZyBleGFtcGxlIFVzaW5nIG1vZGVsRGF0YSgpIGZ1bmN0aW9uCmBgYHtyfQpleC5tb2RlbCA8LSBzcGVjaWZ5TW9kZWwoVC5pbmQoSUJNKSB+IERlbHQoQ2woSUJNKSwgayA9IDE6MykpCmRhdGEgPC0gbW9kZWxEYXRhKGV4Lm1vZGVsLCBkYXRhLndpbmRvdyA9IGMoIjIwMDktMDEtMDEiLCAgIjIwMDktMDgtMTAiKSkKYGBgCkNoZWNraW5nIEltcG9ydGFuY2Ugb2YgVmFyaWFibGVzCmBgYHtyfQp2YXJJbXBQbG90KHJmQGZpdHRlZC5tb2RlbCwgdHlwZSA9IDEpCmBgYApVc2luZyBWYWx1ZSBvZiAzMCBmb3IgaW1wb3J0YW5jZSB0aHJlc2hvbGQgdG8gc2VsZWN0IG1vZGVsIGZlYXR1cmVzCmBgYHtyfQppbXAgPC0gaW1wb3J0YW5jZShyZkBmaXR0ZWQubW9kZWwsIHR5cGUgPSAxKQpyb3duYW1lcyhpbXApW3doaWNoKGltcCA+IDMwKV0KYGBgCgpIZWF0bWFwIG9mIENvcnJlbGF0aW9ucwpgYGB7cn0KI0NyZWF0aW5nIGNvcnJlbGF0aW9uIG1hdHJpeApjb3JtYXQgPC0gcm91bmQoY29yKFRkYXRhLnRyYWluKSwyKQpoZWFkKGNvcm1hdCkKCiNHZXQgdXBwZXIgdHJpYW5nbGUgb2YgdGhlIGNvcnJlbGF0aW9uIG1hdHJpeCBhbmQgYXBwbHlpbmcgdG8gY29ybWF0CiAgZ2V0X3VwcGVyX3RyaSA8LSBmdW5jdGlvbihjb3JtYXQpewogICAgY29ybWF0W2xvd2VyLnRyaShjb3JtYXQpXTwtIE5BCiAgICByZXR1cm4oY29ybWF0KQogIH0KdXBwZXJfdHJpIDwtIGdldF91cHBlcl90cmkoY29ybWF0KQoKI01lbHRpbmcgdGhlIGNvcnJlbGF0aW9uIG1hdHJpeApsaWJyYXJ5KHJlc2hhcGUyKQptZWx0ZWRfY29ybWF0IDwtIG1lbHQodXBwZXJfdHJpLCBuYS5ybSA9IFRSVUUpCm1lbHRlZF9jb3JtYXQKCiNVc2luZyBnZ3Bsb3QgdG8gY3JlYXRlIGhlYXRtYXAgb2YgY29ycmVhbHRpb25zCmxpYnJhcnkoZ2dwbG90MikKZ2doZWF0bWFwIDwtIGdncGxvdChkYXRhID0gbWVsdGVkX2Nvcm1hdCwgYWVzKFZhcjIsIFZhcjEsIGZpbGwgPSB2YWx1ZSkpKwogZ2VvbV90aWxlKGNvbG9yID0gIndoaXRlIikrCiBzY2FsZV9maWxsX2dyYWRpZW50Mihsb3cgPSAiYmx1ZSIsIGhpZ2ggPSAicmVkIiwgbWlkID0gIndoaXRlIiwgCiBtaWRwb2ludCA9IDAsIGxpbWl0ID0gYygtMSwxKSwgc3BhY2UgPSAiTGFiIiwgbmFtZT0iUGVhcnNvblxuQ29ycmVsYXRpb24iKSArCiB0aGVtZV9taW5pbWFsKCkgKyB0aGVtZShheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChhbmdsZSA9IDQ1LCB2anVzdCA9IDEsIAogc2l6ZSA9IDEyLCBoanVzdCA9IDEpKSsgY29vcmRfZml4ZWQoKQpnZ2hlYXRtYXAKYGBgCiMjIyMjIFZhcmlhYmxlcyB3aXRoIEhpZ2hlc3QgQ29ycmVsYXRpb24gd2l0aCBULmluZCAoTm9uZSBhYm92ZSArIG9yIC0gMC43KQotIG15QURYCi0gbXlWb2xhdAotIG15RVZNCi0gcnVuU0QuQ2wKLSBBbGwgb2YgdGhlIGFib3ZlIHNob3VsZCBiZSBpbiBvdXIgbW9kZWwgaW5jbHVkaW5nIHRob3NlIHdpdGggaW1wb3J0YW5jZSA+IDMwCgpGaW5hbCBNb2RlbGluZyBEYXRhc2V0CmBgYHtyfQpkYXRhLm1vZGVsIDwtIHNwZWNpZnlNb2RlbChULmluZChHU1BDKSB+IG15QVRSKEdTUEMpICsgbXlTTUkoR1NQQykgKyAgbXlBRFgoR1NQQykgKyAKICAgICAgICAgICAgICAgICAgICAgICAgICAgbXlBcm9vbihHU1BDKSArIG15RU1WKEdTUEMpICsgbXlWb2xhdChHU1BDKSArIAogICAgICAgICAgICAgICAgICAgICAgICAgICBteU1BQ0QoR1NQQykgKyBteU1GSShHU1BDKSArIG15U0FSKEdTUEMpICsgCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ1bk1lYW4oQ2woR1NQQykpICsgcnVuU0QoQ2woR1NQQykpKQpgYGAKIyMjIyBQcmVkaWN0aW9uIFRhc2tzCgpSZWdyZXNzaW9uCmBgYHtyfQpUZGF0YS50cmFpbiA8LSBhcy5kYXRhLmZyYW1lKG1vZGVsRGF0YShkYXRhLm1vZGVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEud2luZG93PWMoJzE5NzAtMDEtMDInLCcyMDA1LTEyLTMwJykpKQpUZGF0YS5ldmFsIDwtIG5hLm9taXQoYXMuZGF0YS5mcmFtZShtb2RlbERhdGEoZGF0YS5tb2RlbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLndpbmRvdz1jKCcyMDA2LTAxLTAxJywnMjAxNi0wMS0yNScpKSkpClRmb3JtIDwtIGFzLmZvcm11bGEoJ1QuaW5kLkdTUEMgfiAuJykKYGBgCgpDbGFzc2lmaWNhdGlvbiBmb3IgVC5pbmQKYGBge3J9CmJ1eS50aHIgPC0gMC4xCnNlbGwudGhyIDwtIC0wLjEKVGRhdGEudHJhaW5DIDwtIGNiaW5kKFNpZ25hbD10cmFkaW5nLnNpZ25hbHMoVGRhdGEudHJhaW5bWyJULmluZC5HU1BDIl1dLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidXkudGhyLHNlbGwudGhyKSwKICAgICAgICAgICAgICAgICAgICAgIFRkYXRhLnRyYWluWywtMV0pClRkYXRhLmV2YWxDIDwtICBjYmluZChTaWduYWw9dHJhZGluZy5zaWduYWxzKFRkYXRhLmV2YWxbWyJULmluZC5HU1BDIl1dLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidXkudGhyLHNlbGwudGhyKSwKICAgICAgICAgICAgICAgICAgICAgIFRkYXRhLmV2YWxbLC0xXSkKVGZvcm1DIDwtIGFzLmZvcm11bGEoIlNpZ25hbCB+IC4iKQpgYGAKCiMjIyMgUHJlZGljdGlvbiBNb2RlbHMKCkFOTiAoQXJ0aWZpY2lhbCBOZXVyYWwgTmV0d29yaykKYGBge3J9CnNldC5zZWVkKDEyMzQpCmxpYnJhcnkobm5ldCkKbm9ybS5kYXRhIDwtIGRhdGEuZnJhbWUoVC5pbmQuR1NQQz1UZGF0YS50cmFpbltbMV1dLHNjYWxlKFRkYXRhLnRyYWluWywtMV0pKQpubiA8LSBubmV0KFRmb3JtLCBub3JtLmRhdGFbMToxMDAwLCBdLCBzaXplID0gNSwgZGVjYXkgPSAwLjAxLCAKICAgICAgICAgICBtYXhpdCA9IDEwMDAsIGxpbm91dCA9IFRSVUUsIHRyYWNlID0gRkFMU0UpCnByZWRzIDwtIHByZWRpY3Qobm4sIG5vcm0uZGF0YVsxMDAxOjIwMDAsIF0pCmBgYAoKVHJhbnNmb3JtaW5nIFByZWRpY3Rpb25zIGludG8gU2lnbmFscwpgYGB7cn0KbGlicmFyeShETXdSMikKc2lncy5ubiA8LSB0cmFkaW5nLnNpZ25hbHMocHJlZHMsMC4xLC0wLjEpCnRydWUuc2lncyA8LSB0cmFkaW5nLnNpZ25hbHMoVGRhdGEudHJhaW5bMTAwMToyMDAwLCAiVC5pbmQuR1NQQyJdLCAwLjEsIC0wLjEpCnNpZ3MuUFIoc2lncy5ubix0cnVlLnNpZ3MpCmBgYAoKVXNpbmcgbm5ldCgpIG9uIG91ciBUcmFuaW5nIERhdGEKYGBge3J9CnNldC5zZWVkKDEyMzQpCmxpYnJhcnkobm5ldCkKbm9ybS5kYXRhIDwtIGRhdGEuZnJhbWUoU2lnbmFsPVRkYXRhLnRyYWluQyRTaWduYWwsc2NhbGUoVGRhdGEudHJhaW5DWywtMV0pKQpubiA8LSBubmV0KFNpZ25hbCB+IC4sIG5vcm0uZGF0YVsxOjEwMDAsIF0sIHNpemUgPSAxMCwgZGVjYXkgPSAwLjAxLCAKICAgICAgICAgICBtYXhpdCA9IDEwMDAsIHRyYWNlID0gRkFMU0UpCnByZWRzIDwtIHByZWRpY3Qobm4sIG5vcm0uZGF0YVsxMDAxOjIwMDAsIF0sIHR5cGUgPSAiY2xhc3MiKQpgYGAKCkNhbGN1bGF0aW5nIE1vZGVsIFByZWNpc2lvbiBhbmQgUmVjYWxsCmBgYHtyfQpzaWdzLlBSKHByZWRzLCBub3JtLmRhdGFbMTAwMToyMDAwLCAxXSkKYGBgCgpSZWdyZXNzaW9uIFRhc2sgdXNpbmcgU1ZNCmBgYHtyfQpzZXQuc2VlZCgxMjM0KQpsaWJyYXJ5KGUxMDcxKQpzdiA8LSBzdm0oVGZvcm0sIFRkYXRhLnRyYWluWzE6MTAwMCwgXSwgZ2FtbWEgPSAwLjAwMSwgY29zdCA9IDEwMCkKcy5wcmVkcyA8LSBwcmVkaWN0KHN2LCBUZGF0YS50cmFpblsxMDAxOjIwMDAsIF0pCnNpZ3Muc3ZtIDwtIHRyYWRpbmcuc2lnbmFscyhzLnByZWRzLCAwLjEsIC0wLjEpCnRydWUuc2lncyA8LSB0cmFkaW5nLnNpZ25hbHMoVGRhdGEudHJhaW5bMTAwMToyMDAwLCAiVC5pbmQuR1NQQyJdLCAwLjEsIC0wLjEpCnNpZ3MuUFIoc2lncy5zdm0sIHRydWUuc2lncykKYGBgCgpSZWdyZXNzaW9uIFRhc2sgVXNpbmcgS1NWTQpgYGB7cn0KbGlicmFyeShrZXJubGFiKQprc3YgPC0ga3N2bShTaWduYWwgfiAuLCBUZGF0YS50cmFpbkNbMToxMDAwLCBdLCBDID0gMTApCmtzLnByZWRzIDwtIHByZWRpY3Qoa3N2LCBUZGF0YS50cmFpbkNbMTAwMToyMDAwLCBdKQpzaWdzLlBSKGtzLnByZWRzLCBUZGF0YS50cmFpbkNbMTAwMToyMDAwLCAxXSkKYGBgCgpSZWdyZXNzaW9uIFRhc2sgVXNpbmcgRWFydGgKYGBge3J9CmxpYnJhcnkoZWFydGgpCmUgPC0gZWFydGgoVGZvcm0sIFRkYXRhLnRyYWluWzE6MTAwMCwgXSkKZS5wcmVkcyA8LSBwcmVkaWN0KGUsIFRkYXRhLnRyYWluWzEwMDE6MjAwMCwgXSkKc2lncy5lIDwtIHRyYWRpbmcuc2lnbmFscyhlLnByZWRzLCAwLjEsIC0wLjEpCnRydWUuc2lncyA8LSB0cmFkaW5nLnNpZ25hbHMoVGRhdGEudHJhaW5bMTAwMToyMDAwLCAiVC5pbmQuR1NQQyJdLCAgMC4xLCAtMC4xKQpzaWdzLlBSKHNpZ3MuZSwgdHJ1ZS5zaWdzKQpgYGAKClN1bW1hcml6aW5nIGUsIHdoaWNoIGhhZCB0aGUgYmVzdCBwcmVjaXNpb24gYW5kIHJlY2FsbCBvdXQgb2YgYWxsIHRoZSBtb2RlbHMKYGBge3J9CnN1bW1hcnkoZSkKYGBgCgpWYXJpYWJsZXMgb3JkZXJlZCBieSBkZWNyZWFzaW5nIGltcG9ydGFuY2UgYW5kIHVudXNlZCB2YXJpYWJsZXMgc2hvd24KYGBge3J9CmV2aW1wKGUsIHRyaW09RkFMU0UpCmBgYAoKIyMjIyBGcm9tIFByZWRpY3Rpb25zIHRvIEFjdGlvbgoKVXNlci1zaW11bGF0ZWQgdHJhZGluZyBwb2xpY3kgZnVuY3Rpb24KYGBge3J9CnBvbGljeS4xIDwtIGZ1bmN0aW9uKHNpZ25hbHMsbWFya2V0LG9wZW5lZC5wb3MsbW9uZXksCiAgICAgICAgICAgICAgICAgICAgIGJldD0wLjIsaG9sZC50aW1lPTEwLAogICAgICAgICAgICAgICAgICAgICBleHAucHJvZj0wLjAyNSwgbWF4Lmxvc3M9IDAuMDUKICAgICAgICAgICAgICAgICAgICAgKQogIHsKICAgIGQgPC0gTlJPVyhtYXJrZXQpICMgSUQgb2YgdG9kYXkKICAgIG9yZGVycyA8LSBOVUxMCiAgICBuT3MgPC0gTlJPVyhvcGVuZWQucG9zKQogICAgIyBub3RoaW5nIHRvIGRvCiAgICBpZiAoIW5PcyAmJiBzaWduYWxzW2RdID09ICdoJykgcmV0dXJuKG9yZGVycykKCiAgICAjIENoZWNraW5nIGlmIHdlIGNhbiBvcGVuIG5ldyBwb3NpdGlvbnMKICAgICMgaSkgbG9uZyBwb3NpdGlvbnMKICAgIGlmIChzaWduYWxzW2RdID09ICdiJyAmJiAhbk9zKSB7CiAgICAgIHF1YW50IDwtIHJvdW5kKGJldCptb25leS9DbChtYXJrZXQpW2RdLDApCiAgICAgIGlmIChxdWFudCA+IDApIAogICAgICAgIG9yZGVycyA8LSByYmluZChvcmRlcnMsCiAgICAgICAgICAgICAgZGF0YS5mcmFtZShvcmRlcj1jKDEsLTEsLTEpLG9yZGVyLnR5cGU9YygxLDIsMyksIAogICAgICAgICAgICAgICAgICAgICAgICAgdmFsID0gYyhxdWFudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2wobWFya2V0KVtkXSooMStleHAucHJvZiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENsKG1hcmtldClbZF0qKDEtbWF4Lmxvc3MpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbiA9IGMoJ29wZW4nLCdjbG9zZScsJ2Nsb3NlJyksCiAgICAgICAgICAgICAgICAgICAgICAgICBwb3NJRCA9IGMoTkEsTkEsTkEpCiAgICAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICAgICAgICApCiAgICAjIGlpKSBzaG9ydCBwb3NpdGlvbnMgIAogICAgfSBlbHNlIGlmIChzaWduYWxzW2RdID09ICdzJyAmJiAhbk9zKSB7CiAgICAgICMgbnIgb2Ygc3RvY2tzIHdlIGFscmVhZHkgbmVlZCB0byBidXkgYmVjYXVzZSBvZiBjdXJyZW50bHkgb3BlbmVkIHNob3J0ICAgICAgICAgIHBvc2l0aW9ucwogICAgICBuZWVkMmJ1eSA8LSBzdW0ob3BlbmVkLnBvc1tvcGVuZWQucG9zWywncG9zLnR5cGUnXT09LTEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJOLnN0b2NrcyJdKSpDbChtYXJrZXQpW2RdCiAgICAgIHF1YW50IDwtIHJvdW5kKGJldCoobW9uZXktbmVlZDJidXkpL0NsKG1hcmtldClbZF0sMCkKICAgICAgaWYgKHF1YW50ID4gMCkKICAgICAgICBvcmRlcnMgPC0gcmJpbmQob3JkZXJzLAogICAgICAgICAgICAgIGRhdGEuZnJhbWUob3JkZXI9YygtMSwxLDEpLG9yZGVyLnR5cGU9YygxLDIsMyksIAogICAgICAgICAgICAgICAgICAgICAgICAgdmFsID0gYyhxdWFudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2wobWFya2V0KVtkXSooMS1leHAucHJvZiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENsKG1hcmtldClbZF0qKDErbWF4Lmxvc3MpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbiA9IGMoJ29wZW4nLCdjbG9zZScsJ2Nsb3NlJyksCiAgICAgICAgICAgICAgICAgICAgICAgICBwb3NJRCA9IGMoTkEsTkEsTkEpCiAgICAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICAgICAgICApCiAgICB9CiAgICAKICAgICMgQ2hlY2tpbmcgaWYgd2UgbmVlZCB0byBjbG9zZSBwb3NpdGlvbnMgYmVjYXVzZSB0aGVpciBob2xkaW5nIHRpbWUgaXMgb3ZlcgogICAgaWYgKG5PcykgCiAgICAgIGZvcihpIGluIDE6bk9zKSB7CiAgICAgICAgaWYgKGQgLSBvcGVuZWQucG9zW2ksJ09kYXRlJ10gPj0gaG9sZC50aW1lKQogICAgICAgICAgb3JkZXJzIDwtIHJiaW5kKG9yZGVycywKICAgICAgICAgICAgICAgIGRhdGEuZnJhbWUob3JkZXI9LW9wZW5lZC5wb3NbaSwncG9zLnR5cGUnXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JkZXIudHlwZT0xLAogICAgICAgICAgICAgICAgICAgICAgICAgICB2YWwgPSBOQSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uID0gJ2Nsb3NlJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zSUQgPSByb3duYW1lcyhvcGVuZWQucG9zKVtpXQogICAgICAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICAgICAgICAgICkKICAgICAgfQogICAgb3JkZXJzfQpgYGAKClNlY29uZCB0cmFkaW5nIHN0cmF0ZWd5IGZ1bmN0aW9uCmBgYHtyfQpwb2xpY3kuMiA8LSBmdW5jdGlvbihzaWduYWxzLG1hcmtldCxvcGVuZWQucG9zLG1vbmV5LAogICAgICAgICAgICAgICAgICAgICBiZXQ9MC4yLGV4cC5wcm9mPTAuMDI1LCBtYXgubG9zcz0gMC4wNQogICAgICAgICAgICAgICAgICAgICkKICB7CiAgICBkIDwtIE5ST1cobWFya2V0KSAjIElEIG9mIHRvZGF5CiAgICBvcmRlcnMgPC0gTlVMTAogICAgbk9zIDwtIE5ST1cob3BlbmVkLnBvcykKICAgICMgbm90aGluZyB0byBkbwogICAgaWYgKCFuT3MgJiYgc2lnbmFsc1tkXSA9PSAnaCcpIHJldHVybihvcmRlcnMpCgogICAgIyBDaGVja2luZyBpZiB3ZSBjYW4gb3BlbiBuZXcgcG9zaXRpb25zCiAgICAjIGkpIGxvbmcgcG9zaXRpb25zCiAgICBpZiAoc2lnbmFsc1tkXSA9PSAnYicpIHsKICAgICAgcXVhbnQgPC0gcm91bmQoYmV0Km1vbmV5L0NsKG1hcmtldClbZF0sMCkKICAgICAgaWYgKHF1YW50ID4gMCkgCiAgICAgICAgb3JkZXJzIDwtIHJiaW5kKG9yZGVycywKICAgICAgICAgICAgICBkYXRhLmZyYW1lKG9yZGVyPWMoMSwtMSwtMSksb3JkZXIudHlwZT1jKDEsMiwzKSwgCiAgICAgICAgICAgICAgICAgICAgICAgICB2YWwgPSBjKHF1YW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDbChtYXJrZXQpW2RdKigxK2V4cC5wcm9mKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2wobWFya2V0KVtkXSooMS1tYXgubG9zcykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uID0gYygnb3BlbicsJ2Nsb3NlJywnY2xvc2UnKSwKICAgICAgICAgICAgICAgICAgICAgICAgIHBvc0lEID0gYyhOQSxOQSxOQSkKICAgICAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgICAgICAgICkKICAgICMgaWkpIHNob3J0IHBvc2l0aW9ucyAgCiAgICB9IGVsc2UgaWYgKHNpZ25hbHNbZF0gPT0gJ3MnKSB7CiAgICAgICMgbW9uZXkgYWxyZWFkeSBjb21taXR0ZWQgdG8gYnV5IHN0b2NrcyBiZWNhdXNlIG9mIGN1cnJlbnRseSBvcGVuZWQgc2hvcnQgICAgICAgICBwb3NpdGlvbnMKICAgICAgbmVlZDJidXkgPC0gc3VtKG9wZW5lZC5wb3Nbb3BlbmVkLnBvc1ssJ3Bvcy50eXBlJ109PS0xLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTi5zdG9ja3MiXSkqQ2wobWFya2V0KVtkXQogICAgICBxdWFudCA8LSByb3VuZChiZXQqKG1vbmV5LW5lZWQyYnV5KS9DbChtYXJrZXQpW2RdLDApCiAgICAgIGlmIChxdWFudCA+IDApCiAgICAgICAgb3JkZXJzIDwtIHJiaW5kKG9yZGVycywKICAgICAgICAgICAgICBkYXRhLmZyYW1lKG9yZGVyPWMoLTEsMSwxKSxvcmRlci50eXBlPWMoMSwyLDMpLCAKICAgICAgICAgICAgICAgICAgICAgICAgIHZhbCA9IGMocXVhbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENsKG1hcmtldClbZF0qKDEtZXhwLnByb2YpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDbChtYXJrZXQpW2RdKigxK21heC5sb3NzKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb24gPSBjKCdvcGVuJywnY2xvc2UnLCdjbG9zZScpLAogICAgICAgICAgICAgICAgICAgICAgICAgcG9zSUQgPSBjKE5BLE5BLE5BKQogICAgICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAgICAgICAgKQogICAgfQogICAgb3JkZXJzfQpgYGAKClRyYWRpbmcgU2ltdWxhdG9yIHVzaW5nIFNWTSBzaWduYWxzCmBgYHtyfQojIFRyYWluIGFuZCB0ZXN0IHBlcmlvZHMKbGlicmFyeShxdWFudG1vZCkKc3RhcnQgPC0gMQpsZW4udHIgPC0gMTAwMApsZW4udHMgPC0gNTAwCnRyIDwtIHN0YXJ0OihzdGFydCtsZW4udHItMSkKdHMgPC0gKHN0YXJ0K2xlbi50cik6KHN0YXJ0K2xlbi50citsZW4udHMtMSkKIyBnZXR0aW5nIHF1b3RlcyBmb3IgdGhlIHRlc3RpbmcgcGVyaW9kCmRhdGEoR1NQQykKZGF0ZSA8LSByb3duYW1lcyhUZGF0YS50cmFpbltzdGFydCtsZW4udHIsXSkKbWFya2V0VFAgPC0gR1NQQ1twYXN0ZShkYXRlLCcvJyxzZXA9JycpXVsxOmxlbi50c10KIyBsZWFybmluZyB0aGUgbW9kZWwgYW5kIG9idGFpbmluZyBpdHMgc2lnbmFsIHByZWRpY3Rpb25zIGZvciB0aGUgdGVzdCBwZXJpb2QKbGlicmFyeShlMTA3MSkKcyA8LSBzdm0oVGZvcm0sIFRkYXRhLnRyYWluW3RyLF0sIGNvc3Q9MTAsZ2FtbWE9MC4wMSkKcCA8LSBwcmVkaWN0KHMsIFRkYXRhLnRyYWluW3RzLF0pCnNpZyA8LSB0cmFkaW5nLnNpZ25hbHMocCwgMC4xLCAtMC4xKQojIG5vdyB1c2luZyB0aGUgc2ltdWxhdGVkIHRyYWRlciBkdXJpbmcgdGhlIHRlc3RpbmcgcGVyaW9kCnQxIDwtIHRyYWRpbmcuc2ltdWxhdG9yKG1hcmtldFRQLCBzaWduYWxzPXNpZywgcG9saWN5LmZ1bmM9J3BvbGljeS4xJywKcG9saWN5LnBhcnM9bGlzdChleHAucHJvZj0wLjA1LGJldD0wLjIsaG9sZC50aW1lPTMwKSkKYGBgCgpDaGVja2luZyBDb250ZW50cyBhbmQgU3VtbWFyeSBvZiB0MQpgYGB7cn0KdDEgCnN1bW1hcnkodDEpCmBgYAoKUGVyZm9ybWFuY2UgZHVyaW5nIFNpbXVsYXRpb24gUGVyaW9kIHVzaW5nIEVjb25vbWljIEluZGljYXRvcnMKYGBge3J9CnRyYWRpbmdFdmFsdWF0aW9uKHQxKSAgCmBgYAoKR3JhcGhpY2FsIE92ZXJ2aWV3IG9mIFBlcmZvcm1hbmNlCmBgYHtyfQpwbG90KHQxLCBtYXJrZXRUUCwgIHRoZW1lID0gIndoaXRlIiwgIG5hbWUgPSAiU1A1MDAgUG9saWN5IDEiKQpgYGAKU2FtZSBTY2VuYXJpbyB1c2luZyBTZWNvbmQgVHJhZGluZyBQb2xpY3kKYGBge3J9CnQyIDwtIHRyYWRpbmcuc2ltdWxhdG9yKG1hcmtldFRQLCBzaWcsICJwb2xpY3kuMiIsIGxpc3QoZXhwLnByb2YgPSAwLjA1LCBiZXQgPSAwLjMpKQpzdW1tYXJ5KHQyKQp0cmFkaW5nRXZhbHVhdGlvbih0MikKcGxvdCh0MiwgbWFya2V0VFAsICB0aGVtZSA9ICJ3aGl0ZSIsICBuYW1lID0gIlNQNTAwIFBvbGljeSAyYSIpCmBgYApQb2xpY3kgMiB3aXRoIERpZmZlcmVudCB0ZXN0aW5nIGFuZCB0cmFuaW5nIFBlcmlvZHMKYGBge3J9CnN0YXJ0IDwtIDIwMDAKbGVuLnRyIDwtIDEwMDAKbGVuLnRzIDwtIDUwMAp0ciA8LSBzdGFydDooc3RhcnQgKyBsZW4udHIgLSAxKQp0cyA8LSAoc3RhcnQgKyBsZW4udHIpOihzdGFydCArIGxlbi50ciArIGxlbi50cyAtIDEpCmRhdGEoR1NQQykKZGF0ZSA8LSByb3duYW1lcyhUZGF0YS50cmFpbltzdGFydCtsZW4udHIsXSkKbWFya2V0VFAgPC0gR1NQQ1twYXN0ZShkYXRlLCcvJyxzZXA9JycpXVsxOmxlbi50c10KcyA8LSBzdm0oVGZvcm0sIFRkYXRhLnRyYWluW3RyLCBdLCBjb3N0ID0gMTAsIGdhbW1hID0gMC4wMSkKcCA8LSBwcmVkaWN0KHMsIFRkYXRhLnRyYWluW3RzLCBdKQpzaWcgPC0gdHJhZGluZy5zaWduYWxzKHAsIDAuMSwgLTAuMSkKdDIgPC0gIHRyYWRpbmcuc2ltdWxhdG9yKG1hcmtldFRQLCBzaWcsIAogICAgICAgICAgICAgICAgICAgICAgICAgInBvbGljeS4yIiwgbGlzdChleHAucHJvZiA9IDAuMDUsIGJldCA9IDAuMykpCnN1bW1hcnkodDIpIAp0cmFkaW5nRXZhbHVhdGlvbih0MikKcGxvdCh0MiwgbWFya2V0VFAsICB0aGVtZSA9ICJ3aGl0ZSIsICBuYW1lID0gIlNQNTAwIFBvbGljeSAyYiIpCmBgYAojIyMjIE1vZGVsIEV2YWx1YXRpb24gYW5kIFNlbGVjdGlvbgpgYGB7cn0KdHJhZGluZ1dGIDwtIGZ1bmN0aW9uKGZvcm0sIHRyYWluLCB0ZXN0LCAKICAgICAgICAgICAgICAgICAgICAgIHF1b3RlcywgcHJlZC50YXJnZXQ9InNpZ25hbHMiLAogICAgICAgICAgICAgICAgICAgICAgbGVhcm5lciwgbGVhcm5lci5wYXJzPU5VTEwsCiAgICAgICAgICAgICAgICAgICAgICBwcmVkaWN0b3IucGFycz1OVUxMLAogICAgICAgICAgICAgICAgICAgICAgbGVhcm4udGVzdC50eXBlPSdmaXhlZCcsIHJlbGVhcm4uc3RlcD0zMCwKICAgICAgICAgICAgICAgICAgICAgIGIudCwgcy50LAogICAgICAgICAgICAgICAgICAgICAgcG9saWN5LCBwb2xpY3kucGFycywKICAgICAgICAgICAgICAgICAgICAgIHRyYW5zLmNvc3Q9NSwgaW5pdC5jYXA9MWUrMDYpCnsKICAgICMjIG9idGFpbiB0aGUgbW9kZWwocykgYW5kIHJlc3BlY3RpdmUgcHJlZGljdGlvbnMgZm9yIHRoZSB0ZXN0IHNldAogICAgaWYgKGxlYXJuLnRlc3QudHlwZSA9PSAnZml4ZWQnKSB7ICAjIGEgc2luZ2xlIGZpeGVkIG1vZGVsCiAgICAgICAgbSA8LSBkby5jYWxsKGxlYXJuZXIsYyhsaXN0KGZvcm0sdHJhaW4pLGxlYXJuZXIucGFycykpCiAgICAgICAgcHJlZHMgPC0gZG8uY2FsbCgicHJlZGljdCIsYyhsaXN0KG0sdGVzdCkscHJlZGljdG9yLnBhcnMpKQogICAgfSBlbHNlIHsgICMgZWl0aGVyIHNsaWRlIG9yIGdyb3dpbmcgd2luZG93IHN0cmF0ZWdpZXMKICAgICAgICBkYXRhIDwtIHJiaW5kKHRyYWluLHRlc3QpCiAgICAgICAgbiA8LSBOUk9XKGRhdGEpCiAgICAgICAgdHJhaW4uc2l6ZSA8LSBOUk9XKHRyYWluKQogICAgICAgIHN0cyA8LSBzZXEodHJhaW4uc2l6ZSsxLG4sYnk9cmVsZWFybi5zdGVwKQogICAgICAgIHByZWRzIDwtIHZlY3RvcigpCiAgICAgICAgZm9yKHMgaW4gc3RzKSB7ICAjIGxvb3Agb3ZlciBlYWNoIHJlbGVhcm4gc3RlcAogICAgICAgICAgICB0ciA8LSBpZiAobGVhcm4udGVzdC50eXBlPT0nc2xpZGUnKSBkYXRhWyhzLXRyYWluLnNpemUpOihzLTEpLF0gCiAgICAgICAgICAgICAgICAgIGVsc2UgZGF0YVsxOihzLTEpLF0KICAgICAgICAgICAgdHMgPC0gZGF0YVtzOm1pbigocytyZWxlYXJuLnN0ZXAtMSksbiksXQogICAgICAgICAgICAKICAgICAgICAgICAgbSA8LSBkby5jYWxsKGxlYXJuZXIsYyhsaXN0KGZvcm0sdHIpLGxlYXJuZXIucGFycykpCiAgICAgICAgICAgIHByZWRzIDwtIGMocHJlZHMsZG8uY2FsbCgicHJlZGljdCIsYyhsaXN0KG0sdHMpLHByZWRpY3Rvci5wYXJzKSkpCiAgICAgICAgfSAgICAKICAgIH0gCiAgICAKICAgICMjIEdldHRpbmcgdGhlIHRyYWRpbmcgc2lnbmFscwogICAgaWYgKHByZWQudGFyZ2V0ICE9ICJzaWduYWxzIikgeyAgIyB0aGUgbW9kZWwgcHJlZGljdHMgdGhlIFQgaW5kaWNhdG9yCiAgICAgICAgcHJlZFNpZ3MgPC0gdHJhZGluZy5zaWduYWxzKHByZWRzLGIudCxzLnQpCiAgICAgICAgdGd0TmFtZSA8LSBhbGwudmFycyhmb3JtKVsxXQogICAgICAgIHRydWVTaWdzIDwtIHRyYWRpbmcuc2lnbmFscyh0ZXN0W1t0Z3ROYW1lXV0sYi50LHMudCkKICAgIH0gZWxzZSB7ICAjIHRoZSBtb2RlbCBwcmVkaWN0cyB0aGUgc2lnbmFscyBkaXJlY3RseQogICAgICAgIHRndE5hbWUgPC0gYWxsLnZhcnMoZm9ybSlbMV0KICAgICAgICBpZiAoaXMuZmFjdG9yKHByZWRzKSkKICAgICAgICAgICAgcHJlZFNpZ3MgPC0gcHJlZHMKICAgICAgICBlbHNlIHsKICAgICAgICAgICAgaWYgKHByZWRzWzFdICVpbiUgbGV2ZWxzKHRyYWluW1t0Z3ROYW1lXV0pKQogICAgICAgICAgICAgICAgcHJlZFNpZ3MgPC0gZmFjdG9yKHByZWRzLGxhYmVscz1sZXZlbHModHJhaW5bW3RndE5hbWVdXSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWxzPWxldmVscyh0cmFpbltbdGd0TmFtZV1dKSkKICAgICAgICAgICAgZWxzZSAKICAgICAgICAgICAgICAgIHByZWRTaWdzIDwtIGZhY3RvcihwcmVkcyxsYWJlbHM9bGV2ZWxzKHRyYWluW1t0Z3ROYW1lXV0pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldmVscz0xOjMpCiAgICAgICAgfQogICAgICAgIHRydWVTaWdzIDwtIHRlc3RbW3RndE5hbWVdXQogICAgfQoKICAgICMjIG9idGFpbmluZyB0aGUgdHJhZGluZyByZWNvcmQgZnJvbSB0cmFkaW5nIHdpdGggdGhlIHNpZ25hbHMKICAgIGRhdGUgPC0gcm93bmFtZXModGVzdClbMV0KICAgIG1hcmtldCA8LSBnZXQocXVvdGVzKVtwYXN0ZShkYXRlLCIvIixzZXA9JycpXVsxOmxlbmd0aChwcmVkcyksXQogICAgdHJhZGVSZWMgPC0gdHJhZGluZy5zaW11bGF0b3IobWFya2V0LHByZWRTaWdzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9saWN5LmZ1bmM9cG9saWN5LHBvbGljeS5wYXJzPXBvbGljeS5wYXJzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnMuY29zdD10cmFucy5jb3N0LGluaXQuY2FwPWluaXQuY2FwKQogICAgCiAgICByZXR1cm4obGlzdCh0cnVlU2lncz10cnVlU2lncyxwcmVkU2lncz1wcmVkU2lncyx0cmFkZVJlYz10cmFkZVJlYykpCn0KCmBgYAoKYGBge3J9CnRyYWRpbmdFdmFsIDwtIGZ1bmN0aW9uKHRydWVTaWdzLHByZWRTaWdzLHRyYWRlUmVjLC4uLikgCnsKICAgICMjIFNpZ25hbHMgZXZhbHVhdGlvbgogICAgc3QgPC0gc2lncy5QUihwcmVkU2lncyx0cnVlU2lncykKICAgIGRpbShzdCkgPC0gTlVMTAogICAgbmFtZXMoc3QpIDwtIHBhc3RlKHJlcChjKCdwcmVjJywncmVjJyksZWFjaD0zKSxjKCdzJywnYicsJ3NiJyksc2VwPScuJykKICAgIAogICAgIyMgVHJhZGluZyByZWNvcmQgZXZhbHVhdGlvbgogICAgdHJhZFJlcyA8LSB0cmFkaW5nRXZhbHVhdGlvbih0cmFkZVJlYykKICAgIHJldHVybihjKHN0LHRyYWRSZXMpKQp9CmBgYAoKYGBge3J9CmxpYnJhcnkocGVyZm9ybWFuY2VFc3RpbWF0aW9uKQpsaWJyYXJ5KGUxMDcxKQpsaWJyYXJ5KGVhcnRoKQpsaWJyYXJ5KG5uZXQpCkxFQVJORVJTIDwtIGMoJ3N2bScsJ2VhcnRoJywnbm5ldCcpCkVTVC5UQVNLIDwtIEVzdGltYXRpb25UYXNrKG1ldGhvZD1Nb250ZUNhcmxvKG5SZXBzPTEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN6VHJhaW49MjU0LHN6VGVzdD0xMjcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlZWQ9MTIzNCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2YWx1YXRvcj0idHJhZGluZ0V2YWwiKQpWQVJTIDwtIGxpc3QoKQoKVkFSUyRzdm0gPC0gbGlzdChsZWFybmVyLnBhcnM9bGlzdChjb3N0PWMoMTAsNTAsNSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2FtbWE9YygwLjAxLDAuMDUpKSkKVkFSUyRlYXJ0aCA8LSBsaXN0KGxlYXJuZXIucGFycz1saXN0KG5rPWMoMTAsMTcpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVncmVlPWMoMSwyKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocmVzaD1jKDAuMDEsMC4wMDEpKSkKVkFSUyRubmV0IDwtICBsaXN0KGxlYXJuZXIucGFycz1saXN0KGxpbm91dD1UUlVFLCB0cmFjZT1GQUxTRSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heGl0PTc1MCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemU9Yyg1LDEwKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlY2F5PWMoMC4wMDEsMC4wMSwwLjEpKSkKClZBUlMkbGVhcm5pbmcgPC0gbGlzdChsZWFybi50ZXN0LnR5cGU9YygiZml4ZWQiLCJzbGlkZSIsImdyb3ciKSwgcmVsZWFybi5zdGVwPTEyKQpWQVJTJHRyYWRpbmcgIDwtIGxpc3QocG9saWN5PWMoInBvbGljeS4xIiwicG9saWN5LjIiKSwKICAgICAgICAgICAgICAgICAgICAgcG9saWN5LnBhcnM9bGlzdChiZXQ9YygwLjIsMC41KSxleHAucHJvZj0wLjA1LG1heC5sb3NzPTAuMDUpLAogICAgICAgICAgICAgICAgICAgICBiLnQ9YygwLjAxLDAuMDUpLHMudD1jKC0wLjAxLC0wLjA1KSkKCmBgYAoKCmBgYHtyfQojIyBSZWdyZXNzaW9uIChmb3JlY2FzdCBUIGluZGljYXRvcikgV29ya2Zsb3dzCmZvcihscm4gaW4gTEVBUk5FUlMpIHsKICAgIG9iak5hbWUgPC0gcGFzdGUobHJuLCJyZXMiLCJyZWdyIixzZXA9Il8iKSAjc3ZtX3Jlc19yZWdyCiAgICBhc3NpZ24ob2JqTmFtZSwKICAgICAgICAgICBwZXJmb3JtYW5jZUVzdGltYXRpb24oUHJlZFRhc2soVGZvcm0sVGRhdGEudHJhaW4sIlNQNTAwIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvLmNhbGwoIndvcmtmbG93VmFyaWFudHMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMobGlzdCgidHJhZGluZ1dGIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyc1Jvb3ROYW1lPXBhc3RlKGxybiwiUmVnciIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBxdW90ZXM9IkdTUEMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZWFybmVyPWxybiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlZC50YXJnZXQ9ImluZGljYXRvciIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVkFSU1tbbHJuXV0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWQVJTJGxlYXJuaW5nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVkFSUyR0cmFkaW5nKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVTVC5UQVNLKSAjIGZvciBwYXJhbGxlbCBjb21wdXRhdGlvbgogICAgICAgICAgICkKICAgIHNhdmUobGlzdD1vYmpOYW1lLGZpbGU9cGFzdGUob2JqTmFtZSwnUmRhdGEnLHNlcD0nLicpKQp9CmBgYApgYGB7cn0KIyMgU3BlY2lmaWMgc2V0dGluZ3MgdG8gbWFrZSBubmV0IHdvcmsgYXMgYSBjbGFzc2lmaWVyClZBUlMkbm5ldCRsZWFybmVyLnBhcnMkbGlub3V0IDwtICBGQUxTRQpWQVJTJG5uZXQkcHJlZGljdG9yLnBhcnMgPC0gIGxpc3QodHlwZT0iY2xhc3MiKQoKIyMgQ2xhc3NpZmljYXRpb24gKGZvcmVjYXN0IHNpZ25hbCkgd29ya2Zsb3dzCmZvcihscm4gaW4gYygic3ZtIiwibm5ldCIpKSB7ICMgb25seSB0aGVzZSBiZWNhdXNlIE1BUlMgaXMgb25seSBmb3IgcmVncmVzc2lvbgogICAgb2JqTmFtZSA8LSBwYXN0ZShscm4sInJlcyIsImNsYXNzIixzZXA9Il8iKQogICAgYXNzaWduKG9iak5hbWUsCiAgICAgICAgICAgcGVyZm9ybWFuY2VFc3RpbWF0aW9uKFByZWRUYXNrKFRmb3JtQyxUZGF0YS50cmFpbkMsIlNQNTAwIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvLmNhbGwoIndvcmtmbG93VmFyaWFudHMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMobGlzdCgidHJhZGluZ1dGIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyc1Jvb3ROYW1lPXBhc3RlMChscm4sIkNsYXNzIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHF1b3Rlcz0iR1NQQyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlYXJuZXI9bHJuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVkLnRhcmdldD0ic2lnbmFscyIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVkFSU1tbbHJuXV0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWQVJTJGxlYXJuaW5nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVkFSUyR0cmFkaW5nKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVTVC5UQVNLKSAjIGZvciBwYXJhbGxlbCBjb21wdXRhdGlvbgogICAgICAgICAgICkKICAgIHNhdmUobGlzdD1vYmpOYW1lLGZpbGU9cGFzdGUob2JqTmFtZSwnUmRhdGEnLHNlcD0nLicpKQp9CmBgYAoKIyMjIyMgUmVzdWx0cyBBbmFseXNpcwoKTG9hZGluZyB0aGUgcmVzdWx0cyBmcm9tIG1vZGVsIGV2YWx1YXRpb246CgoKYGBge3J9CnN2bV9yZXNfcmVnciA9IGxvYWQodXJsKCJodHRwczovL3dlYi5jcy5kYWwuY2Evfmx0b3Jnby9BdXhGaWxlcy9zdm1fcmVzX3JlZ3IuUmRhdGEiKSkKYGBgCgpgYGB7cn0Kbm5ldF9yZXNfcmVnciA9IGxvYWQodXJsKCJodHRwczovL3dlYi5jcy5kYWwuY2Evfmx0b3Jnby9BdXhGaWxlcy9ubmV0X3Jlc19yZWdyLlJkYXRhIikpCmBgYAoKYGBge3J9CmVhcnRoX3Jlc19yZWdyID0gbG9hZCh1cmwoImh0dHBzOi8vd2ViLmNzLmRhbC5jYS9+bHRvcmdvL0F1eEZpbGVzL2VhcnRoX3Jlc19yZWdyLlJkYXRhIikpCmBgYAoKYGBge3J9CnN2bV9yZXNfY2xhc3MgPSBsb2FkKHVybCgiaHR0cHM6Ly93ZWIuY3MuZGFsLmNhL35sdG9yZ28vQXV4RmlsZXMvc3ZtX3Jlc19jbGFzcy5SZGF0YSIpKQpgYGAKCmBgYHtyfQpubmV0X3Jlc19jbGFzcyA9IGxvYWQodXJsKCJodHRwczovL3dlYi5jcy5kYWwuY2Evfmx0b3Jnby9BdXhGaWxlcy9ubmV0X3Jlc19jbGFzcy5SZGF0YSIpKQpgYGAKCmBgYHtyfQphbGxSZXN1bHRzIDwtIG1lcmdlRXN0aW1hdGlvblJlcyhzdm1fcmVzX3JlZ3IsIGVhcnRoX3Jlc19yZWdyLCBubmV0X3Jlc19yZWdyLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ZtX3Jlc19jbGFzcywgbm5ldF9yZXNfY2xhc3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ5PSJ3b3JrZmxvd3MiKQpybShzdm1fcmVzX3JlZ3IsIGVhcnRoX3Jlc19yZWdyLCBubmV0X3Jlc19yZWdyLCBzdm1fcmVzX2NsYXNzLCBubmV0X3Jlc19jbGFzcykKYGBgCgpgYGB7cn0KdGd0U3RhdHMgPC0gYygnTlRyYWRlcycsJ3ByZWMuc2InLCdSZXQnLCdSZXRPdmVyQkgnLCdQZXJjUHJvZicsCiAgICAgICAgICAgICAgJ01heEREJywnU2hhcnBlUmF0aW8nKQp0b01heCA8LSBjKHJlcChUUlVFLDUpLEZBTFNFLFRSVUUpCnJhbmtXb3JrZmxvd3Moc3Vic2V0KGFsbFJlc3VsdHMsCiAgICAgICAgICAgICAgICAgICAgIG1ldHJpY3M9dGd0U3RhdHMsCiAgICAgICAgICAgICAgICAgICAgIHBhcnRpYWw9RkFMU0UpLAogICAgICAgICAgICAgIHRvcD0zLAogICAgICAgICAgICAgIG1heHM9dG9NYXgpCmBgYAoKYGBge3J9CmJlc3QgPC0gcmFua1dvcmtmbG93cyhzdWJzZXQoYWxsUmVzdWx0cywKICAgICAgICAgICAgICAgICAgICAgbWV0cmljcz10Z3RTdGF0cywKICAgICAgICAgICAgICAgICAgICAgcGFydGlhbD1GQUxTRSksCiAgICAgICAgICAgICAgdG9wPTEwMCwKICAgICAgICAgICAgICBtYXhzPXRvTWF4KQpiZXN0V0ZzIDwtIHVuaXF1ZShhcy52ZWN0b3Ioc2FwcGx5KGJlc3QkU1A1MDAsZnVuY3Rpb24oeCkgeCRXb3JrZmxvdykpKQphbmFseXNpc1NldCA8LSBzdWJzZXQoYWxsUmVzdWx0cywgd29ya2Zsb3dzPWJlc3RXRnMsIHBhcnRpYWw9RkFMU0UpCnJtKGFsbFJlc3VsdHMpCmBgYAoKYGBge3J9CmdldFdvcmtmbG93KCJzdm1SZWdyLnYxMzgiLGFuYWx5c2lzU2V0KQpgYGAKCgpgYGB7cn0KKHRwcyA8LSB0b3BQZXJmb3JtZXJzKHN1YnNldChhbmFseXNpc1NldCxtZXRyaWNzPXRndFN0YXRzLHBhcnRpYWw9RkFMU0UpLAogICAgICAgICAgICAgICAgICAgICAgbWF4cz10b01heCkpCmBgYAoKYGBge3J9CnN1bW1hcnkoc3Vic2V0KGFuYWx5c2lzU2V0LAogICAgICAgICAgICAgICB3b3JrZmxvd3M9dHBzJFNQNTAwW2MoInByZWMuc2IiLCJSZXQiLCJQZXJjUHJvZiIsIk1heEREIiksCiAgICAgICAgICAgICAgICAgICAiV29ya2Zsb3ciXSwKICAgICAgICAgICAgICAgbWV0cmljcz10Z3RTdGF0c1stYygxLDQsNyldLAogICAgICAgICAgICAgICBwYXJ0aWFsPUZBTFNFKSkKYGBgCgpgYGB7cn0KbXMgPC0gbWV0cmljc1N1bW1hcnkoc3Vic2V0KGFuYWx5c2lzU2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0cmljcz1jKCJOVHJhZGVzIiwiUmV0IiwiUGVyY1Byb2YiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnRpYWw9RkFMU0UpLAogICAgICAgICAgICAgICAgICAgICBzdW1tYXJ5PSJtZWRpYW4iKVtbIlNQNTAwIl1dCmNhbmRpZGF0ZXMgPC0gc3Vic2V0KGFuYWx5c2lzU2V0LAogICAgICAgICAgICAgICAgICAgICB3b3JrZmxvd3M9Y29sbmFtZXMobXMpW3doaWNoKG1zWyJOVHJhZGVzIixdID4gMTIwKV0sCiAgICAgICAgICAgICAgICAgICAgIHBhcnRpYWw9RkFMU0UpCm1zIDwtIG1ldHJpY3NTdW1tYXJ5KHN1YnNldChjYW5kaWRhdGVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0cmljcz1jKCJSZXQiLCJQZXJjUHJvZiIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFydGlhbD1GQUxTRSksCiAgICAgICAgICAgICAgICAgICAgIHN1bW1hcnk9Im1lZGlhbiIpW1siU1A1MDAiXV0KKHNtcyA8LSBhcHBseShtcywxLGZ1bmN0aW9uKHgpIG5hbWVzKHhbb3JkZXIoeCxkZWNyZWFzaW5nPVRSVUUpXVsxOjE1XSkpKQood2lubmVycyA8LSB1bmlxdWUoYyhpbnRlcnNlY3Qoc21zWywxXSxzbXNbLDJdKSxzbXNbMTozLDFdLHNtc1sxOjMsMl0pKSkKd2lubmVyc1Jlc3VsdHMgPC0gc3Vic2V0KGFuYWx5c2lzU2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgbWV0cmljcz10Z3RTdGF0cyx3b3JrZmxvd3M9d2lubmVycywKICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnRpYWw9RkFMU0UpCmBgYAoKCmBgYHtyfQpwIDwtIHBhaXJlZENvbXBhcmlzb25zKHdpbm5lcnNSZXN1bHRzLGJhc2VsaW5lPSJubmV0UmVnci52MjAwIixtYXhzPXRvTWF4KQpwJFJldCRXaWxjb3hvblNpZ25lZFJhbmsudGVzdApgYGAKCmBgYHtyfQpwIDwtIHBhaXJlZENvbXBhcmlzb25zKHdpbm5lcnNSZXN1bHRzLCJubmV0UmVnci52MTc1IixtYXhzPXRvTWF4KQpwJE1heEREJFdpbGNveG9uU2lnbmVkUmFuay50ZXN0CmBgYAoKYGBge3J9CnNkcyA8LSBzaWduaWZEaWZmcyhwLHAubGltaXQ9MC4wNSxtZXRyaWNzPSJNYXhERCIpCnNkcyRNYXhERCRXaWxjb3hvblNpZ25lZFJhbmsudGVzdCRTUDUwMApgYGAKCmBgYHtyfQpzZHMgPC0gc2lnbmlmRGlmZnMocCxwLmxpbWl0PTAuMDUsbWV0cmljcz0iTWF4REQiKQpzZHMkTWF4REQkV2lsY294b25TaWduZWRSYW5rLnRlc3QkU1A1MDAKYGBgCgoKIyMjIyMgVGhlIFRyYWRpbmcgU3lzdGVtCkV2YWx1YXRpb24gb2YgdGhlIEZpbmFsIFRlc3QgRGF0YQpgYGB7cn0Kc2V0LnNlZWQoMTIzNCkKZGF0YSA8LSB0YWlsKFRkYXRhLnRyYWluLCAyNTQwKSAjIHRoZSBsYXN0IDEwIHllYXJzIG9mIHRoZSB0cmFpbmluZyBkYXRhc2V0CnJlc3VsdHMgPC0gbGlzdCgpCndmc091dCA8LSBsaXN0KCkKZm9yIChuYW1lIGluIHdpbm5lcnMpIHsKICAgIHN5cyA8LSBnZXRXb3JrZmxvdyhuYW1lLCBhbmFseXNpc1NldCkKICAgIHdmc091dFtbbmFtZV1dIDwtIHJ1bldvcmtmbG93KHN5cywgVGZvcm0sIGRhdGEsIFRkYXRhLmV2YWwpCiAgICByZXN1bHRzW1tuYW1lXV0gPC0gZG8uY2FsbCgidHJhZGluZ0V2YWwiLHdmc091dFtbbmFtZV1dKQp9CnJlc3VsdHMgPC0gdChhcy5kYXRhLmZyYW1lKHJlc3VsdHMpKQpgYGAKCmBgYHtyfQpyZXN1bHRzWywgYygiTlRyYWRlcyIsIlJldCIsIlJldE92ZXJCSCIsIlBlcmNQcm9mIiwiTWF4REQiKV0KYGBgCgpgYGB7cn0KZ2V0V29ya2Zsb3coIm5uZXRSZWdyLnYyMDMiLCBhbmFseXNpc1NldCkKYGBgCgpgYGB7cn0KZGF0ZSA8LSByb3duYW1lcyhUZGF0YS5ldmFsKVsxXQptYXJrZXQgPC0gR1NQQ1twYXN0ZShkYXRlLCAiLyIsIHNlcCA9ICIiKV1bMTpucm93KFRkYXRhLmV2YWwpLCBdCnBsb3Qod2ZzT3V0W1sibm5ldFJlZ3IudjIwMyJdXSR0cmFkZVJlYywgbWFya2V0LCAKICAgICB0aGVtZSA9ICJ3aGl0ZSIsIG5hbWUgPSAiU1A1MDAgLSBmaW5hbCB0ZXN0IikKYGBgCmBgYHtyfQpsaWJyYXJ5KFBlcmZvcm1hbmNlQW5hbHl0aWNzKQplcXVpdHlXRiA8LSBhcy54dHMod2ZzT3V0W1sibm5ldFJlZ3IudjIwMyJdXSR0cmFkZVJlY0B0cmFkaW5nJEVxdWl0eSkKcmV0cyA8LSBSZXR1cm4uY2FsY3VsYXRlKGVxdWl0eVdGKQpgYGAKCmBgYHtyfQpjaGFydC5DdW1SZXR1cm5zKHJldHMsIG1haW49IkN1bXVsYXRpdmUgcmV0dXJucyBvZiB0aGUgc3RyYXRlZ3kiLCB5bGFiPSJyZXR1cm5zIikKYGBgCgpgYGB7cn0KeWVhcmx5UmV0dXJuKGVxdWl0eVdGKQpgYGAKCmBgYHtyfQpwbG90KDEwMCp5ZWFybHlSZXR1cm4oZXF1aXR5V0YpLCAKICAgICBtYWluPSdZZWFybHkgcGVyY2VudGFnZSByZXR1cm5zIG9mIHRoZSB0cmFkaW5nIHN5c3RlbScpCmBgYApgYGB7cn0KdGFibGUuRG93bnNpZGVSaXNrKHJldHMpCmBgYAoKCgoK