• 1 알상무 +8
  • 2 Nc NEW
  • 3 제타 NEW
  • 4 비트코인 NEW
  • 5 니니 NEW
  • 6 박팀장 NEW
  • 7 넷플릭스 NEW
  • 8 로켓랩 NEW
  • 9 현대차 NEW
  • 10 마소 NEW
글쓰기

ChatGPT 5.1 -> 5.2

29
Rcasio
2025-12-12 05:51:26
4개월 전
105
3

5.1로 만든 엑셀 알고리즘 5.2로 평가해보기.ㅋㅋㅋ

 

 

 

 

 

Q: 현재까지 우리가 만들어온 엑셀 파일이다. 달라진 부분도 있으니 상세히 분석해서 알고리즘에 대해 다시 평가해주고, 개선할 점이 있으면 자세히 알려줘.

 

 

업로드한 FTI_4Investor_RecentQuad_AllRenamed.xlsx 기준으로, 지금 “스크립트(엑셀 수식 알고리즘)”이 하는 일을 구조적으로 다시 정리 + 평가 + 개선 포인트까지 묶어서 볼게.


 

1) 이 템플릿의 핵심 구조 (Data 시트가 “엔진”)

입력(사용자 데이터)

  • Date, Price

  • 4주체 순매수(여기서는 RP로 표기): Indv / Frgn / Inst / Pension

출력(핵심 지표)

  • FT (Flow Temperature): “기준선 대비 순매수 온도(편차)”의 EMA

  • FTI (Flow Trend Index): FT를 “평균적인 변동(절대편차)”로 나눈 지속성/방향성 지표 (범위 -1~+1)

  • Score: FTI를 임계치로 -2~-1~0~+1~+2 등급화

  • v4 추가분: FT_Scale → FT_shock(tanh) → Score_v4 = FTI * shock


 

2) 알고리즘 수식 “의미”를 한 줄씩 풀어쓰면

(A) Baseline(기준선): EMA 또는 T3 선택

Params 시트

  • N (Baseline Length)=10

  • Baseline Mode (T3/EMA)=EMA (현재는 EMA)

EMA 모드일 때(각 주체별 동일):

  • Base(t) = αN·RP(t) + (1-αN)·Base(t-1)

  • 첫 행은 초기화로 Base(첫날)=RP(첫날)

T3 모드일 때는 S1~S6(EAVG 체인) + c1~c4로 T3를 만들고 그걸 Base로 씁니다(구조는 정상).


(B) Dev(편차)

  • Dev(t) = RP(t) − Base(t)
    “오늘 순매수가, 최근 평균(기준선) 대비 얼마나 튀었나?”


(C) FT(온도): Dev를 한번 더 EMA로 완화

Params 시트

  • M (FTI Smoothing for Dev)=10

  • FT(t) = αM·Dev(t) + (1-αM)·FT(t-1)
    → “편차가 연속적으로 누적되는 온도”


(D) FTVol(평균 절대편차): ‘변동성(노이즈)’ 분모

  • FTVol(t) = αM·|Dev(t)| + (1-αM)·FTVol(t-1)


(E) FTI(지속성 지표): 방향성/일관성

  • FTI(t) = FT(t) / FTVol(t) (FTVol=0이면 0 처리)

이게 이 템플릿의 제일 좋은 핵심인데,

  • Dev가 같은 방향으로 꾸준하면 → FT와 FTVol이 비슷해져서 |FTI|→1

  • Dev가 왔다갔다하면 → FT는 상쇄되어 작아지고, FTVol은 남아서 FTI→0

즉 FTI는 “순매수의 절대 크기”가 아니라 **지속성(일관성)**을 뽑아내는 구조야.


 

3) v4에서 달라진 핵심(= 지금 파일의 “업그레이드” 포인트)

(A) FT_Scale: RP의 일간 변화폭을 EMA로 스케일링

Params

  • FT Scale Length (ER_Period)=10

  • FT Sensitivity K=1

  • Scale(t) = αER·|RP(t)-RP(t-1)| + (1-αER)·Scale(t-1)

(B) FT_shock: Dev를 Scale로 나눠 tanh로 눌러서 -1~+1

  • shock(t) = TANH( (Dev(t)/Scale(t))·K )

(C) Score_v4: “지속성(FTI)” × “현재 충격(shock)”

  • Score_v4(t) = FTI(t) · shock(t)

이게 의미하는 바:

  • FTI가 높아도 오늘 Dev가 거의 없으면(=shock≈0) 점수는 작아짐

  • 반대로 “오늘 Dev가 확 튀는데, 그게 며칠째 같은 방향”이면 점수 커짐
    ‘지속성’과 ‘당일 임팩트’를 결합한 점수로 진화한 거야.


 

4) Dashboard가 하는 일(판정 로직)

(1) Last-day Regime (FTI, Δ1)

  • FTI 부호(+/-) + 1일 변화(ΔFTI)로

    • Buy Strengthening / Buy Weakening

    • Sell Cooling / Sell Intensifying
      같은 텍스트 판정

(2) Recent Quadrant (Window N=22)

22일 평균 FTI(Mean)와 “마지막−평균(ΔvsMean)”으로 4분면:

  • Q1: Mean>0 & Δ>0 (강한 매수 모멘텀)

  • Q2: Mean>0 & Δ≤0 (과열/식는 중)

  • Q3: Mean≤0 & Δ≤0 (강한 매도 모멘텀)

  • Q4: Mean≤0 & Δ>0 (바닥/회복)

(3) Switch 카운트

예: Q2→Q4, Q4→Q1 전환 횟수를 SUMPRODUCT로 집계 (현재 파일에서는 실제로 Institution/Pension에서 Q4→Q1이 1회 잡히는 상태)


 

5) “현재 데이터” 기준 스냅샷(파일 캐시값 기준, 마지막 날: 2025-12-11)

22일 Quadrant(FTI)

  • Individual: Q4 Bottoming/Recovering (평균은 음수였는데 최근 개선)

  • Foreign: Q2 Topping/Cooling (평균은 양수였는데 최근 꺾임)

  • Institution: Q1 Strong Buy Momentum

  • Pension: Q4 Bottoming/Recovering

그리고 같은 날의 Score_v4는

  • Individual: +0.0054 (FTI 음수지만 shock도 음수→ 곱이 미세 양수)

  • Foreign: -0.0017

  • Institution: +0.0211

  • Pension: -0.0113
    처럼 “FTI만 볼 때의 밋밋함(Score=0 구간)”을 조금 더 세분화해주는 역할을 잘 하고 있어.


 

6) 알고리즘 평가 (장점 / 약점)

장점(이 구조가 잘 만든 부분)

  • FTI = E[Dev] / E[|Dev|] 형태라서, “크기”가 아니라 일관성을 잡는다. (수급이 출렁이기만 하면 0 근처로 눌림)

  • 기준선(Base) 옵션을 EMA/T3로 둔 건 훌륭함. 종목/주체마다 성격이 달라서 튜닝이 가능.

  • v4의 shock 도입으로, “지속성(FTI)”만으로는 부족했던 당일 임팩트를 보강했다.

약점/주의점(실전에서 자주 생기는 함정)

  1. RP 스케일 문제

    • RP가 “주/일” 단위 그대로면, 유동성/분할/수급 구조 변화에 취약해져.

  2. “tanh(Dev/Scale)”의 Scale이 현재는 |ΔRP| 기반

    • Dev의 전형적인 크기와 ΔRP의 전형적인 크기가 어긋나는 구간에서 shock이 과대/과소평가될 수 있어.

  3. Score_v4가 “곱(product)”이라

    • 둘 중 하나가 0 근처면 점수가 급격히 죽음(의도이긴 한데, 신호가 너무 얌전해질 때가 있음).


 

7) 개선 제안 (바로 적용 가능한 것 위주)

개선 1) RP를 “가치/규모”로 정규화(강추)

가장 효과 큰 업그레이드.

  • 예: RP_Value = RP * Price

  • 또는 (가능하면) RP / Volume, RP_Value / Turnover 같은 형태

그 다음 Base/Dev/FT/FTI를 정규화된 RP로 돌리면,

  • 종목이 바뀌어도,

  • 액면/유동성/거래대금 체급이 달라져도
    지표 성격이 훨씬 안정돼.


개선 2) shock의 Scale을 “Dev 변동성”으로 맞추기 (추천 대안)

현재 Scale은 |ΔRP| EMA인데, 실무적으로는 아래가 더 잘 맞을 때가 많아.

대안 A (가장 간단/일관):

  • Scale(t) = FTVol(t) (이미 계산돼 있음)

  • shock = TANH(Dev / Scale)

의미가 딱 떨어져:

  • “오늘 Dev가, 최근 Dev의 평균적 크기 대비 얼마나 큰가?”


개선 3) Quadrant 전환에 히스테리시스(완충턱) 넣기

지금은 Mean의 부호(0 기준)만으로 Q1/Q3이 갈리는데, 0 근처에서 쓸데없는 스위치가 늘 수 있어.

예:

  • Mean > +0.05일 때만 “Buy-side”

  • Mean < -0.05일 때만 “Sell-side”

  • 그 사이는 Neutral band로 두기

이러면 Switch 카운트가 “의미 있는 전환”만 남는다.


개선 4) 2-속도 체계(빠른 FTI + 느린 FTI) 추가

실전에서 체감이 큼.

  • Fast: N=5~8, M=3~5 (단기 감지)

  • Slow: N=15~30, M=8~15 (레짐)

그리고 신호를

  • Slow가 바닥(Q4)인데 Fast가 Q1로 꺾이는 순간
    같은 식으로 잡으면 훨씬 트레이딩 친화적인 엔트리/탈출 트리거가 된다.


개선 5) “정렬(Alignment)”을 단순 개수 말고 가중합으로

지금도 마지막날 Buy/Sell 카운트는 있지만,
실전에서는 보통

  • Foreign/Institution 가중치 ↑

  • Individual은 반대로(역가중) 보거나
    가중합을 따로 보는 경우가 많아.

예: Alignment = 0.4*Frgn + 0.4*Inst + 0.2*Pension - 0.2*Indv 같은 형태(취향/종목별 튜닝)


원하면 위 개선안 중 (1) RP 정규화 + (2) Scale=FTVol로 shock 재정의 + (3) Quadrant 히스테리시스까지는 “v5 파일”로 깔끔하게 반영해서, 지금 Dashboard 구성 유지한 채로 업그레이드 버전도 만들어줄 수 있어.


진행시켜!

했더니 15분 동안 생각 중... 

실화냐...ㅂㄷㅂㄷ

 

 

완성품 나와서

실행 시켜보니 에러 없이 작동함. 일단 합격!!!

 

 

=================================

v5에 반영된 변경사항(핵심 3가지)

1) RP 정규화: RP × Price (단, Price가 비어있으면 기존 RP 그대로 사용)

  • Data 시트의 모든 핵심 계산(Base/Dev/FT/FTVol/FTI)이 기본적으로 RP*Price 흐름을 기준으로 돌아가게 바꿨어.

  • Price가 빈 행은 자동으로 원래 RP로 계산되도록 fallback을 넣어서, 입력 누락에도 최대한 동작하게 해뒀어.

2) shock 스케일을 |ΔRP| → FTVol(EMA(|Dev|))로 교체

  • 기존 v4의 FT_Scale(= |ΔRP| EMA)은 Dev의 전형적 크기와 어긋나는 구간이 생길 수 있어서,

  • v5에서는 FT_Scale = FTVol로 통일:

    • shock = TANH( Dev / FTVol * K )

  • 즉 “오늘 Dev가 최근 Dev 변동성 대비 얼마나 센지”로 shock이 정규화돼.

3) Recent Quadrant에 히스테리시스(Mean Band) 추가

  • Params에 새 파라미터 추가:

    • Params!B38 = Mean Band (Hysteresis) (기본값 0.05)

  • Dashboard의

    • “Recent Quadrant Comparison (Window N)”(E18~E21)

    • “Quadrant Comparison (Last N Days)”의 Q-code( Z44:AC83 )
      에 모두 반영했어.

  • 로직:

    • ABS(Mean) <= Band중립 구간으로 보고,

      • 일별 Q-code 시계열(Z~AC)은 이전 Quadrant를 유지(스위치 과다 방지)

      • 최신 스냅샷(E18~E21)은 Neutral 표시


사용 팁(바로 튜닝할 것만)

  • Mean Band (Params!B38):

    • 스위치가 너무 잦으면 0.07~0.12로 ↑

    • 신호가 너무 둔하면 0.03~0.05로 ↓

  • K (Params!B36): shock 민감도. 0.7~1.5 범위에서 조절 추천


 

원하면 다음 단계로,

  • 가중 Alignment(외인/기관 가중↑, 개인 역가중) 추가

  • Fast/Slow(2-속도 FTI) 트리거까지 붙인 v5.1도 같은 형식으로 바로 만들어줄게.

 

 

다음 단계, 이게 개미지옥임.ㅋㅋㅋ

 

 

 

댓글
6
48
냐냐올시다
1
2025-12-12 06:03:54
4개월 전

15분이나 생각하고 답을 주다니

뭔가 생각하는 시간이 더 길어진걸까요~~

48
냐냐올시다
1
2025-12-12 06:04:16
4개월 전

나중에 젬민이에게 다시 검토시키는 것도 기대됩니다

작성자
29
Rcasio
1
2025-12-12 06:06:05
4개월 전

오늘밤 8시 넘어야 돼요. 사용량 다 씀.ㅋㅋㅋ

48
냐냐올시다
1
2025-12-12 06:06:22
4개월 전

아 ㅋㅋ 

13
알상무로션
2
2025-12-12 08:30:21
4개월 전

인재가 요기있네. 위폴이 영입해라

48
냐냐올시다
2025-12-12 08:50:05
4개월 전

무급노예가 많아오

댓글 남기기
로그인 후 댓글을 남기실 수 있습니다.
공지
위폴 게시판 개편 안내 (04.20 추가)
위폴
25-12-21
10157
너무 아프네요..
4
층간소음해방기원
04-19
31
교수님 이해가 잘 안됩니다.
12
바라바라밤
04-19
519
너 언제 끝나는 거니..
27
therokis
04-19
393
아시아 장 다 오르는중
13
제타슈
04-19
488
파워넷 주가에 심란하네요
2
썬더람쥐
04-19
211
삼성전자
29
Rcasio
04-19
333
etf 누나 고마워
36
연금저축펀드
04-19
546
두산을 사세요.
15
라면면빨
04-19
422
현대로템 올랐자나?
34
모나드
04-19
147
성호전자 간드아!!
30
왕초
04-19
134
KOSPI
29
Rcasio
04-19
427
온코닉테라퓨틱스
29
Rcasio
04-19
87
글쓰기