본문 바로가기

금융공학/투자포트폴리오

[데이터 전처리] Feature Engineering

출처 : AIT-2

 

" 투자데이터의 Features를 활용해 Alpha를 도출하자 "

 

Feature Engineering 의 기본 개념

https://developers.google.com/machine-learning/crash-course/representation/feature-engineering

 

표현: 특성 추출  |  머신러닝 단기집중과정  |  Google Developers

예상 시간: 9분 기존의 프로그래밍에서는 코드에 중점을 두었습니다. 머신러닝 프로젝트에서는 표현에 중점을 둡니다. 즉, 개발자는 특성을 추가하고 개선하여 모델을 다듬어 나갑니다. 원시 데

developers.google.com

구글 개발자 사이트에서 특성추출에 대한 대략적인 단계와 개념을 확인할 수 있다. 한 마디로, 머신러닝에 넣을 학습데이터를 만들기 위해서 비정제 데이터를 피쳐벡터 (범주화된 데이터)로 만든느 과정을 특성추출 과정이라고 일컫는다.

 

Features and Alphas

Features : alpha factors가 되기엔 너무 general 한 경우

그래서 Features는 서로 비슷하지만, 그 자체로 예측성(predictive)을 띄고 있지는 않다.

 

Alpha Factors : Signals. 미래 주식 수익률이 +- 일지, 얼마나 +- 일지 알려주는 지표

 

 

About Good Feature 

좋은 feature는 보통 다른 feature들이나 factors와 결합되어 사용되거나, other features를 쪼개는 데 사용한다. 그러니까 쉽게 이야기해서  응용연산을 해야지만 좋은 feature가 될 수 있다는 것이다. 예로 들면, 우리가 잘 알고 있는 재무건전성 지표들 (ROA, ROI, P/E) 등도 좋은 예가 될 수 있다.

Good Feature들은 " Conditional Factors"가 될 수 있는데, idiosyncratic volatility가 그 예시 중 하나다. 사실 변동성(volatility)자체만 가지고 미래 수익률의 방향성을 파악할 수 없기 때문에 그 자체로는 유의미한 정보가 아니다. 그러나, 분명히 idiosyncratic volatility는 모멘텀이나 리버스 시그널을 더욱 확장(magnifying) 하는 역할을 한다.

따라서 다른 factor, feature를 같이 활용해야 미래 수익률에 대해 예측지표로서 의미가 있다. features도 다른 features랑 합해지면 alpha factor가 될 수 있다.

 

 

2 Universal Quantum Features

퀀트 리서치와 머신러닝 입력값으로서 많이 사용되는 features인 Stock Volatility, Stock dollar volume를 소개한다. 일종의 conditional factor로 다른 predictive features를 조정(adjust)하는 역할을 한다. 예를 들면,

 

ex) 일정기간 내에 거래량이 많아지는 경우 (Higher dollar volume over a window time), 이 높은 거래량 데이터는 모멘텀 팩터가 될 수 있다. 거래량이 클수록 모멘텀적으로는 더 유의미하기 때문이다.

 

그래서 Stock dollar volume (거래액) , Stock Vol을 1개월, 6개월 일 평균 데이터를 평균치로 도출하여 useful features로 활용 할 수 있다.

 

 

The Term market regimes

특정 기간 동안 주식의 행동에 광범위하게 영향을 미치는 marketing addition.

Market regimes는 시간에 따라 변해서 features를 추출하고, 시장상황의 변화를 잘 찾을 수 있다.

 

2 market regime feaures. : Market dispersion(분산), market volatility

시장 분산은 주식의 단면 및 주식의 분산 정도를 보여준다. (market dispersion looks at the cross-section of stocks and how spread out they are.)

 

Top-performing lowest-performing stcok on a single day를 매일 계산 했을 때, 날마다 the difference는 매일 달라진다

그래서 그 날의 최고수익률종목 최저수익률 종목간의 차가 그렇게 크지 않으면, 사실  long or short할 정확한 종목을 선정하는게 그닥 의미있는 일은 아니다. (there isn't much benefit from correctly the correct stocks to go long or short.)

 

그런데 만약 두 종목 간의 차이가 크다면, long or short 포지션을 취할 종목을 선정하는 일이 아주 중요해진다. market dispersion은 보통 표준편차를 의미한다. 이를 시각화했을 때, 그 날 하루의 stock universe에서 중앙으로부터 얼마나 데이터들이 퍼져있는지 확인 할 수 있다. 

 

Market dispersion

Market dispersion은 투자자들이 만들어낸 각 종목 간 차이(distiction)을 측정한다. 그래서 Cross-sectional dispersion, 횡단면 분산, 그러니까 각 종목에 대한 분산이 낮을수록 모든 종목은 서로 correlated 되어있다고 볼 수 있다. 만약 Major급 종목이 상승하면, 다른 종목들도 따라서 상승한다는 의미다. 반면 각 종목에 대한 분산(cross-sectional dispersion) 이 높을수록 각 종목들의 움직임은 서로 독립적일 가능성이 크다. 그래서 common factors of stocks보다는 idiosyncratic aspects of stocks에 집중해야한다. 그러니까 전체적인 주식들의 움직임보다는, 각 개별 주식의 특이한 움직임을 캐치해야 의미 있는 알파팩터를 얻을 수 있다.

 

Market Volatility

Market vol은 1개월에서 6개월까지 time horizon을 활용할 것이다.

 

 

 

Other Useful Features

Sector and Industries

Sector is a major factor that affects stock movements.

 

섹터나 산업에 대한 분류 역시 또 하나의 features로 활용할 수 있는데,  같은 섹터에 있는 종목들은 같은 방향으로 같이 움직이는 경향이 있다. 또한 일부 alpha factors는 섹터에 따라서 유용한 지표가 될 수도, 아닐수도 있다. 

예로 들어, value factor는 은행에 있어서는 그닥 의미 없는 지표인데, 그 이유는 은행과 같은 금융섹터 종목들은 다른 회사들과 다른 방식으로 valued 되기 때문이다. 은행은 products를 만들어서 파는 게 아니기 때문에 (그 상품"판매"의 의미가 다른 산업과는 다름) Return on sales가 은행주에서는 반영되지 않는다.  그러나 ROS는 소비재를 판매하는 회사에서는 중요한 지표다. 

 

이렇듯 각 섹터를 features로 포함하고 머신러닝을 실행하면, 어떤 feature가 어떤 산업, 섹터에서 유의미한지 도출할 수 있다.

+ 전처리 할 때 어느정도의 섹터 노출에 대해 중화시킬 필요가 있다. (neutralizing) 

 

# 매출 대비 수익률 Return On Sale (ROS)

매출 대비 수익률(ROS)은 기업의 운영 효율성을 평가하는 데 사용되는 비율입니다. 이 측정치는 매출 1달러당 얼마나 많은 이익을 창출하고 있는지 통찰력을 제공합니다. ROS가 증가하면 기업이 더 효율적으로 성장하고 있다는 것을 의미하며, ROS가 감소하면 곧 닥쳐올 재정난을 예고할 수 있습니다. ROS는 기업의 영업이익률과 매우 밀접한 관련이 있습니다.

https://www.investopedia.com/terms/r/ros.asp

 

Understanding Return on Sales (ROS)

Return on sales (ROS) is a financial ratio used to evaluate a company's operational efficiency.

www.investopedia.com

 

 

Date Information

날짜 정보에 대한 2가지의 이상징후가 있는데 이미 학회나 논문에서도 연구가 잘 된 사례 몇 가지에 대해 소개한다.

 

Window Dressing 

각 분기 후반기 마다 (분기말 보고서 나올 때 쯔음) 퍼포먼스를 갑자기 올리는 경우.

이 시기에는 실적이 좋지 않은 종목은 팔고, 실적이 좋은 종목을 산다. 그 결과 투자자들에게 stock holdings에 대한 보고를 할때, 평소에 가지고 있던 포트폴리오보다 실적이 더 좋아보이는 효과가 발생한다. 그래서 단기적으로 수익률이 높게 보고되는 효과.

 

January Effect

투자자들이 연말에는 실적이 낮은 주식종목을 팔고, 연초에 다시 해당 종목을 구매한다. 

** 그들은 손실을 실현하기 위해, 다른 자본 이득들을 상쇄하기 위해 이것을 할 수 있습니다.

** 당신은 최근의 거래 패턴을 알고 있고 우리가 1월에 건너갈 것이라는 것을 아는 것이 거래 신호에 유익할 수 있다고 상상할 수 있습니다.

➡️ 설명이 명확하지 않아 네이버 검색

 

https://terms.naver.com/entry.nhn?docId=1221403&cid=40942&categoryId=31830

 

1월 효과

1월의 주가 상승률이 다른 달에 비해 상대적으로 높게 나타나는 현상. 주가가 뚜렷한 이유도 없이 월별·월중·일별 등 일정한 시기에 따라 강세나 약세를 보이는 '계절적 이례 현상' 가운데 하나

terms.naver.com

1월 효과란, 주가가 뚜렷한 이유도 없이 월별·월중·일별 등 일정한 시기에 따라 강세나 약세를 보이는 '계절적 이례 현상' 가운데 하나로, 1월의 주가 상승률이 다른 달에 비해 상대적으로 높게 나타나는 현상을 말한다

 

전문가들은 이러한 현상을 주식시장의 비효율성 때문으로 보고 있는데, 대표적 원인으로 다음과 요인들을 들고 있다.

  1. 각종 정부 정책이 1월에 발표되고,
  2. 경제 면에서도 낙관적인 수치가 제시되며,
  3. 그 해의 주식시장 전망이 밝게 예견되어 투자자들의 투자 심리가 고조되고,
  4. 시중자금이 풍부하다는 점 등이다.

➡️  이러한 특성을 이용해, 1월에 매수세가 강력할 것이라는 정보를 기반으로 feature로 반영할 수 있다!

 

 

 

 

Different trading activity at the end of each month or on different days of the week.

단기투자자는 보통 주말 직전에 포지션 일부를 청산하는 경우가 있다. 따라서 한 주의 시작 또는 끝에 트레이딩이 활성화 되는 경우가 많다. 예전에 트레이딩연습 과목 들었을 때도, 다른 팀이 이 주제를 가지고 발표를 했던 적이 있다. 확실히 주가가 월, 금에 가장 많이 오르고 내렸던걸로 기억한다. 그래서 화요일이 최고점인 경향이 있으니.. 화요일에 팔아야지 하고 생각했던 기억이 난다.

 

이러한 Calender, Seasonal 효과를 고려해 date feature를 꼭  머신러닝 feature에 포함시킬 필요가 있다.

이때 date feature로 연말, 분기말, 주말, 연초, 분기초, 월요일을 표시하는 feature를 만들 수 있다.

 

 

 


 

Feature 또는 일반 factor를 만들 때는 alpha와 달리 특정 방향성으로 한정 지을 필요는 없다.

feature는 주식 하락 시그널이든 상승 시그널이든 캐치할 수 있으면 된다.

왜냐하면 Features는 "순수한 conditional factors"로 그저 다른 factors, features와 상호적으로 사용되기 때문.

그래서 특정 연초에는 비록 january effect에 따라 가격이 변하지 않았다고 하더라도,

연말에 거래된 주식거래 데이터에서 다른 유의한 정보로 활용할 수  있다! 

 

 


 

Machnine Learning Output : Labels or Targets 

Inputs : Features ➡️ Outputs : Labels or Targets

 

금융데이터 raw data 그 자체는 미미한 signal과 노이즈가 매우 많기 때문에, 머신러닝시 컴퓨터가 학습할 수 있는 더욱 쉬운 feature를 만들어야한다. 예로 들어, + 수익률은 1, - 수익률은 0으로 두는 방식으로 labeling을 할 수 있다. 그러나 이 경우에 small positive return과 large positive return을 구별할 수 없으므로 이런 경우 구간화, 세세하게 범주화된 labeling을 할 수 있다.

 

그렇다면 무엇을 기준으로 구간을 정할 것이냐?

market regime(return, vol) 은 실시간으로 변하는 값이다. 따라서 constant한 기준이 아니라, 데이터에 따라 바뀔 수 있는, 상대적인 기준으로 구간을 정하는 것이 바람직하다.

 

 

Quantize the target >> 목표값을 정량화한다.

대표적인 예시로 4분위 수로 수익률 데이터를 catergorizing 을 하는 방법이 있다.

이를 통해 변화 하는 데이터에도 변동성, market dispersion, market risks를 구할 수 있다. 

 

 

 

Wrap-up

- Features는 Alpha factors 보다 범용적이며, 다른 features로 쪼개지거나 벡터 데이터를 만들 때 사용되곤 한다.

- 2 Universal Quantum Features : stock volatility, stock dollar volume

- 2 Regime Features : Market Volatility, Market Dispersion

- Other Useful Features : 산업, 섹터구분 및 날짜

- Creat Targets : Quantizing Foray Returns. (실시간으로 변하는 수익률 데이터 정량화) 

➡️ market regimes가 변화하더라도 타겟을 구할 수 있고, 머신러닝에 적합한 학습데이터로 사용 가능.