
    9j                         d Z ddlZddlZddlZddlZddlmZmZ g dZg dZdddd	d
dZ	dZ
d Zd Zedk(  r e        yy)a  
Sequential random vs optuna comparison runner.

Runs each combo twice: once with --search random, once with --search optuna,
so results can be compared apples-to-apples in the sweep DB.

Usage:
    # BTC 1D only: 45 min random then 45 min optuna
    python3 run_comparison.py --hours 0.75 --assets COINBASE_BTCUSD --tfs 1D

    # All BTC timeframes: 30 min each mode per TF
    python3 run_comparison.py --hours 0.5 --assets COINBASE_BTCUSD

    # Full 20-combo comparison: 30 min each mode per combo (20h total)
    python3 run_comparison.py --hours 0.5

    # Alt coins only
    python3 run_comparison.py --hours 0.5 --assets COINBASE_ETHUSD BINANCE_SOLUSD BINANCE_LINKUSD
    N)datetime	timedelta)COINBASE_BTCUSDCOINBASE_ETHUSDBINANCE_SOLUSDBINANCE_LINKUSD)4H6H8H12H1D240360480720r   u  
examples:
  python3 run_comparison.py --hours 0.75 --assets COINBASE_BTCUSD --tfs 1D
      BTC 1D: 45 min random then 45 min optuna (1.5h total)

  python3 run_comparison.py --hours 0.5 --assets COINBASE_BTCUSD
      BTC all 5 TFs: 30 min each mode = 5h total

  python3 run_comparison.py --hours 0.5
      All 20 combos both modes: 20h total

  python3 run_comparison.py --hours 1.0 --tfs 1D 12H
      All 4 assets × 2 TFs × 2 modes = 16h total
c           
         |  d| d| d}t        dd        t        d| d|dd	       t        d
t        j                         j                  d              t        d        t        j
                  dd|d|dt        |      g}t        j                         }t        j                  |      }t        j                         |z
  }	|j                  dk(  rdnd|j                   }
t        d| d|	dz  dd|
 d       |j                  S )N-z []
<============================================================z  z  (.2fzh)z  Started: %H:%M:%Sztools/auto_optimize_loop.pyz--dataz--search--hoursr   OKzEXIT z
  z finished in <   .1fzm  [)printr   nowstrftimesys
executablestrtime
subprocessrun
returncode)assettf	data_pathsearchhourslabelcmdstartresultelapsedstatuss              9/Users/jameslopez/projects/TradingBot25/run_comparison.pyrun_oner3   4   s
   gQrd"VHA&E	Bvh-	BugSs2
&'	K//
;<
=>	VH>>8Y
FIs5zKCIIKE^^C FiikE!G&&!+T59J9J8K1LF	D}WRZ$4D
BC    c                     t        j                  dt        t         j                        } | j	                  dt
        dd       | j	                  ddd d	d
       | j	                  ddd dd       | j	                  ddddgddgdd       | j                         }|j                  r|j                  nt        }|j                  r|j                  nt        }|D cg c])  }|D ]"  }||d| dt        j                  ||       df$ + }}}t        |      t        |j                        z  }||j                  z  }t!        j"                         t%        |      z   }	t'        dt        |       dt        |j                         d| d       t'        ddj)                  |j                                t'        ddj)                  |              t'        ddj)                  |              t'        d |j                  d!d"|j                  d#z  d$d%       t'        d&|d'd(       t'        d)|	j+                  d*              t'        d+t!        j"                         j+                  d*       d,       d-}
|D ]  \  }}}|j                  D ]  }|
d.z  }
t'        d/|
 d0| d1d23       t-        |||||j                         ||
z
  }|d-kD  s@t!        j"                         t%        ||j                  z        z   }	t'        d4| d5|	j+                  d6                t'        d,d7        t'        d8t!        j"                         j+                  d*              y c c}}w )9Nz>Run random vs optuna comparison on selected assets/timeframes.)descriptionepilogformatter_classr   g      ?u2   Hours per (combo × mode). Default: 0.75 (45 min).)typedefaulthelpz--assets*ASSETzMAssets to run (default: all 4). E.g. --assets COINBASE_BTCUSD COINBASE_ETHUSD)nargsr:   metavarr;   z--tfsTFz5Timeframes to run (default: all 5). E.g. --tfs 1D 12Hz--modesrandomoptunaMODEz\Modes to run (default: random optuna). E.g. --modes optuna  (to skip random if already done))r>   r:   choicesr?   r;   z	data/mlp/z, z.csv)r+   zComparison run: u    combo(s) × z mode(s) = z runsz  Modes:     z  Assets:    z  Timeframes:z  Per run:   r   zh (r   z.0fz min)z  Total:     ~r   hz  ETA:       z%Y-%m-%d %H:%M:%Sz  Started:   r   r      z
[/r    )endz  Remaining: z runs, ETA r   r   zAll done. Finished at: )argparseArgumentParserEXAMPLESRawDescriptionHelpFormatteradd_argumentfloat
parse_argsassets
ALL_ASSETStfs
TIMEFRAMES
_TF_TO_MINgetlenmodesr+   r   r   r   r   joinr   r3   )parserargsrQ   rS   r'   r(   combos
total_runstotal_hoursetarun_numr)   r*   	remainings                 r2   mainrb   F   s=   $$T <<F
 	tQ  S

#tWM  N sD$1  2 	x6J!)8 4fU  V D KKT[[ZFhh$((JCZ`oZ`QVknegubIeWBz~~b"/E.FdKLknLZ`FoVs4::.Jtzz)K
,,.9;7
7C	S[Ms4::6G{S]R^^c
de	M$))DJJ/0
12	M$))F+,
-.	M$))C.)
*+	M$**S)TZZ]3,?u
EF	N;s+1
-.	M#,,':;<
=>	M(,,.112EFGr
JKG &r9jjFqLGCy*Q/R8E2y&$**="W,I1}llnyy4::7M'NNi[CLL<T;UVW ! !' 
Bvh-	#HLLN$;$;<O$P#Q
RS9 ps   .M__main__)__doc__r$   r    rJ   r#   r   r   rR   rT   rU   rL   r3   rb   __name__ r4   r2   <module>rg      s`   (  
   (
 -
eEN
 $2Tj zF r4   