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

 
Aleksey Vyazmikin #:

그리고 업데이트 전에 조금 전에 게시했던 과거 코드 스크립트는 작동을 멈췄습니다.

library(patchwork)

설치되어 있나요?

 
Aleksey Vyazmikin #:

일반적으로 업데이트되면 오류조차도 쓰지 않지만 결과는 거의 동일합니다.

그것을 실행, 나는 같은 그림을 얻었다)))


나는 오류를 깨달았고, 거기에서 목표의 미래를 엿볼 수있었습니다 ... 네 ... 우리는 그립을 잃습니다.

이 줄을 교체해야 합니다.

dp <- с(diff(close),0)   

으로 대체해야 합니다.

dp <- tail(c(diff(close),0),nrow(X))


코드를 좀 더 읽기 쉽게 다시 작성했습니다.

close <- cumsum(rnorm(10000,sd = 0.00001))+100
par(mar=c(2,2,2,2))  ; plot(close,t="l")


D <- make_data(close)
tr <- 1:500
R <- make_rules(y = D$Y[tr] , x = D$X[tr,])
# head(R)
buy_rules <- R$condition[ R$pred==1 ]



plot(x = 1:2000,y = rep(NA,2000), ylim = c(-0.001,0.001)) 
for(i in 1:length(buy_rules)){
  cum_profit <- cumsum( D$diff_price[  eval(str2expression(buy_rules[i]))  ] )
  lines(cum_profit,col=8,lwd=1)}
for(i in 1:length(buy_rules)){
  cum_profit <- cumsum( D$diff_price[  eval(str2expression(buy_rules[i]))  ] )
      
      if(length(cum_profit)>30){
      ccor <- cor(cum_profit, 1:length(cum_profit))
      if(ccor>=0.95)  lines(cum_profit,col=i,lwd=2)
      }
}
abline(h = 0,col=2,lty=2)
gc(T,T)

헬퍼 함수

make_rules <- function(y, x){
  library(inTrees)  # ?inTrees::getRuleMetric()
  library(RRF)
  rf <- RRF(x = x,y = y,ntree=100)
  rule <- getRuleMetric(unique(extractRules(RF2List(rf),x)),x,y)
  rule <- data.frame(rule,stringsAsFactors = F)
  for(i in c(1,2,3,5)) rule[,i] <- as.numeric(rule[,i])
  return(rule)}
make_data <- function(close){
  sw <- embed(x = close,dimension = 10)[,10:1] #  make slide window data
  X <- t(apply(sw,1,scale)) #  normalase data
  
  dp <- tail(c(diff(close),0),nrow(X)) #  diff prices
  Y <- as.factor( ifelse(dp>=0,1,-1) ) #  target for classification
  res <- list(Y=Y,X=X,diff_price=dp)
  return(res)
}


 
Maxim Dmitrievsky #:

글쎄, 다른 평가 기준이 없다면 매개 변수의 안정성을 통해

를 통해 TS의 출력값을 시간 신호로 표현하고 엔트로피를 측정하여 무작위성과 비교할 수도 있습니다. TS가 일정한 주기로 반복되는 규칙성을 포착하면 이를 반영할 수 있습니다.

커스텀 FF 빌더에게는 유용할 수 있습니다.

가장 좋은 방법은 시간과 실제 테스트입니다. 모든 TC는 작동을 멈출 것입니다.

나는 이미 모든 것이 새로운 데이터에서 작동하지 않는 이유를 이미 이해했으며 무엇을해야할지 대략적으로 이해했습니다.

 
Aleksey Nikolayev #:

ONNX에서 ONNX에 대한 질문은 제가 접한 두 가지 문장을 병치하는 것에서 간단히 떠올랐습니다: 1) 모델 수집을 파이프라인으로 표현할 수 있고, 2) 파이프라인을 ONNX 포맷으로 변환할 수 있다는 것입니다.

이것이 실제로는 거의 불가능하다는 것은 분명합니다. 사실, 저는이 기술 전체의 근본적인 한계를 깨닫기 위해 그러한 가능성의 구현을 정확히 방해하는 것이 무엇인지 이해하고 싶습니다.

파일에 쓸 수 없는 것과 같은 한계와 데이터 유형(예: 데이터 프레임)에 대한 지원 부족과 같은 한계는 전혀 다른 문제입니다.

두 문장은 모두 사실입니다. 전처리를 포함한 모델을 가져오는 것은 가능합니다. 안타깝게도 모든 프레임워크에서 가능한 것은 아니며 가장 단순한 프레임워크에서만 가능합니다. TF/Keras는 전처리를 수행하는 첫 번째 NN 레이어를 구현합니다. 파이프라인+모델의 가장 풍부한 선택은 scikit-learn입니다. scl2onnx를 참조하세요.

진지한 기여자들은 ONNX가 전처리부터 시작하여 전체 파이프라인을 포함해야 한다는 것을 깨닫고 있는 것을 보면 반갑습니다. 프로덕션의 새로운 데이터는 학습과 동일한 전처리 단계를 거쳐야 합니다. 그렇지 않으면 ONNX 모델의 결과를 예측할 수 없게 됩니다.

이 방향은 빠르게 발전하고 있으며 이 문제는 곧 해결될 것이라고 생각합니다. 지금은 실험을 해봐야 합니다.

행운을 빕니다.

 
이 스레드와 관련이 없는 댓글은 "허용되지 않는 의사소통 방식"으로 이동되었습니다.
 
mytarmailS #:

실행했는데 같은 사진이 나왔습니다))


내 실수를 깨달은 나는 목표물에서 미래를 들여다 보았습니다... 네... 내 손길을 잃었습니다.

이 줄을 교체해야합니다.


가독성을 높이기 위해 코드를 약간 재작성했습니다.

보조 함수


수정된 코드를 시도합니다.

close <- cumsum(rnorm(10000,sd = 0.00001))+100
par(mar=c(2,2,2,2))  ; plot(close,t="l")


D <- make_data(close)
tr <- 1:500
R <- make_rules(y = D$Y[tr] , x = D$X[tr,])
#  head(R)
buy_rules <- R$condition[ R$pred==1 ]



plot(x = 1:2000,y = rep(NA,2000), ylim = c(-0.001,0.001)) 
for(i in 1:length(buy_rules)){
  cum_profit <- cumsum( D$diff_price[  eval(str2expression(buy_rules[i]))  ] )
  lines(cum_profit,col=8,lwd=1)}
for(i in 1:length(buy_rules)){
  cum_profit <- cumsum( D$diff_price[  eval(str2expression(buy_rules[i]))  ] )
  
  if(length(cum_profit)>30){
    ccor <- cor(cum_profit, 1:length(cum_profit))
    if(ccor>=0.95)  lines(cum_profit,col=i,lwd=2)
  }
}
abline(h = 0,col=2,lty=2)
gc(T,T)

make_rules <- function(y, x){
  library(inTrees)  # ?inTrees::getRuleMetric()
  library(RRF)
  rf <- RRF(x = x,y = y,ntree=100)
  rule <- getRuleMetric(unique(extractRules(RF2List(rf),x)),x,y)
  rule <- data.frame(rule,stringsAsFactors = F)
  for(i in c(1,2,3,5)) rule[,i] <- as.numeric(rule[,i])
  return(rule)}
make_data <- function(close){
  sw <- embed(x = close,dimension = 10)[,10:1] #  make slide window data
  X <- t(apply(sw,1,scale)) #  normalase data
  
  dp <- tail(c(diff(close),0),nrow(X)) #  diff prices
  Y <- as.factor( ifelse(dp>=0,1,-1) ) #  target for classification
  res <- list(Y=Y,X=X,diff_price=dp)
  return(res)
}

오류가 발생합니다.

> D <- make_data(close)
Error in make_data(close) : could not find function "make_data"
> source('~/.active-rstudio-document', echo=TRUE)

> close <- cumsum(rnorm(10000,sd = 0.00001))+100

> par(mar=c(2,2,2,2))  ; plot(close,t="l")

> D <- make_data(close)
Error in make_data(close) : could not find function "make_data"
> source('~/.active-rstudio-document', echo=TRUE)

> close <- cumsum(rnorm(10000,sd = 0.00001))+100

> par(mar=c(2,2,2,2))  ; plot(close,t="l")

> D <- make_data(close)
Error in make_data(close) : could not find function "make_data"
> 
 
Aleksey Vyazmikin #:

수정된 코드 시도하기

오류가 발생합니다.

함수를 먼저 선언한 다음 사용해야 하기 때문에...

지금 트롤링하는 건가요?
 
mytarmailS #:
함수를 먼저 선언한 다음 사용해야 하므로...

지금 트롤링하는 거야?

내가 어떻게 알았지...

그렇다면 이것은 오류입니다.

> D <- make_data(close)
Error in h(simpleError(msg, call)) : 
  ошибка при оценке аргумента '.data' при выборе метода для функции 'embed': argument ".data" is missing, with no default
 
RL에 관한 흥미로운 기사. https://habr.com/ru/articles/349800/
또한 이 스레드의 작성자와 다른 회원 간의 코메타륨에서 흥미로운 대화가 있습니다.
 
mytarmailS #:
RL에 관한 흥미로운 기사. h ttps:// habr.com/ru/articles/349800/
또한 이 스레드의 작성자와 다른 회원 간의 코메타륨에서 흥미로운 대화가 있습니다.

RL이라는 개념이 트레이딩 업무에 중복되지 않나요? 우리는 에이전트에 대한 환경의 영향이 있지만 에이전트가 환경에 대한 영향이 있습니까? 이 두 번째 영향력을 인위적으로 도입할 수 있을 것 같은데, 과연 합리적일까요?

이 기사의 두 가지 (또는 세 가지) 아이디어는 우리에게 전혀 불필요하지 않습니다. 손실 함수는 우리가 필요로하는 것을 정확히 반영해야하며 매끄럽고 단조로워 야한다는 것입니다. 우리의 경우에는 수익이어야 하며 모델의 매개 변수에 부드럽고 단조롭게 의존해야 합니다.

수익의 일부 아날로그의 부드러움은 아마도 (예를 들어 커널 스무딩과 같은 것을 통해) 어떻게 든 달성 할 수 있습니다. 하지만 단조로움에 대해서는 매우 의심스럽습니다.

사유: