레이블이 ANFIS인 게시물을 표시합니다. 모든 게시물 표시
레이블이 ANFIS인 게시물을 표시합니다. 모든 게시물 표시

2013년 1월 3일 목요일

Time-Series multiresolution decomposition and forecasting

※ Elliott Pattern Helper Add In
  • Download Add In for Excel 2007 
  • Download Add In for Excel 2003 

  지난 글에서는  Wavelet multiresolution decomposition을 활용한 financial time-series의 dimensionality reduction에 관하여 언급했었는데요, 예측(forecasting)과 관련하여 wavelet transform에 대한 얘기를 해볼까요?

  Wavelet transform을 예측에 사용하는 방법은 대략 세 가지 정도가 있는데, 첫 번째가  multiresolution analysis를 수행한 후 각각의 resolution에 대한 예측치를 계산하는 것입니다. 두 번째 방법은 wavelet을 기반으로 financial time-series의 noise를 제거한 후 예측을 하는 것이며, 세 번째는 wavelet coefficient들 자체에 예측 알고리즘을 적용하는 것입니다.

  이 중 가장 자주 사용된 방법이 첫 번째 것으로서, financial time-series의 multiresolution decomposition 결과를 활용하는 아주 단순한 방법입니다. 즉, 특정 scale의 approximation layer와 그 보다 작거나 같은 scale의 detail coefficient layer 각각에 대해 예측을 수행하고 inverse transform으로 recostruction함으로써 최종 예측치를 계산하는 것이죠. (Fig 1 참조)
Fig 1. Multiresolution decomposition and forecasting

  이번 글에서는 이와 같은 방법을 담은 과거 발표 논문을 참조하여 실제로 테스트를 수행해 본 결과를 소개하도록 하겠습니다.
 
  ※ 참고 논문: Saif Ahmad, Ademola Popoola, Khurshid Ahmad, 'Wavelet-based Multiresolution Forecasting', 2005.

1. 모델링

   시스템은 크게 세 부분으로 구성됩니다.

  • Data preprocessing (Fig 1, 'MODWT')
  • Fuzzy rule base (Fig 1, 'Build Fuzzy Rule Base')
  • prediction system (Fig 1, 'Provide Forecasts', 'Aggregate Forecasts')

  1.1 Data preprocessing - Multiresolution Decomposition
  Wavelet multiresolution analysis를 수행하여 time-series 데이터의 시간 및 주파수(혹은 주기) 영역 특성을 추출합니다. 쉽게 설명하면, financial time-series를 추세(trend)와 계절적 cycle 및 비즈니스 cycle 등으로 분해하는 것(decomposition)이라고 보시면 됩니다. 

  물론, 현실 세계에서 측정한 time-series에서 추세와 여러 cycle을 정확하게 분리해 내기는 어렵겠지요? 근사치를 얻기 위해 다양한 모형을 개발해 왔으며, wavelet transform을 이용한 multiresolution decomposition은 그 중 하나가 일 뿐입니다.

  논문에서는 Maximal Overlap Discrete Wavelet Transform(MODWT)과 a trous 알고리즘을 적용했습니다. MODWT에 관한 자세한 내용은 위 논문을 참고하시기 바랍니다.

  1.2  Fuzzy rule base - Subtractive Clustering
  Time-series 데이터에 대한 approximation 및 forecasting 시스템으로 Fuzzy Inference System(FIS)을 사용하는데, 이를 위해 fuzzy if-then rule을 생성해야 합니다. FIS의 premise parameter들을 초기화하는 것으로서, 단순하게 생각하면 input 데이터의 범위(universe of discourse)를 patitioning하고 적절한 membership function을 선택하는 과정이라고 볼 수 있습니다.

  대표적인 방법으로 grid partitioning이 있는데요, universe of discourse를 균등하게 분할하고 분할된 구간들에 대해 membership function 종류와 parameter들을 수작업으로 정의하는 것이 일반적입니다.

  Fuzzy if-then rule을 수작업으로 정의해야 하는 경우의 비효율성과 시행착오를 줄이기 위한 효과적인 방법이 data clustering입니다. Input data를 특정 척도(metric)에 따라 다수의 cluster로 구분하고 cluster 당 하나의 rule을 자동으로 정의합니다. Mountain clustering, subtractive clustering 등의 방법이 있으며, 위 논문에서는 subtractive clustering을 사용했습니다.

  1.3 Prediction system - ANFIS
  Multiresolution decomposition의 결과로 생성된 각각의 layer에 대해 예측을 수행하는 FIS로서, training 데이터로 학습(learning)을 시켜 최적화(optimization)시킨 후 실제 데이터에 대해 예측값을 계산하도록 합니다. 

  FIS를 학습(learining)시킨다는 것은 [input, output] 쌍으로 구성된 training 데이터를 FIS에 입력해 가면서 FIS가 계산한 output과 실제 output 간의 차이(error measure)를 줄여나갈 수 있도록 FIS의 내부 parameter들, 즉 premise parameter들과 consequent parameter들을 조정해 나가는 과정을 말합니다.

  학습 알고리즘으로는 gradient descent method처럼 미분을 이용한 방법이 자주 사용되기도 하지만, local maxima를 피하기 위해 particle swarm optimization(PSO), simulated anealing(SA) 등과 같은 derivative-free 방법을 적용하기도 합니다. 2012년 9월의 포스트 'Time-Series Analysis and Forecasting'에서 소개했던 시스템이 PSO를 사용한 것이었습니다.

  논문에서는 First-order (Takagi-Sugeno-Kang) TSK 타입의 FIS를 사용했다고 합니다.

 2. 테스트 시스템

  테스트 시스템은 위 논문에 소개된 아이디어를 적용하여 구성했습니다. 단, prediction system은 2012년 10월에 올렸던 블로그 'ANFIS and Time-Series Forecasting'에서 사용한 ANFIS 시스템을 사용했습니다. ANFIS는 premise parameter들의 최적화에 gradient descent method를, consequent parameter들에 대해서는 least square estimation(최소자승법)을 사용합니다.


  Time-series의 preprocessing 모듈은 엑셀 vba로 Haar a trous 알고리즘을 구현하여 multiresolution analysis를 수행하도록 구성했으며, fuzzy rule base 자동 생성을 위해 subtractive clustering 알고리즘을 C 언어로 구현하여 기존의 ANFIS 모듈과 통합하여 사용할 수 있도록 하였습니다. 엑셀에서 엑셀 vba, vba에서 .exe 파일을 호출하는 구조입니다.

  Time-Series로는 1,000 여개의 KOSPI 지수 데이터를 사용했으며,
Fig 1과 같이 scale 5 레벨까지 분해(decomposition)하여  D1, D2,..., D5, S5 등 6개의 layer를 생성하여 테스트를 진행했습니다. 각각의 layer는 maximal overlap DWT를 통해 생성되었으므로 KOSPI 데이터와 동일한 갯수의 데이터를 갖는 time-series입니다. 

  각각의 layer에 대해, FIS는 f(Xk-n, ..., Xk-1) → Xk 처럼 연속된 lagged data만을 input으로 받아 output을 계산하도록 학습됩니다. 그렇게 [input, output] 데이터 쌍을 생성하고, 이들을 90%와 10%로 나누어 각각 training data set과 검증용(check) data set으로 나누어 테스트를 진행했습니다.

3. 테스트 결과

  아래의 Fig 2-1부터 Fig 2-6까지는 scale 5 레벨 decomposition 결과로 생성된 각각의 layer에 대해 예측값을 산출한 결과입니다.


  참고했던 논문에서는 각각의 layer에 대해 FIS의 input dimension을 어떻게 해야 하는지, 즉 몇 개의 lagged data를 input으로 사용해야 하는지에 대한 언급이 없었습니다. 유사한 논문들을 검색하다보니 결국은 '경험적인 방법으로 error measure를 최소화하는 input dimension을 찿는다' 였습니다. 실제로 layer 별로 dimension을 바꿔가며 테스트를 해보니, 'universal approximator'라는 ANFIS 때문인지, 3 이상에서는 별다른 차이가 없음을 알 수 있었습니다. 그래서, 모든 layer에 대해 input dimension을 3으로 설정하여 테스트를 했습니다. 

  Subtractive clustering parameter는 radius 0.2, squash factor 1.25, accept ratio 0.5, reject ratio 0.15를 사용했습니다. 

Fig 2-1. Approximation at scale 5 (S5)
Fig 2-2. Detail coefficients at scale 1 (D1)
Fig 2-3. Detail coefficients at scale 2 (D2)
Fig 2-4. Detail coefficients at scale 3 (D3)
Fig 2-5. Detail coefficients at scale 4 (D4)
Fig 2-6. Detail coefficients at scale 5 (D5)
  위 그림을 보면 D1, D2 처럼 scale이 작은 경우, 즉 주파수가 큰 경우에는 실제값과 예측값 사이의 차이가 눈에 띄게 드러납니다. 하지만, scale이 커질수록 detail layer 또는 approximation layer에 대한 예측 성능이 좋아짐을 알 수가 있군요.

  그렇다면, 모든 layer의 예측값을 합(inverse transfomation)하면 어떻게 될까요?  다음 그림 3이 그 결과입니다.

Fig 3. Reconstruction from forecasts
  지난 몇 개의 포스트에서 소개했던 time-series forecasting 방법들과 마찬가지로  큰 resolution(S5, D5, D4 등)에서는 흐름을 충분히 예측할 수 있습니다. 하지만 D1, D2와 같이 주파수가 높은 layer의 예측 error가 그대로 반영되는 모습입니다. 

  D1을 noise처럼 생각하여 filtering을 한다면 어떻게 될까요? Fig 3보다는 더 정확한 결과를 얻을 수 있는 것이 당연하겠지요.

Fig 4. Reconstruction with D1 filtered

  Fig 3과 4를 비교해 보면 그 차이를 분명히 알 수 있습니다. 논문에서 주장하듯이 Wavelet transform에 의한 time-series preprocessing의 한 가지 이점이 확인되는군요. 

4. 결 론

  정리하면, Wavelet transform 기법으로 time-series를 preprocessing한 후 ANFIS를 사용하여 흐름을 예측해 본 결과, preprocessing의 효용성을 어느 정도 확인할 수 있었습니다. 


  참고논문에서는, 복잡한(complex) time-series를 noise나 계절적 요인 또는 추세를 제거하여 단순화시킴으로써 예측의 정확도를 높일 수 있다고 판단합니다. 실제 D1을 제거한 후의 테스트 결과(Fig 4)는 그 판단의 근거를 뒷받침합니다. 

  한 걸음 더 나아가, 분해된 layer들의 resolution(noise, seasonal, trend 등)에 따라 예측 기법을 상이하게 적용함으로써 예측 효과를 좀 더 향상시킬 수 있지 않을까 기대해 봅니다.

2012년 11월 21일 수요일

Proof - Gradient of ANFIS w.r.t a premise parameter

※ Elliott Pattern Helper Add In
  • Download Add In for Excel 2007 
  • Download Add In for Excel 2003 




Neuro-Fuzzy Control and Time-Series Forecasting

※ Elliott Pattern Helper Add In
  • Download Add In for Excel 2007 
  • Download Add In for Excel 2003 


  이번 글에서는 지난 글에 이어 ANFIS를 사용하여 시계열(time-series) 데이터를 분석하고 그 결과를 기반으로 향후 흐름을 예측하는 방법을 하나 더 소개하겠습니다.

  지금 소개할 방법이 지난 글에 소개된 것과 조금 다른 점은 두 개의 ANFIS를 사용한다는 것입니다. 실제 예측을 수행하는 'Plant'로서의 ANFIS와 이것에 제공될 Control 신호를 생성하는 'Controller' ANFIS가 함께 사용되는 일종의 Neuro-fuzzy contol 형태를 구성하는 방법입니다.


그림 1. Neuro-fuzzy control

  ※ 참고 논문: George S. Atsalakis, Kimon P. Valavanis, 'Forecasting stock market short-term trends using a neuro-fuzzy based methodology', 2009.


1. 모델링

   기본적인 발상은, 주가의 흐름을 아래와 같이 descrete-time 도메인 상의 process-controller equation으로 이해하는 것입니다.

        x(k+1) = f(x(k), u(k))
        u(k) = g(x(k))

  시간 k+1에서의 주가 x(k+1)은 시간 k에서의 주가 x(k)와 control signal u(k)에 의해 결정되며, 궁극적인 문제는 x(k)로부터 u(k)를 찾는 것입니다.

  위 논문에서 사용된 controller ANFIS의 training data set은 [x(k), x(k+1); u(k)]입니다. x(k)x(k+1)은 각각 시간 kk+1에서의 주가의 변화이며, u(k)는 |x(k) - x(k+1)|입니다. Membership function은 Gaussian 2로 각각의 input에 대해 5 개, 총 25 개의 inference rule로 400 epoch 동안 training을 수행했습니다.

  예측을 수행하는 plant ANFIS에서 사용할 signal u(k)의 값은 learning 이후의 controller ANFIS에서 input (x(k), xd(k+1))에 대해 계산한 output입니다. 여기서, xd(k+1)은 시간 k+1에서의 주가의 변화 x(k+1)을 미리 알 수 없기 때문에 사용한 값으로서, 시행착오 끝에 시간 k에서의 3일 이동평균 변화량을 채택했다고 합니다.

  주식시장의 프로세스 모델이라고 볼 수 있는 plant ANFIS는 data set [x(k-1), x(k), u(k); x(k+1)]으로 training한 후, 예측을 수행하도록 했습니다. 각각의 input에 대해 Gaussian 2 membership function을 3 개씩, 총 27 개 rule로 100 epoch 동안 training했습니다.


2. 테스트 시스템

  위 논문에 소개된 neuro-fuzzy control 모델을 그대로 적용하였으며, membership funciton만 Gaussian 2가 아닌 Gauss membership function을 사용하여 테스트했습니다.

  테스트 데이터로는 680 여개의 KODEX 레버리지 지수 데이터를 사용했으며, 이를 90%와 10%로 나누어 각각 training data set과 검증용(check) data set으로 나누어 테스트를 진행했습니다. 


3. 테스트 결과

  아래 그림 2는 controller ANFIS에 의한 output입니다. Training data set에 대해서는 실제 u(k)와 계산된 u(k) 값이 거의 일치하는 것처럼 보입니다. 물론 마지막 input (x(k), xd(k+1))의 output은 실제 값과는 차이가 나는 것을 볼 수 있으며, 이는 당연한 결과일 것입니다. 


그림 2. Controller ANFIS Output

  다음 그림은 plant ANFIS를 100 epoch 동안 training하는 과정에서의 learning error 변화를 나타낸 것입니다.


그림 3. Plant ANFIS의 epoch 별 에러 추이

  위 결과에 따라 epoch 수를 72회로 조정하여 plant ANFIS를 다시 training했습니다. 다음은 controller ANFIS가 산출한 u(k)를 input signal로 받아 plant ANFIS가 예측한 output, 즉 x(k+1) = f(x(k-1), x(k), u(k))를 실제 주가 흐름과 대비하여 표시한 그림입니다. 


그림 4. Plant ANFIS Output

  위 그림 3의 결과를 보면 '모양은 비슷해 보이지만.., 한 발 늦는군...'요. 논문에서는 4,000여 개가 넘는 data로 training한 후 60%가 넘는 'hit ratio' 결과를 얻었다고 하는데요, 위 결과는 그에 미치지 못했습니다. Training data의 양을 늘려야 할까요..?


4. 결 론

  정리를 하면, 주식 시장의 프로세스 모델을 아래 식에 기반한 neuro-fuzzy control로 모델링하여 주가의 단기 흐름을 예측해 보았습니다.

        x(k+1) = f(x(k-1), x(k), u(k))
        u(k) = g(x(k))

  Control signal u(k)는 3일 이동평균 변화량에 대한 controller ANFIS의 output입니다. 

  위 참고논문에서는 연구 성과를 타 연구들과 대비하여 'Hit Ratio가 조금 더 낫다'라고 스스로 평가하고 있습니다. Hit ratio 60% 정도면 'Random Walk'보다는 좋겠지요...? 

  물론, 제가 직접 테스트한 결과 수치는 그 정도까지 나오진 않았습니다만 training data의 양을 크게 증가시키고 동일한 membership function을 사용한다면 더 좋은 결과가 나올 수도 있을 것입니다.


2012년 10월 15일 월요일

ANFIS and Time-Series Forecasting

※ Elliott Pattern Helper Add In
  • Download Add In for Excel 2007 
  • Download Add In for Excel 2003 


  지난 9월의 한 글에서 시계열(time-series) 데이터를 분석하고 그 결과를 기반으로 향후 흐름을 예측하는 방법을 하나 소개했었지요. 그 방법은 과거의 주가 흐름을 단순한 형태의 Fuzzy time series로 구조화(Fuzzy Inference System, 이하 FIS)하여 분석하는 것이었습니다.

  이번 글에서는 신경망(Neural Network, 이하 NN) 기반의 인공지능(Artificial Intelligence, 이하 AI) 기법을 이용한 주가 예측 방법을 한 가지 소개하고, 실제 구현하여 테스트한 결과를 공개합니다. 

  이 또한 과거에 발표되었던 논문을 기준으로 한 것이며, 이 방법에 의한 예측 결과를 실제 투자의 기준으로 활용하는 것은 부적절할 수 있음을 미리 알립니다.

  ※ 참고 논문: George S. Atsalakis, Emmanouil M. Dimitrakakis, Constantinos D.Zopounidis, 'Elliott Wave Theory and neuro-fuzzy systems, in stock market prediction: The WASP system', 2011.


1. 기술적 배경

  분석에 사용한 이론적·기술적 방법은 ANFIS, 즉 Adaptive Network-based Fuzzy Inference System(이하 ANFIS)입니다.

  일종의 FIS인데요, 그 내부에서 사용되는 membership function(이하 MF)의 parameter들을 NN의 자기학습(learning)으로 최적화함으로써 예측이나 분류 등 다양한 분석 분야에 사용됩니다.


  • Fuzzy inference system
  보통 우리가 알고 있는 함수들은 input이 가령 x = 3, y = 4일 때 output z = x^2 + y^2 = 5^2이다...처럼 실수나 복소수 값(crisp value)들을 사용합니다. 그런데 이를 전제로 하는 함수 또는 식으로 모든 시스템을 simulation할 수는 없습니다.

  특정 분야의 어떤 전문가들은 가령 수온이 꽤 높을 때 밸브를 잠근다...처럼 오랜 경험에 기초하여 시스템을 운영하기도 합니다. 이러한 전문가들의 행위를 자동화한다면 시스템을 어떻게 모델링해야 할까요? 수온이 꽤 높다...? 80도? 90도? 어떤 특정 값으로 정의하기는 어렵습니다.

  이런 문제들을 모델링하기 위해 나온 것이 fuzzy value(또는 fuzzy set)라는 개념과 이에 기초한 FIS입니다.

  FIS는 input과 output으로 crisp value가 아닌 fuzzy value를 갖는 다수의 룰(inference rule, 함수에 대응)을 정의함으로써 시스템을 모델링 합니다. 그런데, fuzzy value는 MF로 정의됩니다. 가령 '꽤 높다'라는 fuzzy value는 수온에 대해 10℃를 0으로, 20℃ → 0, ..., 60℃ → 0, 70℃ → 0.5, 80℃ → 1, 90℃ → 1, 100℃ → 1 등으로 대응시키는 함수, 즉 MF(그림 1 참조)로 정의할 수 있습니다.

그림 1. Membership function

  따라서 어떤 시스템을 FIS로 모델링 또는 simulation 한다는 것은 input과 output을 몇몇 MF로 정의하고 이들 사이의 대응관계, 즉 inference rule을 찾는 것입니다. 

  • Neural network
  인공지능(AI)이나 신경망(NN)에 대한 구체적인 거론은 기회가 되면 하기로 하구요, ANFIS와 관련해서 필요한 사항만 언급하겠습니다.

  특정 시스템을 FIS로 구현하려면, 위에서 얘기했듯이 다수의 MF를 정의해야 합니다. 그런데, 시스템의 input과 output을 정의하는 것 뿐만 아니라 MF와 inference rule을 찾는 데에도 해당 분야의 전문적인 지식이 필요하며, 수많은 시행착오를 겪을 수밖에 없습니다.

  MF는 주어진 input에 대해 0에서 1 사이의 값인 membership grade를 대응시킵니다. 대표적인 형태로 triangle, trapezoid, gaussian, bell 및 sigmoid 등이 있는데, 각각의 형태에 대해 구체적인 모양을 규정하는 parameter들이 존재합니다. 이들을 premise parameters라고 합니다. 각각의 inference rule 또한 최종 output을 산출하기 위해 몇몇 parameter들을 사용하는데요, 이들은 consequent parameters라고 불립니다. (그림 2의 pi, qi, ri 등)

그림 2. ANFIS

  FIS를 정의하는 이 parameter들을 찾기 위해, ANFIS는 노력과 시행착오를 줄이기 위한 방편으로 NN의 자기학습(learning) 기법을 사용합니다.


  2. 시스템 모델링

   모델링 대상은 time-series로서 KOSPI 종목 LG전자 주가의 흐름이며, 시스템의 input과 output은 위 논문의 내용을 따릅니다. 아이디어를 간략히 기술하면, 3일 동안의 Elliott wave oscillator(이하 EWO) 흐름으로 주가 흐름을 예측하는 것으로서, EWO가 (+)에서 (-)로 또는 (-)에서 (+)로 바뀔 때를 의미있는 진입시점으로 관측하기 위함입니다.
  • Input: 3일간의 Elliott wave oscillator (EWOt-2, EWOt-1, EWOt)
  • Output:(t+1)일의 주가 흐름 (if positive rate of change then 1, else -1)
  각각의 input에 대한 membership function의 갯수는 2개로서 '높다'와 '낮다' 두 개의 fuzzy value만을 사용하는 것입니다.

  논문에서는 MF를 이런 저런 형태로 바꿔가면서, NN의 step size(learning과 관련된 parameter)를 다양한 값으로 변경해가며, 총 42개의 ANFIS 모델을 사용했다고 합니다. 테스트 데이터(training data set)에 대해 학습을 수행한 후 에러율이 낮은 모델을 선택하여 예측치를 산출하고 그 결과를 바탕으로 진입/청산을 한 것이지요. 자세한 내용은 논문을 참조하시기 바랍니다.

  이 글은 위 논문의 아이디어를 LG전자 종목에 대해 제가 구현한 테스트 시스템을 사용하여 몇몇 MF type으로 테스트한 결과를 포함합니다.


3. 테스트 시스템 구축

  테스트 시스템은 Ubuntu(VirtualBox guest)에서 GNU Scientific Library(GSL)를 사용하여 개발한 후, Windows용으로 porting하여 향후 Elliott Pattern Helper에서 활용할 수 있도록 했습니다.

  이 과정에서 GSL을 Windows용으로 porting해야 했는데요, 다행히도 Visual Studio용 솔루션 파일을 구할 수 있었습니다. 이것을 이용하여 Visual Studio 2012 Express에서 GSL을 porting 했습니다.
  테스트 데이터로는 2008년 6월 10일부터 2012년 10월 5일까지 총 1,084개의 LG전자 주가 데이터를 사용했으며, 이를 NN의 training data set과 검증용(check) data set으로 나누어 테스트를 수행했습니다. 


4. 테스트 결과

  Training data set으로는 전체 1,084 개의 데이터 중 50%를 사용하고 나머지 50%를 검증에 사용했습니다. 

  반복 learning 횟수(epochs)는 MF 별로 over fitting으로 인한 error measure의 상승이 관측되기 전까지로 했으며, error measure로는 Root Mean Square Error(이하 RMSE)를 사용했습니다. 

  결과는 실제 주가의 흐름(상승 또는 하락)과 ANFIS의 계산 결과(+ 또는 -)를 단순비교하여 백분율로 표시하겠습니다.

  • Gauss MF, 500 Epochs

그림 3. Epoch별 RMSE 추이 - Gauss MF

             ▶ 결과: training data set: 57%
                          check data set:   49%

  • Bell MF, 240 Epochs

그림 4. Epoch별 RMSE 추이 - Bell MF

             ▶ 결과: training data set: 52%
                          check data set:   52%


  • Triangle MF, 300 Epochs
그림 5. Epoch별 RMSE 추이 - Triangle MF


             ▶ 결과: training data set: 52%
                          check data set:   50%

  • Trapezoid MF, 64 Epochs

그림 6. Epoch별 RMSE 추이 - Trapezoid MF

             ▶ 결과: training data set: 57%
                          check data set:   46%



  • Sigmoid MF, 200 Epochs

그림 7. Epoch별 RMSE 추이 - Sigmoid MF


             ▶ 결과: training data set: 45%
                          check data set:   45%



5. 결 론

  Training data set에 대해서는 최고 57%의 결과를 얻었지만, learning 이후 실제 예측에서는 최고 52%로 그리 만족할만한 수치가 아니군요. Training data set의 비율을 70%, 80%로 늘려도 결과는 거의 비슷하게 나왔습니다.

  소득이 있다면, MF의 종류에 따라 그 결과가 확연히 다르다는 것을 알 수 있었다는 것입니다. 그렇다면 MF의 수를 달리하면 어떻게 될까요..? 그리고, LG전자가 아닌 다른 종목에 대해 테스트를 하면 어떻게 될까요..?

  우선은 ANFIS 테스트 시스템을 구축한 것으로 만족해야 겠습니다. 이후에는 input과 output을 EWO나 주가 등락이 아닌 다른 변수로 바꾸어가며 테스트를 해보고 그 결과를 올리도록 하겠습니다.