
    ;gqd              T       N   d dl mZ d dlZd dlZd dlZd dlmZ d dl mZ d dl	Z	d dlm
Z
mZmZ d dlmZ d dlZd dlmZ d dlZd dlZd dlZd dlmZ d dlZd dlZd dlmZ d d	lmZ d d
lm Z  d dl!Z"d dlZd dlm
Z
m#Z#mZmZm$Z$m%Z% d dlmZ  ejL                           e
       Z' ed      Z(dZ)d Z*d Z+e'jY                  de      d        Z-e'jY                  de      d        Z.e'j_                  de       ed       ed       ed       ed       ed       ed       ed       ed       ed       ed       ed       ed       ed       ed       ed       ed       ed       ed       ed       ed       ed       ed       ed      fde0de0de0de0de0de0d e0d!e0d"e0d#e0d$e0d%e0d&e0d'e0d(e0d)e0d*e0d+e0d,e0d-e0d.e0d/e0d0e0f.d1       Z1d2 Z2d3 Z3e'jY                  d4e      d5        Z4e'j_                  d4e       ed       ed       ed       ed       ed       ed       ed       ed       ed       ed       ed       ed       ed       ed       ed       ed       ed       ed       ed       ed       ed       ed       ed       ed       ed       ed       ed       ed       ed       ed       ed       ed       ed       ed       ed       ed       ed       ed       ed       ed       ed      f)de0de0de0de0d e0d!e0d"e0d#e0d$e0d%e0d&e0d'e0d(e0d)e0d*e0d+e0d,e0d-e0d.e0d/e0d0e0d6e0d7e0d8e0d9e0d:e0d;e0d<e0d=e0d>e0d?e0d@e0dAe0dBe0dCe0dDe0dEe0dFe0dGe0dHe0dIe0fRdJ       Z5e'jY                  dKe      dL        Z6e'j_                  dMe       ed       edN       ed       ed       ed      fdOe0dPe0de0de0de0f
dQ       Z7e'jY                  dRe      dS        Z8e'jY                  dTe      dUe9fdV       Z:e'jY                  dWe      dX        Z;y)Y    )HTMLResponseN)Form)RedirectResponse)FastAPIRequestr   )Jinja2Templates)StaticFiles)minimize)BytesIO)adfuller)r   Queryr   r   File
UploadFile	templates)	directoryu  
<!DOCTYPE html>


<div class="logo-container" style="display: flex; justify-content: center;">
    <a href="/">
        <span style="font-family: 'Merriweather', serif; font-size: 50px; color: #333; font-weight: bold;">Trading The Dream</span>
    </a>  
</div>




<head>

    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Stock Data</title>
    <script src="https://unpkg.com/htmx.org@1.9.5"></script>
    <style>
       
    
    
        body {{ font-family: Arial, sans-serif; margin: 40px; background-color: white; color: black; }}
        table {{ width: 100%; border-collapse: collapse; margin-top: 20px; }}
        th, td {{ border: 1px solid black; padding: 8px; text-align: center; }}
        th {{ background-color: #f0f0f0; }}
        input, button {{ padding: 5px 10px; margin-top: 10px; }}
        nav {{
            display: flex;
            align-items: center;
            gap: 15px;
            border-bottom: 2px solid #000;
            padding: 10px 0;
        }}
        .logo-container {{
            display: flex;
            align-items: center;
            gap: 10px;
        }}
        .logo-container img {{
            width: 40px; /* Imposta la dimensione del logo */
            height: 40px;
        }}
        .logo-container a {{
            font-size: 24px;
            font-weight: bold;
            text-decoration: none;
            color: black;
        }}
        .menu {{
            display: flex;
            gap: 15px;
        }}
        .dropdown {{
            position: relative;
        }}
        .dropdown-content {{
            display: none;
            position: absolute;
            background-color: white;
            min-width: 250px;
            box-shadow: 0px 8px 16px rgba(0, 0, 0, 0.2);
            z-index: 1;
        }}
        .dropdown:hover .dropdown-content {{ display: block; }}
        .dropdown-content a {{
            display: block;
            padding: 10px;
            text-decoration: none;
            color: black;
        }}
        .dropdown-content a:hover {{ background-color: #f0f0f0; }}
        .auth-buttons {{
            margin-left: auto;
        }}
        .auth-buttons a button {{
            margin-left: 10px;
            background-color: #33A1FF;
            border: none;
            padding: 10px 15px;
            font-weight: bold;
            cursor: pointer;
        }}
        .auth-buttons a button:hover {{ background-color: #1E90FF; }}
        footer {{
            background-color: black;
            color: white;
            text-align: center;
            padding: 10px 0;
            margin-top: 40px;
        }}
        .news-section {{
            background-color: #f8f9fa;
            padding: 15px;
            border-radius: 8px;
            box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);
            margin-top: 20px;
        }}
        .news-list {{
            list-style: none;
            padding: 0;
        }}
        .news-list li {{
            margin: 8px 0;
            padding: 8px;
            border-bottom: 1px solid #ddd;
        }}
        .news-list li:last-child {{
            border-bottom: none;
        }}
        .news-list a {{
            text-decoration: none;
            color: #007BFF;
            font-weight: bold;
            display: flex;
            align-items: center;
            transition: color 0.3s ease-in-out;
        }}
        .news-list a:hover {{
            color: #0056b3;
        }}
        .news-icon {{
            margin-right: 8px;
        }}
    </style>
    <nav>
        <div class="menu">
            <a href="/">Home</a> 
            <div class="dropdown">
                <a href="#">Tools</a>
                <div class="dropdown-content">
                    <a href="/tools/correlation-matrix">Correlation Matrix</a>
                    <a href="/tools/portfolio-analysis">Portfolio Analysis</a>
                    <a href="/tools/stationarity">Stationarity</a>
                </div>
            </div>
    
            <a href="/blog">Blog</a> 
            <a href="/about">About me</a>
        </div>
    </nav>
    <div id="content">{content}</div>
    <footer>
        <p>Disclaimer: This site does not include any financial advice. It is just a financial blog in which using some tool for your
        trading or investing activity, enjoy. Don't forget to follow me on my socials 😉​</p>
        <br>
        <a href="https://www.youtube.com/@giovanniascionefin" target="_blank">
            <img src="https://upload.wikimedia.org/wikipedia/commons/4/42/YouTube_icon_%282013-2017%29.png" alt="YouTube" width="30" height="30" style="margin-right: 10px;">
        </a>
        <a href="https://www.instagram.com/giovanni_ascione_cf/" target="_blank">
            <img src="https://upload.wikimedia.org/wikipedia/commons/9/95/Instagram_logo_2022.svg" alt="Instagram" width="30" height="30" style="margin-right: 10px;">
        </a>

        <a href="https://www.facebook.com/profile.php?id=61573860637994" target="_blank">
            <img src="https://upload.wikimedia.org/wikipedia/commons/5/51/Facebook_f_logo_%282019%29.svg" alt="Facebook" width="30" height="30" style="margin-right: 10px;">
        </a>    
        
        <a href="https://www.tiktok.com/@giovanni.ascione41?lang=it-IT" target="_blank">
            <img src="https://upload.wikimedia.org/wikipedia/commons/thumb/a/a6/Tiktok_icon.svg/640px-Tiktok_icon.svg.png" alt="TikTok" width="30" height="30" style="margin-right: 10px;">
        </a>


    </footer>
</body>



</html>
c                    t        j                  |       }|j                  d      }|d   d   }|d   j                         j	                         j
                  d   dz  }t        j                  d      }|j                  d d }||||fS )N1y)periodClosed   ^GSPC
   )yfTickerhistory
pct_changedropnailocnews)tickerdata
last_pricelast_returnsp500r    s         /var/www/html/sito.pyget_datar'      s    99VD<<t<$Dgr"Jw-**,335::2>DK IIgE::cr?D{D$..    c                    t        j                  d      \  }}|j                  | j                  | d   d       |j	                  d       |j                  d       |j                  d       |j                  d       t        j                         }t        j                  |d	       |j                  d
       t        j                  |j                               j                  d      }t        j                   |       |S )N)g      @   figsizer   b)color Fpngformatr   utf-8)pltsubplotsplotindex	set_title
set_xlabel
set_ylabelgridior   savefigseekbase64	b64encodereaddecodeclose)r"   figaximg_buf
img_base64s        r&   generate_line_chartrH      s    ll8,GC GGDJJWSG1 LLMM"MM"GGEN jjlGKK&LLO !!',,.188AJIIcNr(   /)response_classc                  0  K   t        j                  d      } | j                  d d }d}|D ]%  }|d|j                   d|j                  d d  dz  }' |dz  }t        d	      \  }}}}t        |      }t        d
      \  }	}
}}t        |      }t        d      \  }}}}t        |      }t        d      \  }}}}t        |      }d| d|dd|dd| d|	dd|
dd| d|dd|dd| d|dd|dd| d}t        t        j                  |            S w)Nz(https://finance.yahoo.com/rss/topstoriesr   zV
    <div class="news-section">
        <h3> </h3>
        <ul class="news-list">
    z+
            <li>
                <a href="uK   " target="_blank">
                    <span class="news-icon">📰</span> F   z3...
                </a>
            </li>
        z
        </ul>
    </div>
    r   zGC=FzEURUSD=XzCL=Fz


    <div style="display: flex; justify-content: space-between; align-items: flex-start;">
    
        <!-- COLONNA NEWS (SINISTRA) -->
        <div style="width: 48%; text-align: left;">
            <h2>Latest news from Yahoo Finance</h2>
            z
        </div>

        <!-- COLONNA GRAFICI (DESTRA) -->
        <div style="width: 48%; text-align: right; display: flex; flex-direction: column; gap: 20px;">
        <h2> Main charts </h2>
            <div>
                <h3>S&P 500 --> z.2fz$ (z8%)</h3>
                <img src="data:image/png;base64,z\" alt="S&P 500 Chart" />
            </div>

            <div>
                <h3>GOLD --> z\" alt="GOLD Chart" />
            </div>

            <div>
                <h3>EUR/USD --> z[" alt="EUR/USD Chart" />
            </div>

            <div>
                <h3>OIL --> zL" alt="OIL Chart" />
            </div>
        </div>

    </div>
    
    content)

feedparserparseentrieslinktitler'   rH   r   HTML_TEMPLATEr2   )
feed_yahoonews_items_yahoonews_content_yahooitemlast_price_1last_return_1data_1news_1img_1last_price_2last_return_2data_2news_2img_2last_price_3last_return_3data_3news_3img_3last_price_4last_return_4data_4news_4img_4rN   s                            r&   homerm      s     !!"LMJ!))#2.
 !  #)) %99=CR8I J	 	    3;72C/L-'E2:62B/L-'E2::2F/L-'E2:62B/L-'E    !! ".c 2#mC5H I116 8 +3/s=2E F116 8! ".c 2#mC5H I116 8 *#.c-1D E116 8?%GN  4 4W 4 EFFs   DDz/tools/correlation-matrixc                     K   ddj                  t        d      D  cg c]  } d|  d| dz    d c}       z   dz   }t        t        j	                  |	      	      S c c} w w)
Na\  
    <h1>Correlation Matrix</h1>
    <p> Here you can calculate the correlation matrix using up to 20 securities, completely free. 
    <br> All you have to do is writing in every cell your tickers, selecting 
    <br> the date range you want to analyze and the timeframe. Enjoy</p>
    <form action="/calculate_correlation" method="post">
        r/      z<input type="text" name="tickerz" placeholder="Ticker    z"><br>a  
        
        <br>
        <br>
        <br>
        
        <label for="start_date">Start Date (YYYY-MM-DD):</label>
        <input type="date" name="start_date" required><br>
        
        <label for="end_date">End Date (YYYY-MM-DD):</label>
        <input type="date" name="end_date" required><br>
        
        <br>
        <br>
        <br>
        
        <label for="interval">Select Time Frame:</label>
        <select name="interval">
            <option value="1d" selected>Daily</option>
            <option value="1wk">Weekly</option>
            <option value="1mo">Monthly</option>
        </select>
        <br>
        <br>
        <br>
    
        <button type="submit">Run</button>
    </form>
    rM   joinranger   rT   r2   irN   s     r&   correlation_matrix_pagerv   I  s{      ggglmogpqbc8;QRSTURUQVV\]qrsv"GF  4 4W 4 EFF; rs   A A
1A z/calculate_correlation.1dr/   
start_dateend_dateintervalticker0ticker1ticker2ticker3ticker4ticker5ticker6ticker7ticker8ticker9ticker10ticker11ticker12ticker13ticker14ticker15ticker16ticker17ticker18ticker19c                   K   |||||||	|
||||||||||||fD cg c]  }|r| }}|s t        t        j                  d            S 	 t        j                  || ||      d   }|j
                  r t        t        j                  d            S |j                         j                  d      }t        j                  d       t        j                  |d	d
dddd       t               }t        j                  |d       t        j                          |j                  d       t!        j"                  |j%                               j'                  d      }d| }d|  d| d| d| d	}t        t        j                  |            S c c}w # t(        $ r7}t        t        j                  dt+        |       d            cY d }~S d }~ww xY ww)Nu1   <p>⚠️ Errore: Inserisci almeno un ticker.</p>rM   startendrz   r   u8   <p>⚠️ Nessun dato trovato per i ticker inseriti.</p>   )r      r+   Tcoolwarmr   r   rp   g      ?)annotcmapcentervminvmax
linewidthsr0   r1   r3   data:image/png;base64,u   <p>❌ Errore nel calcolo: </p>z>
    <h1>Here your correlation matrix</h1>
    <p>Start Date: z | End Date: z | Time Frame: z</p>
    <img src="ut   " alt="Matrice di Correlazione">
    <br><a href="/tools/correlation-matrix"> 🔙 Go back to Ticker input </a>
    )r   rT   r2   r   downloademptycorrroundr4   figuresnsheatmapr   r=   rC   r>   r?   r@   rA   rB   	Exceptionstr) rx   ry   rz   r{   r|   r}   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   ttickersr"   correlation_matrix
img_streamrG   img_urlerN   s                                    r&   calculate_correlationr   p  s     #GWgw#Wgw$h(H$h(HN TQ RS  TG T
 M$8$8At$8$uvvn{{7*(XVW^_ ::(<(<E(<  )A  B  B "YY[..q1 	

7#&dATV]^kno Y
Ju-		 %%joo&78??H
*:,7
<}XJohZ Pi G  4 4W 4 EFFWTB  nM$8$8C^_bcd_e^ffjAk$8$lmmnsM   GF$GAF GCF !4G	G,G
GGGGc                    	 t        j                  | |t        j                  j	                               d   }|j
                  ry|j                         j                         }||z  j                  d      }d|z   j                         }|j                         }||z
  |z  }|j                         }	|j                  d   dz
  }
||
|	fS # t        $ r}t        d|        Y d }~yd }~ww xY w)N)r   r   r   )NNNrp   )axisr   zErrore: )r   r   dtdatetimetodayr   r   r   sumcumprodcummaxminr   r   print)r   weightsrx   r"   returnsportfolio_returnscumulative_returnspeakdrawdownmax_drawdowntotal_returnr   s               r&   calculate_portfolio_performancer     s     {{7*"++:K:K:MNwW::#//#**,$w.333;"33<<>!((*&-5||~)..r2Q6!<==  n s   AC BC 	C,C''C,c                 
   t        j                  d       t        j                  | dd       t        j                  d       t        j                  d       t        j
                  d       t        j                          t        j                         }t        j                  |d       |j                  d	       t        j                  |j                               j                         }t        j                          |S )
N)      r+   zPortfolio Valueblue)labelr.   r/   r0   r1   r   )r4   r   r6   rS   xlabelylabellegendr<   r   r=   r>   r?   r@   rA   rB   rC   )r   imgrG   s      r&   plot_portfolior     s    JJwHH'8GIIbMJJrNJJrNJJL
**,CKKE"HHQK!!#((*-446JIIKr(   z/tools/portfolio-analysisc                     K   ddj                  t        d      D  cg c]  } d|  d| dz    d|  d|  d	|  d
|  d|  d c}       z   dz   }t        t        j	                  |            S c c} w w)Nab  
    <h1>Portfolio Analysis</h1>
    <form action="/tools/portfolio-analysis" method="post">
        <style>
            .input-group { display: flex; align-items: center; margin-bottom: 5px; }
            .input-group label { width: 80px; text-align: right; margin-right: 5px; }
            .input-group input { width: 100px; }
        </style>
        r/   ro   z+<div class="input-group"><label for="tickerz	">Ticker rp   z&:</label><input type="text" id="tickerz" name="tickerz"><label for="weightzI" style="margin-left: 10px;">Weight:</label><input type="text" id="weightz" name="weightz"></div>z
        <label for="start_date">Start date:</label>
        <input type="date" id="start_date" name="start_date" required><br><br>
        
        <input type="submit" value="Run">
    </form>
    rM   rq   rt   s     r&   portfolio_analysis_formr     s      gg r Cy1 .(()s. <C  (()s.8		E 
G,  4 4W 4 EFFs   A/"A*
1A/weight0weight1weight2weight3weight4weight5weight6weight7weight8weight9weight10weight11weight12weight13weight14weight15weight16weight17weight18weight19c)                   K   |||||||||	|
||||||||||fD )cg c]  })|)r|) }*})|||||||||||| |!|"|#|$|%|&|'|(fD +cg c]  }+|+r|+ },}+t        |*      t        |,      k7  r t        t        j                  d            S 	 t	        t        t        |,            },t        |*|,|       \  }-}.}/|- t        t        j                  d            S t        |-      }0d|.dd|/dd|0 d	}1t        t        j                  |1            S c c})w c c}+w # t        $ r# t        t        j                  d            cY S w xY ww)
NzD<h1>Errore</h1><p>Il numero di ticker e pesi deve essere uguale.</p>rM   z9<h1>Errore</h1><p>I pesi devono essere numeri validi.</p>zH<h1>Errore</h1><p>Impossibile scaricare i dati per i ticker forniti.</p>zB
    <h1>Portfolio Analysis Result</h1>
    <p>Rendimento totale: z.2%z</p>
    <p>Max Drawdown: z)</p>
    <img src="data:image/png;base64,z#" alt="Portfolio Performance">
    )
lenr   rT   r2   listmapfloat
ValueErrorr   r   )2rx   r{   r|   r}   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r!   tickers_listweightweights_listr   r   r   rG   rN   s2                                                     r&   portfolio_analysisr     s     +27GWg+2GWgw+3XxS[+3XxS[*] hv ag  hL h +27GWg+2GWgw+3XxS[+3XxS[*] hv ag  hL h
 <C--M$8$8Z %9 %
  	C|45 6UlJ62l !M$8$8^ %9 %
  	   23J', -"3' (%%/L 1	G  4 4W 4 EFFMhh  M$8$8O %9 %
  	s@   ED
E D9ED A6E)E =E?E  Ez/tools/stationarityc                  N   K   d} t        t        j                  |             S w)Na  
    <h1>Stationarity Test</h1>
    <p>Insert a single ticker, choose the data transformation, and perform the Dickey-Fuller test.</p>
    <form action="/calculate_stationarity" method="post">
        <input type="text" name="ticker" placeholder="Enter Ticker" required><br><br>
        
        <label for="transformation">Select Data Transformation:</label>
        <select name="transformation">
            <option value="price" selected>Prices</option>
            <option value="log">Log Prices</option>
            <option value="returns">Returns</option>
        </select>
        <br><br>
        
        <label for="interval">Select Granularity:</label>
        <select name="interval">
            <option value="1d" selected>Daily</option>
            <option value="1wk">Weekly</option>
            <option value="1mo">Monthly</option>
        </select>
        <br><br>
        
        <label for="start_date">Start Date:</label>
        <input type="date" name="start_date" required>
        <br><br>
        
        <label for="end_date">End Date:</label>
        <input type="date" name="end_date" required>
        <br><br>
        
        <button type="submit">Calculate</button>
    </form>
    rM   r   rT   r2   rM   s    r&   stationarity_pager   6  s)      GB  4 4W 4 EFF   #%z/calculate_stationaritypricer!   transformationc           	        K   	 t        j                  | |||      d   }|j                  r t        t        j                  d            S |dk(  rt        j                  |      }n&|dk(  r|j                         j                         }n|}t        |      }d|d   d	d
|d   d	d|d    d|d   dk  rdnd d	}t        j                  d       t        j                  ||  d| d       t        j                  |  d|j                                 t        j                           t#               }	t        j$                  |	d       t        j&                          |	j)                  d       t+        j,                  |	j/                               j1                  d      }
d|
 }d|  d| d| d }t        t        j                  |            S # t2        $ r}d!t5        |       d"}Y d }~=d }~ww xY ww)#Nr   r   u1   <p>⚠️ No data found for the given ticker.</p>rM   logr   z"
        <p><b>ADF Statistic:</b> r   z.4fz </p>
        <p><b>p-value:</b> rp   z(</p>
        <p><b>Critical Values:</b>    z#</p>
        <p><b>Conclusion:</b> g?
StationaryzNon-Stationaryz</p>
        )r      r+   z ())r   z - r0   r1   r3   r   z
        <h1>Results for z</h1>
        z
        <img src="u]   " alt="Time Series Plot">
        <br><a href="/tools/stationarity">🔙 Go back</a>
        u   <p>❌ Error: r   )r   r   r   r   rT   r2   npr   r   r   r   r4   r   r6   rS   
capitalizer   r   r=   rC   r>   r?   r@   rA   rB   r   r   )r!   r   rz   rx   ry   r"   series
adf_resultresult_textr   rG   r   rN   r   s                 r&   stationarityr   [  s    .0{{6HUV]^::(<(<Ex(<(yzz U"VVD\Fy(__&--/FF f%
"",Q-!4 5&qM#. /$$.qM? 3/9!}t/C|IYZ [		 	

7#&N+;1=>		VHC 9 9 ;<=>

 Y
Ju-		%%joo&78??H
*:,7 !		 ) 	  4 4W 4 EFF  0"3q6($/0s<   G9AG G9E(G 4 G9	G6G1,G91G66G9z/blogc                  N   K   d} t        t        j                  |             S w)Na  
    <div style="text-align: center;">
        <h1>Blog Articles</h1>
    </div>
    
    <div style="padding: 20px; text-align: left;">
        <div style="margin-bottom: 20px; display: flex; align-items: center;">
            <img src="path/to/your/image1.jpg" alt="Articolo 1" style="width: 100px; height: 100px; margin-right: 20px;">
            <div>
                <h3><a href="/blog/article/1">Articolo 1: Introduzione alla Finanza Personale</a></h3>
                <p>Un'introduzione completa sulla gestione delle finanze personali.</p>
            </div>
        </div>
    </div>

    <div class="search-container" style="text-align: right; margin-top: 20px;">
        <form action="/search" method="GET" style="display: flex; justify-content: center;">
            <input type="text" name="query" placeholder="Find Articles" style="padding: 10px; font-size: 16px; border-radius: 5px; border: 1px solid #ccc; width: 300px;">
            <button type="submit" style="padding: 10px 20px; font-size: 16px; border: none; background-color: #33A1FF; color: white; border-radius: 5px; cursor: pointer;">Cerca</button>
        </form>
    </div>

    rM   r   rM   s    r&   blogr     s(     G.  4 4W 4 EFFr   z/blog/article/{article_id}
article_idc                 v   K   ddi}|j                  | d      }t        t        j                  |            S w)Nrp   zG
        <h2Test article</h2>
        <p>It is just a test</p>
        zP<h2> Article not found </h2><p> Article you wrote (still) doesn't exist : ) </p>rM   )getr   rT   r2   )r   articlesrN   s      r&   articler    sC      	
 H ll:'yzG 4 4W 4 EFFs   79z/aboutc                  N   K   d} t        t        j                  |             S w)Na  
    <div style="text-align: center;">
        <h1>About Me</h1>
        <p> Who I am? A finance guy, graduated in Finance, in love for finance. I manage this blog, a prop trading account on Darwinex, 
        and a youtube channel in which I like to discuss different topics: Finance, Trading, statistics...
        
        <br> Ops, forgot, I'm from Naples, not Florida, Italy :) 
        <br>
        <br>
        </p>
    </div>
    rM   r   rM   s    r&   aboutr    s(     G  4 4W 4 EFFr   )<fastapi.responsesr   yfinancer   nest_asynciouvicornfastapir   r   	itertoolsr   r   fastapi.templatingr   rO   fastapi.staticfilesr	   pandaspdnumpyr   r<   scipy.optimizer
   seabornr   r?   matplotlib.pyplotpyplotr4   r   statsmodels.tsa.stattoolsr   r   r   r   r   r   applyappr   rT   r'   rH   r  rm   rv   postr   r   r   r   r   r   r   r   r   intr  r   r(   r&   <module>r     s&   *     .  * * .  +   	 #     .   C C +
    ik2	iV
/0 \*PG +PGj 	$\B$G C$GL 
"<@3icJ8DHT"X^bce^f8DHT"X^bce^f8DHd2h`deg`hHd2hRbfgibjHd2hRbfgibj4G4G+.4G4G 4G '*4G @C4G Y\4G 	4G '*	4G @C	4G Y\	4G
 4G
 '*4G
 AD4G
 [^4G 4G ),4G CF4G ]`4G 4G ),4G CF4G ]`4G A4G@ .  	$\BG CG4 
%lC3i8DHT"X^bce^f8DHT"X^bce^f8DHd2h`deg`hHd2hRbfgibjHd2hRbfgibj8DHT"X^bce^f8DHT"X^bce^f8DHd2h`deg`hHd2hRbfgibjHd2hRbfgibj3G3G3G&)3G?B3GX[3G 3G '*3G @C3G Y\3G 	3G '*	3G AD	3G [^	3G
 3G
 ),3G
 CF3G
 ]`3G 3G ),3G CF3G ]`3G 3G '*3G @C3G Y\3G 3G '*3G @C3G Y\3G 3G '*3G AD3G [^3G 3G ),3G CF3G ]`3G 3G ),3G CF3G ]`3G D3GD 	|<"G ="GH 
#LA%)#Yd7meijneo  DH  IL  DM  _c  dg  _h 1Gs 1G 1G_b 1G  ~A 1G  Y\ 1G B1Gh .G /G8 	%lC	Gc 	G D	G ,/G 0Gr(   