CMF 활용 전략

CMF (Chaikin Money Flow)는 거래량과 가격의 조합으로 구성된 기술적 지표입니다. 아래는 CMF를 활용한 매매 방법입니다.

  • CMF 분석
    CMF가 0보다 크면 매수 자금이 많이 흐르고 있다는 것을 나타내며, 0보다 작으면 매도 자금이 많이 흐르고 있다는 것을 나타냅니다. 따라서 CMF가 양수인 경우 매수를, 음수인 경우 매도를 고려할 수 있습니다.

  • CMF와 가격 차트 비교
    CMF와 가격 차트를 함께 분석하여 가격과 자금 흐름 사이의 관계를 파악할 수 있습니다. 예로 가격이 상승하면서 CMF도 양수인 경우 매수, 반대로 가격이 하락하면서 CMF도 음수인 경우 매도를 고려할 수 있습니다.

  • RSI와 함께 사용
    RSI는 주식의 과매수와 과매도 상태를 파악하는 데 사용됩니다. RSI가 70을 넘으면 주식이 과매수 상태에 있다는 것을 의미하며 과매수 상태에서는 매도를 고려할 수 있습니다. RSI가 30을 밑돌면 주식이 과매도 상태에 있다는 것을 의미하고 매수 기회로 볼 수 있습니다. 따라서 아래와 같이 CMF와 RSI를 조합하여 매매 타점을 고민해 볼 수 있습니다.

    CMF가 양수이고 RSI가 30 아래에 있는 경우 매수.
    CMF가 음수이고 RSI가 70 위에 있는 경우 매도.

  • OBV와 함께 사용
    OBV는 거래량이 증가하면 주가가 상승할 가능성이 높고, 거래량이 감소하면 주가가 하락할 가능성이 높다는 것을 나타냅니다.

    CMF가 양수이고 OBV가 같이 상승하는 경우 매수 신호가 됩니다.
    CMF가 음수이고 OBV가 같이 하락하는 경우 매도 신호가 됩니다.

CMF와 OBV의 사용 예
CMF와 OBV 사용 예

 

CMF (Chaikin Money Flow) 란

CMF (Chaikin Money Flow) 보조지표는 주식 시장에서 거래량과 가격의 조합으로 구성된 지표로, 시장에서 자금 흐름을 추적합니다. CMF는 주식의 가격과 거래량을 동시에 고려하기 때문에 가격 변동성이 높은 시장에서도 효과적으로 사용될 수 있습니다.

CMF를 계산하는 방법은 다음과 같습니다.

CMF = (현재 거래일 종가 - 현재 거래일 중간 가격) ÷ (현재 거래일 고가 - 현재 거래일 저가) × 거래량

20일 이동평균선 = 최근 20일 동안의 CMF 값의 평균

CMF 보조지표는 0을 기준으로 양수와 음수로 나뉘며, 양수 값은 매수 자금의 증가를 나타내고 음수 값은 매도 자금의 증가를 나타냅니다. 또한, CMF 값의 크기는 거래량과 가격의 크기에 따라 결정되며, 큰 값은 매수 또는 매도 자금이 많이 흐르고 있다는 것을 나타냅니다.

 

CMF와 비슷한 유형의 지표

  • MFI(Money Flow Index)
    CMF와 유사하게, MFI는 가격과 거래량을 고려하여 자금 흐름을 계산합니다. MFI는 CMF와 달리, 가격의 일정 비율을 사용하여 계산합니다.

  • OBV(On-Balance Volume)
    OBV는 주가의 상승 또는 하락에 따라 거래량의 양적 변화를 측정합니다. OBV는 주식 가격의 상승 또는 하락이 일어날 때 거래량의 양적 변화를 통해 추세를 파악할 수 있습니다.

  • A/D Line(Accumulation/Distribution Line)
    A/D Line은 거래량과 가격을 조합하여 자금 흐름을 계산합니다. A/D Line은 CMF와 유사하지만, 거래량과 가격의 비율에 가중치를 부여하지 않습니다.

CMF 를 구하는 Python 함수

def chaikin_money_flow(df, n=20):
    # Typical price
    tp = (df['high'] + df['low'] + df['close']) / 3.0
    # Money flow volume
    mf_volume = tp * df['volume']
    # Money flow ratio
    mf_ratio = (2 * tp - df['high'] - df['low']) / (df['high'] - df['low'])
    # Chaikin Money Flow
    cmf = mf_ratio * mf_volume
    # Rolling sum of CMF and rolling sum of volume
    cmf_sum = cmf.rolling(n).sum()
    volume_sum = df['volume'].rolling(n).sum()
    # Chaikin Money Flow Oscillator
    cmf_osc = cmf_sum / volume_sum
    
    return cmf_osc


# 함수 사용
import pandas as pd
import numpy as np

# 임의 데이터 생성
dates = pd.date_range('20220101', periods=100)
data = pd.DataFrame({
    'open': np.random.rand(100) * 100,
    'high': np.random.rand(100) * 100,
    'low': np.random.rand(100) * 100,
    'close': np.random.rand(100) * 100,
    'volume': np.random.rand(100) * 1000000
}, index=dates)

cmf_oscillator = chaikin_money_flow(data, n=20)
print(cmf_oscillator)


# 실행 결과
2022-01-01         NaN
2022-01-02         NaN
2022-01-03         NaN
2022-01-04         NaN
2022-01-05         NaN
                ...   
2022-04-06    0.212265
2022-04-07    0.213726
2022-04-08    0.214601
2022-04-09    0.214377
2022-04-10    0.216538
Freq: D, Length: 100, dtype: float64

+ Recent posts