1. 학습
  2. /
  3. 강의
  4. /
  5. R로 배우는 금융 트레이딩

Connected

연습 문제

직접 지표 만들기 - II

RSI도 쓸 만하지만, 지표로서는 다소 구식인 면이 있습니다. 이 연습에서는 또 다른 지표를 단순화한 버전을 처음부터 직접 코딩해 보겠습니다. 이 지표는 정량 분석 디렉터인 David Varadi가 고안한 David Varadi Oscillator (DVO)입니다.

이 오실레이터의 목적은 RSI와 비슷하게, 일시적인 하락에서는 매수 기회를, 일시적인 상승 추세에서는 매도 기회를 포착하는 것입니다. 필수 시장 데이터 외에, 오실레이터 함수는 두 개의 룩백 기간을 입력으로 받습니다.

먼저, 종가를 고가와 저가의 평균으로 나눈 비율을 계산합니다. 다음으로, 그 값에 SMA를 적용해 노이즈를 완화하는데, 보통 이때는 2일처럼 매우 짧은 기간을 사용합니다. 마지막으로 runPercentRank() 함수를 사용해 이 평균 비율의 구간 백분위 순위를 계산하고, 0–100 범위의 값으로 바꾸기 위해 100을 곱합니다.

표준화 시험 후에 학생들이 백분위 점수를 받는 방식을 떠올려 보세요(예: 수학에서 800점을 받았다면 전국 95백분위일 수 있습니다). runPercentRank()는 이와 같은 일을 시간 흐름에 따라 수행합니다. 이 지표는 사용자가 지정한 과거 구간의 맥락에서 최신 관측치의 순위를 제공합니다. 예를 들어, 룩백 기간을 126으로 사용할 때 runPercentRank 값이 0.90이라면, 과거 125개 관측치와 자기 자신을 비교했을 때 90백분위에 해당함을 의미합니다.

여러분의 과제는 이 지표를 구현해 DVO로 저장하는 것입니다. 필요한 코드 일부가 제공되어 있으며, quantstrat, TTR, quantmod 패키지는 워크스페이스에 로드되어 있습니다.

지침

100 XP
  • 위에서 설명한 지표를 위한 함수 DVO를 만들고 이름을 지정하세요. 이 함수의 세 인자는 HLC, navg(기본값 2), percentlookback(기본값 126)입니다.
  • HLC의 종가(Cl())를 고가(Hi())와 저가(Lo())의 평균으로 나눈 비율은 이미 계산되어 있습니다.
  • SMA()를 사용해 이 비율의 이동 평균을 구현하고, navg 인자로 기간을 설정하세요. 결과를 avgratio로 저장하세요.
  • runPercentRank()를 사용해 avgratio에 대한 백분위 순위 시스템을 구현하세요.