
    7i              	       ~   d dl Zd dlmZ d dlmZ d dlZd dlZ	 e
d        e	j                  ddd      Zed	   j                         j                  j                         Zej"                  d k(  r ed
       e
d ee       d        ej(                  e      Z ej,                  e      ZdZ ed      Z ee      Z ee      Z ej8                  e      Z ee      Zd Z ej@                  edddf   dejB                  jE                  ed      z  g      Z#ejI                  e#       ejJ                  Z&d Z'	 g Z(g Z) ej8                  ee      D ]@  Z*e)jW                  e#e*e*dz           e(jW                  e#e*ez
  e* jY                  dd             B  ejZ                  e)      j]                  d      Z/ ejZ                  e(      j]                  d      Z0ej?                  e/      Z1eje                  e0e1e       e/e&ej?                  e0         z
  Z3 e
e' ejh                  e3dz               e'dk(  rne'dz  Z' ejj                  e        ed      ddd f   Z6 ejn                  eed    ejp                   ejr                  e6            z  g      Z: ejj                  e:        ejv                          y)    N)KMeans)MLPClassifierzDownloading BTC data...zBTC-USD2y1d)periodintervalClosezNo BTC data was downloaded. Check internet access, yfinance availability, or provide a cached data source before running this forecast.zBTC data loaded: z days   *   )random_state)
n_clustersc                 j   g }t         t         d  j                  dd      }t        |       D ]q  }t        j                  |      d   }t        |   j                         }|j                  |       t        j                  |d|j                  d f   |g      d d d f   }s t        j                  |      S )N   r   )seriesPAST_STATESreshaperangefpredictMcopyappendnpconcatenatesizearray)stepsoutx_cluster
next_states         btc_40_day_forecast_2.pyr   r      s    
C|}%%a,A5\ J))A,q/wZ__&


:NNAa!112J?@qI	J
 88C=    g?	   r   r   )classes      i  )<numpyr   sklearn.clusterr   sklearn.neural_networkr   pylabpltyfinanceyfprintdownloadbtcdropnavaluesflattenpricer   RuntimeErrorlenlog	log_pricediffreturnsr   r   NNNaranger'   gr   hstackrandomrandnr   fitcluster_centers_r   iXytidxr   r   r   squeezeyt_X_ppartial_fiterrsumplotpredicted_returnsr   expcumsum
predict400show r%   r$   <module>rY      s    " 0     bkk)D48 	G$$,,.::?
	H  #e*U+ , BFF5M	
"'')
r"L\
"))A,
a 
GAtG$cBIIOOB,B&BC	D f

A	BryyR( =
		&SU#$	K,44Q;<= "((2,

q
!C	!		Q	B			#AMM"aM)
!))B- 
 C	!FBFF36N#veqDA  	CLA& R^^UE"IyryyAR7S0T$TUV
   
r%   