커뮤니티
내가 만든 전략들과 지식을 공유하고 토론합니다.

팩터랭킹을 Z-score로 정규화시키기

LimSung Hyun 2020.08.18 12:40 조회수  856 추천 2

팩터에 따라 순위를 매길 경우 종목간 분포가 팩터별로 다르게 나타나기에


Z-score로 분포를 정규화한 후 랭킹을 매기는 것이 좀더 정확하다고 알고 있습니다.


블록코딩 혹은 자바스크립트상에서 Z-score에 따른 팩터별 랭킹을 정규화시키는 것이 가능한가요?


R에서는 어렵지 않다고 알고 있는데 자바스크립트나 블록코딩에서도 팩터분포 정규화가 가능한지 어떤 방법이 있는지 질문드립니다.

댓글 5
혹시 조금만 더 자세하게 설명해주실 수 있나요..? 궁금해서..
koa55 2020.08.18 19:41
https://hyunyulhenry.github.io/quant_cookbook/%ED%80%80%ED%8A%B8-%EC%A0%84%EB%9E%B5%EC%9D%84-%EC%9D%B4%EC%9A%A9%ED%95%9C-%EC%A2%85%EB%AA%A9%EC%84%A0%EC%A0%95-%EC%8B%AC%ED%99%94.html

이 사이트의 10.3.3 팩터의 결합방법
을 보고 질문드렸습니다.

10.3.3절을 보시면 랭킹별로 종목의 분포가 다르기에, 이를 그대로 통합랭킹에 사용하면 왜곡된 결과가 나온다고 합니다.(왜 왜곡되는지까지는 모르겠습니다. 다만 특정 팩터에 의해 생기는 종목 수의 '분포'라는 것이 꽤 중요한 정보라는 건 직관적으로 알겠습니다만) 

이러한 왜곡을 해결하기 위해 Z-score로 각 팩터에 해당하는 랭킹을 표준화하는 것인데,

https://ko.wikipedia.org/wiki/%ED%91%9C%EC%A4%80_%EC%A0%90%EC%88%98

위키백과에 따르면 Z-score=(원점수-평균)/표준편차 라고 나옵니다. 즉 원래의 팩터랭킹이 원점수를 가지고 매긴 것이고, Z-score로 랭킹을 매기면 각 팩터에 의한 종목의 분포가 정규화된다는 것이죠

http://hleecaster.com/ml-normalization-concept/

위 사이트에서도 분포의 정규화 개념에 도움이 될만한 글이 있어서 같이 올립니다.

LimSung Hyun 2020.08.18 19:58
예를 들자면 유니버스 종목들의 per점수 배열을 자바스크립트상에서 만들고 각각의 per점수를 Z-score-(per점수-per점수평균)/per점수 표준편차-배열을 만든 후 이 점수에 따라 통합랭킹을 매기면 되지 않을까~싶은데

제가 인제 자바스크립트를 배우는 와중이라... 통합랭킹함수 만드는 법이나 배열 만드는 법을 잘 몰라서요; 하나씩 찾아보고 있는데 두개를 같이 하는 법을 모르겠네요
LimSung Hyun 2020.08.18 20:05
내용은 대강 이해했습니다. 팩터 간 순위가 같더라도 해당 팩터 내에서 상대적인 위치가 다르니까
정규화해서 결합하자는게 요지 같은데..근데 제 기억에는 정규화라는게 정규분포일 때 쓰는걸로 알고있는데 
모든 팩터에서 정규화를 해도 되는건지 잘 모르겠네요.. 통계를 좀 잊어서 제가 잘못 기억하는 걸지도;;
일단 한번 생각해보겠습니다! 생각해 볼 거리를 주셔서 감사합니다 ㅎㅎ
koa55 2020.08.18 20:29
하긴 꼭 '정규분포'를 기준으로 정규화할 필요는 없겠네요. 사이트 예시에 나온것 처럼 최대,최소값을 이용한 정규화도 있고... 각 팩터의 특성에 맞는 분포를 기준으로 삼는 게 더 정확할 수 있을 거 같습니다.
LimSung Hyun 2020.08.18 20:57
댓글 등록을 위해서 로그인해주세요.
 
최신 게시글