트레이딩의 머신러닝: 이론, 모델, 실전 및 알고리즘 트레이딩 - 페이지 115

 
안톤 즈베레프 :
나는 항상 복잡한 거래 이론을 구축하려는 주제(이 포럼뿐만 아니라)를 읽습니다.
유전자 알고리즘 , 신경망, 작성자 본인만 알 수 있는 혼란스러운 공식 등

그리고 나는 항상 그러한 시스템이 시장에서 작동하지 않는다는 것을 알고 있습니다. 모니터링은 0 또는 마이너스가 됩니다.
그러나 다른 한편으로, 다음 주제에서 누군가는 두 개의 이동 평균에서 고문으로 수익을 얻습니다. 그리고 그는 잘 벌고 있습니다.

문제는 모든 것이 의미가 있습니까?
내 경험상 시스템이 단순하고 명확할수록 수익성이 높기 때문입니다.

혹시 옛날 증권사 점원이신가요?

"방법"을 알려주십시오. 귀하의 "비밀 방법"은 자동차 (무작위)를 거래하고 잃어 버리면 두 배가되는 것 같습니다. 맞습니까?)))

여러분은 커미션에서만 살아야 할 것입니다 ...

 
트레이더 박사 :

위원회 구성 및 테스트:

원래 클래스가 요인 유형이고 행렬의 결과가 요인에 해당하는 서수로 변환되는 문제가 있습니다. 따라서 결국 비교는 as.numberic()을 거칩니다.

모든 것이 요인과 함께 잘 작동하려면 예측 매트릭스를 data.frame으로 생성해야 하지만 내 rbind 함수가 경고를 표시한 후 다른 것을 변경해야 합니다. 거기서 무엇이 잘못되었는지 이해하지 못했습니다.

코드에 대한 몇 가지 생각:

1. 꼭 필요한 경우가 아니면 for() 구문을 사용하지 마십시오. foreach()에 대한 훌륭한 대안이 있는데, 이는 높은 실행 속도 외에도 사용 가능한 코어 간에 계산을 병렬화할 수 있도록 합니다.

2. 모델의 앙상블은 의미가 있으며 모델에 상당한 차이가 있는 경우에만 결과를 제공합니다. 두 가지 옵션: 하나의 데이터 세트 - 다른 모델(RF, DT, SVM); 하나의 모델 - 다른 데이터 세트. 마지막 옵션의 예는 다음과 같습니다.

#----------------------------------------------------------------------
require(ranger)
require( foreach )
require(magrittr)
data( "iris" )
totalModels = 50
res <- list()
Acc <- c()
res <- foreach (i = seq_len(totalModels),
               .packages = c( "ranger" , "magrittr" )) % do % {
          id <- rminer::holdout(y = iris$Species, ratio = 2 / 3 )
          x.test <- iris[id$ts, -ncol(iris)]
          y.test <- iris[id$ts, ncol(iris)]
          model <- ranger(Species~., data = iris[id$tr, ], 
                          write.forest = TRUE)
          pred <- predict(model, x.test)$predictions
          acc <- sum(pred == y.test) / length(y.test)
          list(Acc = acc, mod = model) 
        }
for (i in 1 :totalModels) {Acc[i] <- res[[i]]$Acc}
Acc
 [ 1 ] 0.9803922 0.9607843 0.9803922 0.9607843
 [ 5 ] 0.9607843 0.9215686 1.0000000 0.9411765
 [ 9 ] 0.9019608 0.9607843 0.9803922 0.9607843
[ 13 ] 0.9803922 0.9215686 0.9607843 0.9215686
[ 17 ] 0.9803922 0.8823529 0.9411765 0.9803922
[ 21 ] 0.9607843 0.9215686 0.9607843 0.9411765
[ 25 ] 0.9411765 0.9607843 0.9411765 0.9607843
[ 29 ] 0.8823529 0.9019608 1.0000000 0.9411765
[ 33 ] 0.9215686 0.9803922 1.0000000 0.9607843
[ 37 ] 0.9411765 0.9803922 0.9607843 0.9215686
[ 41 ] 0.9411765 0.9607843 0.9411765 1.0000000
[ 45 ] 0.9607843 0.9411765 0.9215686 0.9411765
[ 49 ] 0.9803922 0.9607843

우리는 최고의 성능을 가진 모델을 선택하고 계속 작업합니다.

행운을 빕니다

 
블라디미르 페레르벤코 :

코드에 대한 몇 가지 생각:

1. 꼭 필요한 경우가 아니면 for() 구문을 사용하지 마십시오. foreach()에 대한 훌륭한 대안이 있는데, 이는 높은 실행 속도 외에도 사용 가능한 코어 간에 계산을 병렬화할 수 있도록 합니다.

2. 모델의 앙상블은 의미가 있으며 모델에 상당한 차이가 있는 경우에만 결과를 제공합니다. 두 가지 옵션: 하나의 데이터 세트 - 다른 모델(RF, DT, SVM); 하나의 모델 - 다른 데이터 세트. 마지막 옵션의 예는 다음과 같습니다.

우리는 최고의 성능을 가진 모델을 선택하고 계속 작업합니다.

행운을 빕니다

자주 뵙고 싶습니다. 길을 잃지 마세요.
 
블라디미르 페레르벤코 :


우리는 최고의 성능을 가진 모델을 선택하고 계속 작업합니다.


여기에 문제가 있습니다.

그리고 어떤 데이터가 계산되는지에 대한 최고의 지표는 무엇입니까?

내가 묻는 이유는 vkont가 훈련 및 테스트 데이터를 사용하여 (많은 모델에서) 모델을 선택하는 방법을 알아내려고 열심히 노력하고 있기 때문입니다. 우리는 최고의 지표를 선택하여 함께 작업합니다.

 
알렉세이 버나코프 :

여기에 문제가 있습니다.

그리고 어떤 데이터가 계산되는지에 대한 최고의 지표는 무엇입니까?

내가 묻는 이유는 vkont가 훈련 및 테스트 데이터를 사용하여 (많은 모델에서) 모델을 선택하는 방법을 알아내려고 열심히 노력하고 있기 때문입니다. 우리는 최고의 지표를 선택하여 함께 작업합니다.

원본 세트는 학습/테스트 계층화로 나뉩니다. 기차에서 우리는 각각 테스트를 위해 훈련하고 테스트합니다. 코드에서 명확하지 않습니까?

행운을 빕니다

 
산산이치 포멘코 :
더 자주 뵙고 싶습니다. 길을 잃지 마세요.
불행히도 때때로 사이트를 탐색할 시간이 충분하지 않습니다. 많은 일.
 
블라디미르 페레르벤코 :

원본 세트는 학습/테스트 계층화로 나뉩니다. 기차에서 우리는 각각 테스트를 위해 훈련하고 테스트합니다. 코드에서 명확하지 않습니까?

행운을 빕니다

rminer::holdout을 사용해 보겠습니다. 예를 들어 주셔서 감사합니다. 일반적으로 경험상 테스트 세트에서 최상의 결과를 얻는 방식으로 모델과 해당 매개변수를 선택하면 모델은 결국 테스트 세트에서 정말 좋은 결과를 보여줍니다. 그러나 동시에 새로운 데이터에 대한 결과는 일반적으로 매우 낮습니다. 나는 특히 외환 데이터에 대해 이야기하고 있습니다. 다른 영역에서는 이것이 완전히 정상적인 접근 방식입니다. rminer::holdout forex forex가 어떤 것도 크게 바꾸지 않기를 바랍니다.
 
트레이더 박사 :
rminer::holdout을 사용해 보겠습니다. 예를 들어 주셔서 감사합니다. 일반적으로 경험상 테스트 세트에서 최상의 결과를 얻는 방식으로 모델과 해당 매개변수를 선택하면 모델은 결국 테스트 세트에서 정말 좋은 결과를 보여줍니다. 그러나 동시에 새로운 데이터에 대한 결과는 일반적으로 매우 낮습니다. 나는 특히 외환 데이터에 대해 이야기하고 있습니다. 다른 영역에서는 이것이 완전히 정상적인 접근 방식입니다. Forex용 rminer::holdout이 크게 바뀌기를 바라지 않습니다.
그게 내가 말하는거야. 그리고 그는 이해하지 못했습니다.

Forex에서 좋은 테스트가 좋은 out-of-sample 성능을 의미하지는 않습니다. 이곳에서 사람들이 싸우고 있습니다. 그리고 여기가 바로 그것입니다. 우리는 최고의 결과(그리고 핏 마스터)를 취합니다. 친절한)
 
트레이더 박사 :
그러면 모델은 결국 테스트 샘플에서 정말 좋은 결과를 보여줄 것입니다. 그러나 동시에 새로운 데이터에 대한 결과는 일반적으로 매우 낮습니다. 나는 특히 외환 데이터에 대해 이야기하고 있습니다.
알렉세이 버나코프 :
Forex에서 좋은 테스트가 좋은 out-of-sample 성능을 의미하지는 않습니다. 이곳에서 사람들이 싸우고 있습니다.

시장은 자체 통계에 반대합니다 . 이것은 내가 실제로 확인한 이론입니다. 이것은 모델이 새로운 데이터에서 작동하지 않는 이유와 모든 사람이 지는 이유로 끝나는 모든 질문에 대한 답을 제공하는 유일한 이론입니다. 시장에 돈...

왜 그렇게 받아들이기 힘든가요?

오래된 지식과 습관의 짐이 실제로 새로운 정보에 대한 인식을 그렇게 많이 억제합니까?

모델 간의 성능 차이가 0.5%에서 5% 사이인 경우 모델에 왜 그렇게 집중합니까?

본질은 데이터 자체에 있기 때문에 어떤 모델도 여기에 도움이 되지 않습니다.

하나

이 사진을 여러 번 올렸지만 여전히....

구경하다! 이것은 두 네트워크 cum(buy.signal) - cum(sell.signal)의 매수 및 매도에 대한 누적 예측의 차이입니다. 이상적으로는 모델이 양호하면 파란색 차트가 가격과 상관관계가 있어야 합니다. 즉, 네트워크는 데이터를 잘 이해하고 적절하게 반응합니다. 실제로 우리가 보는 것????????

상관관계는 역이지만 구조는 동일하지만 방향에 문제가 있고 시장이 예측과 반대, 네트워크가 훈련된 통계와 반대이기 때문에 모델이 데이터를 이해하지 못한다고 말할 수 없습니다. 과거에...

이제 어떤 모델이 이것을 처리할 수 있는지 알려주세요. 여기서 어떤 교차 검증이 도움이 될까요? 샘플 외(새 데이터)에 대한 테스트가 뒤따르는 모든 모델 교육은 샘플 외에서 잘 작동하는 모델을 맞추는 것 이상은 아닙니다 . 그리고 모델을 학습할 때 절대적으로 새로운 데이터에서 모델을 지속적으로 확인합니다. 항상 배수구, 잘 보이죠?? 동의하다!! 왜 이런 일이 일어나는지 답을 드립니다

 

그리고 이것은 훈련 자체가 발생한 데이터가 있는 그래프입니까, 아니면 새로운 데이터에 대한 테스트일 뿐입니다. 훈련과 테스트 모두에 대해 한 번에 두 기간에 대한 그래프를 그리는 경우 데이터의 첫 번째(훈련) 부분에는 파란색과 회색 그래프가 완전히 일치하고 시작 부분과 함께 새로운 데이터, 역 상관 관계로의 급격한 전환이 있습니까?

모든 것이 그렇게 간단하다면 모든 모델을 훈련하고 예측을 뒤집는 것으로 충분할 것입니다. 불행히도 작동하지 않습니다.
새 데이터에 대해 0% 정확도를 제공하는 모델을 훈련하는 것은 100% 정확도를 달성하는 것만큼 어렵습니다. 예를 들어 기본적으로 동전을 던질 때 정확도는 50%이고 어떤 방향으로 수십 퍼센트를 이동하는 것은 동일한 복잡성의 작업입니다. 문제는 모델이 반대 결과를 제공한다는 것이 아니라 일부 막대에서는 결과가 정확하고 다른 막대에서는 틀릴 것이며 이 모든 것이 무작위이며 올바른 결과만 필터링할 수 없다는 것입니다.

그리고 예측 B에서 예측 S를 빼는 이유는 무엇입니까? 반대로 해야 할까요, SB? 그러면 상관관계가 갑자기 정확해집니다.

사유: