+
    B.j|                     z   R t ^ RIt^ RIt^ RIHtHt ^ RIHt ^ RIHt ^ RI	H
t
HtHtHtHtHtHtHtHtHtHtHt ^ RIHtHt ^ RIHtHtHt ^ RIHt  ! R	 R
]]P                  4      t  ! R R]]P                  4      t! ! R R]]P                  4      t" ! R R]]P                  4      t# ! R R]]P                  4      t$ ! R R]]P                  4      t% ! R R]]P                  4      t& ! R R]]P                  4      t' ! R R]]P                  4      t( ! R R]]P                  4      t) ! R R]]P                  4      t* ! R R ]]P                  4      t+ ! R! R"]]P                  4      t, ! R# R$]]P                  4      t- ! R% R&]]P                  4      t. ! R' R(]4      t/ ! R) R*]4      t0 ! R+ R,]4      t1 ! R- R.]4      t2 ! R/ R0]4      t3 ! R1 R2]4      t4 ! R3 R4]4      t5 ! R5 R6]4      t6 ! R7 R8]4      t7 ! R9 R:]4      t8 ! R; R<]4      t9 ! R= R>]4      t: ! R? R@]4      t; ! RA RB]4      t< ! RC RD]4      t= ! RE RF]4      t> ! RG RH]4      t? ! RI RJ]4      t@ ! RK RL]4      tA ! RM RN]4      tB ! RO RP]4      tC ! RQ RR]4      tD ! RS RT]4      tE ! RU RV]4      tF ! RW RX]4      tG ! RY RZ]4      tHR# )[zSQLAlchemy database models.N)datedatetime)Decimal)Optional)BooleanDateDateTimeEnum
ForeignKeyIndexIntegerNumericStringTextUniqueConstraintfunc)JSONBUUID)Mappedmapped_columnrelationship)Basec                   "    ] tR t^tRtRtRtRtR# )UserRoleadminanalystviewer N)__name__
__module____qualname____firstlineno__ADMINANALYSTVIEWER__static_attributes__r       =C:\xampp\htdocs\tradingbinance\backend\app\models\__init__.pyr   r      s    EGFr&   r   c                   "    ] tR t^#tRtRtRtRtR# )TradingModetestnetpaper
productionr   N)r   r   r    r!   TESTNETPAPER
PRODUCTIONr%   r   r&   r'   r)   r)   #   s    GEJr&   r)   c                   "    ] tR t^)tRtRtRtRtR# )SignalActionBUYSELLHOLDr   N)r   r   r    r!   r2   r3   r4   r%   r   r&   r'   r1   r1   )   s    
CDDr&   r1   c                   "    ] tR t^/tRtRtRtRtR# )	RiskLevellowmediumhighr   N)r   r   r    r!   LOWMEDIUMHIGHr%   r   r&   r'   r6   r6   /   s    
CFDr&   r6   c                       ] tR t^5tRtRtRtR# )	OrderSider2   r3   r   N)r   r   r    r!   r2   r3   r%   r   r&   r'   r>   r>   5   s    
CDr&   r>   c                   &    ] tR t^:tRtRtRtRtRtR# )	OrderTypeMARKETLIMIT	STOP_LOSSTAKE_PROFITr   N)	r   r   r    r!   rA   rB   rC   rD   r%   r   r&   r'   r@   r@   :   s    FEIKr&   r@   c                   :    ] tR t^AtRtRtRtRtRtRt	Rt
RtR	tR
tR# )OrderStatusCREATED	SUBMITTEDPARTIALLY_FILLEDFILLED	CANCELLEDREJECTEDEXPIREDPENDINGOPENr   N)r   r   r    r!   rG   rH   rI   rJ   rK   rL   rM   rN   rO   r%   r   r&   r'   rF   rF   A   s0    GI)FIHGGDr&   rF   c                   *    ] tR t^MtRtRtRtRtRtRt	R# )MarketRegimeTREND_UP
TREND_DOWNRANGEEXTREME_VOLNO_DATAr   N)
r   r   r    r!   rR   rS   rT   rU   rV   r%   r   r&   r'   rQ   rQ   M   s    HJEKGr&   rQ   c                   6    ] tR t^UtRtRtRtRtRtRt	Rt
RtR	tR
# )CircuitBreakerReason
daily_lossconsecutive_lossesws_disconnectedreconciliation_failedorder_latencyflash_crashmanualapi_banr   N)r   r   r    r!   
DAILY_LOSSCONSECUTIVE_LOSSESWS_DISCONNECTEDRECONCILIATION_FAILEDORDER_LATENCYFLASH_CRASHMANUALAPI_BANr%   r   r&   r'   rX   rX   U   s,    J-'O3#MKFGr&   rX   c                   .    ] tR t^`tRtRtRtRtRtRt	Rt
R# )	DataQualityFlag	duplicatemissing_gapout_of_order
zero_pricenegative_pricevolume_anomalyr   N)r   r   r    r!   	DUPLICATEMISSING_GAPOUT_OF_ORDER
ZERO_PRICENEGATIVE_PRICEVOLUME_ANOMALYr%   r   r&   r'   rj   rj   `   s     IK!LJ%N%Nr&   rj   c                       ] tR t^itRtRtRtR# )PositionStatusrO   CLOSEDr   N)r   r   r    r!   rO   ry   r%   r   r&   r'   rx   rx   i   s    DFr&   rx   c                   .    ] tR t^ntRtRtRtRtRtRt	Rt
R# )	CandleInterval1m5m15m1h4h1dr   N)r   r   r    r!   M1M5M15H1H4D1r%   r   r&   r'   r{   r{   n   s     	B	B
C	B	B	Br&   r{   c                   "    ] tR t^wtRtRtRtRtR# )NotificationChannelemailtelegramwhatsappr   N)r   r   r    r!   EMAILTELEGRAMWHATSAPPr%   r   r&   r'   r   r   w   s    EHHr&   r   c                   &    ] tR t^}tRtRtRtRtRtR# )BacktestStatuspendingrunning	completedfailedr   N)	r   r   r    r!   rN   RUNNING	COMPLETEDFAILEDr%   r   r&   r'   r   r   }   s    GGIFr&   r   c                   *    ] tR t^tRtRtRtRtRtRt	R# )
LockReasonrY   rZ   emergency_stopr_   
api_errorsr   N)
r   r   r    r!   ra   rb   EMERGENCY_STOPrg   
API_ERRORSr%   r   r&   r'   r   r      s    J-%NFJr&   r   c                     a  ] tR t^t o Rt]! ]! RR7      R]P                  R7      t	]! ]
! ^4      RRRR7      t]! ]
! ^4      RR7      t]! ]! ]4      ]P                  R7      t]! ]RR7      t]! ]
! ^@4      4      t]! ]RR7      t]! ]! RR	7      ]P.                  ! 4       R
7      t]! ]! RR	7      ]P.                  ! 4       R7      t]! RR7      tV 3R ltRtV tR# )UserusersTas_uuidprimary_keydefaultFuniqueindexnullabler   r   timezoneserver_default)onupdateuserback_populatesc                t  < V ^8  d   Qh/ S[ S[P                  ,          ;R&   S[ S[,          ;R&   S[ S[,          ;R&   S[ S[,          ;R&   S[ S[,          ;R&   S[ S[S[,          ,          ;R&   S[ S[,          ;R&   S[ S[,          ;R&   S[ S[S[,          ,          ;R	&   S[ S[R
,          ,          ;R&   # )   idr   password_hashrole	is_activetotp_secrettotp_enabled
created_at
updated_atAuditLog
audit_logs)	r   uuidr   strr   boolr   r   list)format__classdict__s   "r'   __annotate__User.__annotate__   s      	tyyc  #;\	 
 #;K  
S  d|B  &B  ,F  x d  x)*h  tJ'(N r&   r   N)r   r   r    r!   __tablename__r   r   r   uuid4r   r   r   r   r	   r   r$   r   r   r   r   r   r   r   nowr   r   r   r   __annotate_func__r%   __classdictcell__r   s   @r'   r   r      s     M)$t*<$X\XbXbcB&vc{4tV[\E!.vc{U!KM*4>8??SD+GTBI)6vbz)BK!.w!FL#041HY]YaYaYc#dJ-:8T;R]a]e]e]g-hJ+7v+NJ  r&   r   c                   H  a  ] tR t^t o Rt]! ]! RR7      R]P                  R7      t	]! ]
! ^4      RRRR7      t]! ]
! ^
4      RR7      t]! ]
! ^
4      RR7      t]! ]RR7      t]! ]! ^^4      ]! R	4      R7      t]! ]! ^^4      ]! R
4      R7      t]! ]! ^^4      ]! R	4      R7      t]! ]! ^^4      ]! R4      R7      t]! ]^R7      t]! ]]R7      t]! ]! RR7      ]P:                  ! 4       R7      t]! RR7      t ]! RR7      t!]! RR7      t"]! RR7      t#V 3R lt$Rt%V t&R# )SymbolsymbolsTr   r   Fr   r   r   z0.00001z0.0110r   r   symbolr   c                &  < V ^8  d   Qh/ S[ S[P                  ,          ;R&   S[ S[,          ;R&   S[ S[,          ;R&   S[ S[,          ;R&   S[ S[,          ;R&   S[ S[,          ;R&   S[ S[,          ;R&   S[ S[,          ;R&   S[ S[,          ;R	&   S[ S[,          ;R
&   S[ S[,          ;R&   S[ S[,          ;R&   S[ S[	R,          ,          ;R&   S[ S[	R,          ,          ;R&   S[ S[	R,          ,          ;R&   S[ S[	R,          ,          ;R&   # )r   r   r   
base_assetquote_assetr   min_qty	tick_size	step_sizemin_notionalmax_num_ordersexchange_filtersr   CandlecandlesSignalsignalsOrderordersPosition	positions)
r   r   r   r   r   r   intdictr   r   )r   r   s   "r'   r   Symbol.__annotate__   s0     	tyyc  3K\	 
 sG  H  d|B  G_X  gW  gZ  /X  3KE  TlG  x d   DN#K! " DN#K# $ 4=!I% & d:&'O' r&   r   N)'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   s   @r'   r   r      s#    M)$t*<$X\XbXbcB'r
4tV[\F+F2JGJ,VBZ%HK+GTBI,WR^WYEWXG!.wr1~wv!WI!.wr1~wyGY!ZI$1'"a.'RV-$XL"/"EN%25$%G#041HY]YaYaYc#dJ&2(&KG&2(&KG$0$IF*6h*OI'  r&   r   c                     a  ] tR t^t o Rt]! RRRRR7      ]! RRRR4      3t]! ]	! RR	7      R]
P                  R
7      t]! ]	! RR	7      ]! R4      RR7      t]! ]! ]4      RR7      t]! ]! RR7      RR7      t]! ]! ^^4      RR7      t]! ]! ^^4      RR7      t]! ]! ^^4      RR7      t]! ]! ^^4      RR7      t]! ]! ^^4      RR7      t]! ]! ^^4      ]! R4      R7      t]! ]^ R7      t]! ]! RR7      4      t]! ]RR7      t ]! ]RR7      t!]! ]"]#R7      t$]! ]! RR7      ]%PL                  ! 4       R7      t'](! RR7      t)V 3R lt*Rt+V t,R# )r   r   	symbol_idinterval	open_timeuq_candle_symbol_interval_timename idx_candles_symbol_interval_timeTr   r   
symbols.idFr   r   0r   r   r   c                ,  < V ^8  d   Qh/ S[ S[P                  ,          ;R&   S[ S[P                  ,          ;R&   S[ S[,          ;R&   S[ S[,          ;R&   S[ S[,          ;R&   S[ S[,          ;R&   S[ S[,          ;R&   S[ S[,          ;R&   S[ S[,          ;R	&   S[ S[,          ;R
&   S[ S[,          ;R&   S[ S[S[,          ,          ;R&   S[ S[,          ;R&   S[ S[,          ;R&   S[ S[	,          ;R&   S[ S[,          ;R&   S[ R,          ;R&   # )r   r   r   r   r   openr9   r7   closevolumequote_volumetrades_count
close_time	is_closedis_suspiciousquality_flagsr   r   r   )
r   r   r   r{   r   r   r   r   r   r   )r   r   s   "r'   r   Candle.__annotate__   s:     	tyyc  dii n  ^$Z  hX  /I  /I  
H  '?J  7OK   /W! " +A# $ x)*S% & d|B' ( $<G) * $<D+ , x d- 0 8E1 r&   r   N)-r   r   r    r!   r   r   r   __table_args__r   r   r   r   r   r
   r   r	   r{   r   r   r   r   r   r9   r7   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r%   r   r   s   @r'   r   r      se    Mj+Dde0+z;WN
 *$t*<$X\XbXbcB#0d1CZP\E]hm#nI'4T.5ITY'ZH"/$0GRW"XI)'"a.5ID)'"a.5ID(Q%HC*72q>EJE+GBNUKF$1'"a.'RU,$WL -gq AL-:8T;R-SJ+GTBI"/"GM"/t"DM#041HY]YaYaYc#dJ+9EF1  r&   r   c                     a  ] tR t^t o Rt]! ]! RR7      R]P                  R7      t	]! ]! RR7      ]
! R4      RR7      t]! ]! ^^4      RR7      t]! ]! ^^4      RR7      t]! ]! ^^4      RR7      t]! ]! ^^4      RR7      t]! ]! ^
^4      RR7      t]! ]! ^^4      ]! R4      R	7      t]! ]]R	7      t]! ]]R	7      t]! ]! RR
7      ]P4                  ! 4       RR7      tV 3R ltRtV tR# )MarketSnapshotmarket_snapshotsTr   r   r   Fr   r   r   r   r   r   c                v  < V ^8  d   Qh/ S[ S[P                  ,          ;R&   S[ S[P                  ,          ;R&   S[ S[,          ;R&   S[ S[,          ;R&   S[ S[,          ;R&   S[ S[,          ;R&   S[ S[,          ;R&   S[ S[,          ;R&   S[ S[,          ;R	&   S[ S[,          ;R
&   S[ S[,          ;R&   # )r   r   r   pricebidaskspread
spread_pct
volume_24horderbook_bidsorderbook_asksrecorded_at)r   r   r   r   r   r   )r   r   s   "r'   r   MarketSnapshot.__annotate__   s      	tyyc  dii n	 
 '?J  
H  
H  7OK  wO  wU  4LE  4LE  !q r&   r   N)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   s   @r'   r   r      s     &M)$t*<$X\XbXbcB#0d1CZP\E]hm#nI*72q>EJE(Q%HC(Q%HC+GBNUKF"/A"OJ"/APS"UJ#0#EN#0#EN$1(D2IZ^ZbZbZdlp$qK  r&   r   c                   4  a  ] tR t^t o Rt]! ]! RR7      R]P                  R7      t	]! ]! RR7      ]
! R4      RR7      t]! ]! ^24      RR7      t]! ]! ^^4      RR7      t]! ]! ^^4      RR7      t]! ]RR7      t]! ]! RR	7      RRR
7      tV 3R ltRtV tR# )MarketTrademarket_tradesTr   r   r   Fr   r   r   r   r   c                  < V ^8  d   Qh/ S[ S[P                  ,          ;R&   S[ S[P                  ,          ;R&   S[ S[,          ;R&   S[ S[,          ;R&   S[ S[,          ;R&   S[ S[,          ;R&   S[ S[,          ;R&   # )r   r   r   trade_idr  quantityis_buyer_maker	traded_at)r   r   r   r   r   r   r   )r   r   s   "r'   r   MarketTrade.__annotate__   s      	tyyc  dii n	 
 SkE  '?J  WoM  4LH  hd r&   r   N)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   s   @r'   r  r     s     #M)$t*<$X\XbXbcB#0d1CZP\E]hm#nI)&*uEH*72q>EJE -gb!nu MH#0%#HN"/$0GRW_c"dI  r&   r  c                     a  ] tR t^t o Rt]! ]! RR7      R]P                  R7      t	]! ]
! ^d4      RRR7      t]! ]
! ^24      RR7      t]! ]4      t]! ]]R7      t]! ]RR7      t]! ]
! ^4      R	R7      t]! ]RR7      t]! ]! RR
7      ]P0                  ! 4       R7      t]! RR7      t]! RR7      t]! RR7      tV 3R ltRtV t R# )Strategy
strategiesTr   r   Fr   r   r   r   z1.0.0r   r   strategyr   c                  < V ^8  d   Qh/ S[ S[P                  ,          ;R&   S[ S[,          ;R&   S[ S[,          ;R&   S[ S[S[,          ,          ;R&   S[ S[,          ;R&   S[ S[,          ;R&   S[ S[,          ;R&   S[ S[,          ;R&   S[ S[,          ;R	&   S[ S[R
,          ,          ;R&   S[ S[R,          ,          ;R&   S[ S[R,          ,          ;R&   # )r   r   r   strategy_typedescription
parameters
is_enabledcurrent_versionfeature_flagr   r   r   StrategyVersionversionsBacktestRunbacktest_runs)	r   r   r   r   r   r   r   r   r   )r   r   s   "r'   r   Strategy.__annotate__   s      	tyyc  +O	 
 #;J  &<  tA  tC  C[M  ,E  x d  DN#M  T+,-W  $}-.X r&   r   N)!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   s   @r'   r  r     s      M)$t*<$X\XbXbcB%fSk$OD!.vbzE!JM)6t)<K,UDAJ,WdCJ#0W#MO!.w!EL#041HY]YaYaYc#dJ&2*&MG0<J0WH1=Z1XM  r&   r  c                   ^  a  ] tR t^t o Rt]! RRR4      3t]! ]! RR7      R]	P                  R7      t]! ]! RR7      ]! R4      R	R
7      t]! ]! RR7      ]! R4      R	R
7      t]! ]! ]4      R	R
7      t]! ]R	R
7      t]! ]! ]4      R	R
7      t]! ]! ^^4      ]! R4      R7      t]! ]! ^^4      4      t]! ]! ^^4      4      t]! ]]R7      t]! ]]R7      t]! ]R	R
7      t ]! ]4      t!]! ]"! RR7      ]#PH                  ! 4       R7      t%]&! RR7      t']&! RR7      t(]&! RR7      t)V 3R lt*Rt+V t,R# )r   r   idx_signals_symbol_createdr   r   Tr   r   r   Fr   strategies.idr   r   r   r   r   signalc                l  < V ^8  d   Qh/ S[ S[P                  ,          ;R&   S[ S[P                  ,          ;R&   S[ S[P                  ,          ;R&   S[ S[,          ;R&   S[ S[,          ;R&   S[ S[,          ;R&   S[ S[,          ;R&   S[ S[S[,          ,          ;R&   S[ S[S[,          ,          ;R	&   S[ S[,          ;R
&   S[ S[,          ;R&   S[ S[	,          ;R&   S[ S[S[,          ,          ;R&   S[ S[
,          ;R&   S[ R,          ;R&   S[ R,          ;R&   S[ S[R,          ,          ;R&   # )r   r   r   strategy_idaction
confidence
risk_levelsuggested_size	stop_losstake_profitsupporting_indicatorscontradicting_indicatorsmathematical_reasonensemble_scorer   r   r   r  r  r   r   )r   r   r   r1   r   r6   r   r   r   r   r   r   )r   r   s   "r'   r   Signal.__annotate__   sP     	tyyc	 
 dii n  		"s  < T  sD  y!R  7OY  hw'(H  )*J  "$<L  %TlO   J   8C=)B! " x d# & 8E' ( Z I) * 4=!I+ r&   r   N)-r   r   r    r!   r   r   r   r   r   r   r   r   r
   r   r-  r	   r1   r.  r   r/  r6   r0  r   r   r1  r2  r3  r   r   r4  r5  r   r6  r7  r   r   r   r   r   r   r  r   r   r%   r   r   s   @r'   r   r      s?    M8+|TVN)$t*<$X\XbXbcB#0d1CZP\E]hm#nI%243EzRaGbmr%sK#0l1Ce#TF+GeDJ$1$y/E$RJ&3GBNGTWL&YN+8Q+HI-:72q>-JK*7t*L-:5$-O'4TE'J,9',BN#041HY]YaYaYc#dJ+9EF#/y#IH$0$IF+  r&   r   c                     a  ] tR tRt o Rt]! RRR4      3t]! ]! RR7      R]	P                  R7      t]! ]! RR7      ]! R	4      R
R7      t]! ]! RR7      ]! R4      4      t]! ]! ]4      R
R7      t]! ]! ]4      ]P&                  R7      t]! ]! ]4      ]P,                  R7      t]! ]! ]4      R
R7      t]! ]! ^^4      R
R7      t]! ]! ^^4      4      t]! ]! ^^4      4      t]! ]! ^^4      4      t]! ]! ^^4      4      t]! ]! ^^4      4      t ]! ]! ^^4      ]!! R4      R7      t"]! ]! ^^4      ]!! R4      R7      t#]! ]$! ^d4      4      t%]! ]$! ^@4      RRR7      t&]! ]! ^^4      ]!! R4      R7      t']! ]$! ^4      4      t(]! ])]*R7      t+]! ]$! ^@4      RR7      t,]! ]-4      t.]! ]/! RR7      ]0Pb                  ! 4       R7      t2]! ]/! RR7      4      t3]4! RR7      t5]4! RR7      t6]4! RR7      t7]4! RR7      t8V 3R lt9Rt:V t;R# )r   i  r   idx_orders_status_createdstatusr   Tr   r   r   Fr   z
signals.idr   r   )r   r   r   r   r   r   orderc                N  < V ^8  d   Qh/ S[ S[P                  ,          ;R&   S[ S[P                  ,          ;R&   S[ S[S[P                  ,          ,          ;R&   S[ S[,          ;R&   S[ S[,          ;R&   S[ S[,          ;R&   S[ S[,          ;R&   S[ S[,          ;R&   S[ S[S[,          ,          ;R	&   S[ S[S[,          ,          ;R
&   S[ S[S[,          ,          ;R&   S[ S[S[,          ,          ;R&   S[ S[S[,          ,          ;R&   S[ S[,          ;R&   S[ S[,          ;R&   S[ S[S[	,          ,          ;R&   S[ S[S[	,          ,          ;R&   S[ S[,          ;R&   S[ S[S[	,          ,          ;R&   S[ S[
,          ;R&   S[ S[S[	,          ,          ;R&   S[ S[S[	,          ,          ;R&   S[ S[,          ;R&   S[ S[S[,          ,          ;R&   S[ R,          ;R&   S[ S[R,          ,          ;R&   S[ S[R,          ,          ;R&   S[ S[R,          ,          ;R &   # )!r   r   r   	signal_idside
order_typer;  trading_moder  r  expected_pricefilled_pricer2  r3  
commissionslippageexchange_order_idclient_order_idfilled_quantitystrategy_versionstrategy_params_snapshotcorrelation_idrejection_reasonr   	filled_atr   r   r   r+  	OrderFillfills
OrderEventevents)r   r   r   r   r>   r@   rF   r)   r   r   r   r   r   )r   r   s   "r'   r   Order.__annotate__  sL     	tyyc	 
 dii n  htyy)*h  
L  y!\  ;_  %X  WoM  (7#$D  8G,-M  '*+K  hw'(H   )*J! " wU# $ WoS% & hsm,I' ( HSM*_) * G_Z+ , Xc]+G- . %TlO/ 0 8C=)Q1 2 Xc]+A3 4 x d5 6 hx()R7 : 8D; < 8H%&N= > ${#$K? @ 4%&MA r&   r   N)<r   r   r    r!   r   r   r   r   r   r   r   r   r
   r   r?  r	   r>   r@  r@   rA   rA  rF   rN   r;  r)   rB  r   r  r  rC  rD  r2  r3  r   rE  rF  r   rG  rH  rI  rJ  r   r   rK  rL  r   rM  r   r   r   r   rN  r   r   r+  rP  rR  r   r%   r   r   s   @r'   r   r     s    M7<PRN)$t*<$X\XbXbcB#0d1CZP\E]hm#nI-:4;MzZfOg-hI+DOeLD$1$y/9K[K[$\J"/[0A;K^K^"_F(5d;6GRW(XL -gb!nu MH'4WR^'DE0=gb!n0MN.;GBN.KL+8Q+HI-:72q>-JK"/APS"UJ -gb!ngcl SH/<VC[/I-:6":dZ^-_O'4WR^WUX\'ZO.;F2J.G-:5$-O,9&*D,QN.;D.A#041HY]YaYaYc#dJ,9(D:Q,RI+8DF)5X)NF'37'KE)5W)MFA  r&   r   c                   \  a  ] tR tRt o Rt]! ]! RR7      R]P                  R7      t	]! ]! RR7      ]
! R4      RR7      t]! ]! ^^4      RR7      t]! ]! ^^4      RR7      t]! ]! ^^4      ]! R	4      R
7      t]! ]! RR7      ]P&                  ! 4       R7      t]! RR7      tV 3R ltRtV tR# )rO  i6  order_fillsTr   r   	orders.idFr   r   r   r   r   rP  r   c                  < V ^8  d   Qh/ S[ S[P                  ,          ;R&   S[ S[P                  ,          ;R&   S[ S[,          ;R&   S[ S[,          ;R&   S[ S[,          ;R&   S[ S[,          ;R&   S[ R,          ;R&   # )	r   r   order_idr  r  rE  rN  r   r=  )r   r   r   r   r   )r   r   s   "r'   r   OrderFill.__annotate__6  s      	tyyc  TYYl	 
 '?J  WoM  wU  hc  '?A r&   r   N)r   r   r    r!   r   r   r   r   r   r   r
   rX  r   r  r  r   rE  r   r   r   rN  r   r=  r   r%   r   r   s   @r'   rO  rO  6  s     !M)$t*<$X\XbXbcB"/T0BJ{D[fk"lH*72q>EJE -gb!nu MH"/APS"UJ"/$0GX\X`X`Xb"cI)AE  r&   rO  c                     a  ] tR tRt o Rt]! ]! RR7      R]P                  R7      t	]! ]! RR7      ]
! R4      RR7      t]! ]! RR7      ]
! R	4      4      t]! ]! ]4      ]P                  R
7      t]! ]! ]4      RR7      t]! ]! ^^4      RR7      t]! ]! ^^4      RR7      t]! ]! ^^4      RR7      t]! ]! ^^4      RR7      t]! ]! ^^4      4      t]! ]! ^^4      ]! R4      R
7      t]! ]! ^^4      ]! R4      R
7      t]! ]! RR7      ]P<                  ! 4       R7      t]! ]! RR7      4      t ]!! RR7      t"V 3R lt#Rt$V t%R# )r   iC  r   Tr   r   r   Fr   rV  r   r   r   r   r   c                (  < V ^8  d   Qh/ S[ S[P                  ,          ;R&   S[ S[P                  ,          ;R&   S[ S[S[P                  ,          ,          ;R&   S[ S[,          ;R&   S[ S[,          ;R&   S[ S[,          ;R&   S[ S[,          ;R&   S[ S[,          ;R&   S[ S[,          ;R	&   S[ S[S[,          ,          ;R
&   S[ S[,          ;R&   S[ S[,          ;R&   S[ S[,          ;R&   S[ S[S[,          ,          ;R&   S[ R,          ;R&   # )r   r   r   entry_order_idr;  rB  entry_pricer  r2  r3  trailing_stopunrealized_pnlrealized_pnl	opened_at	closed_atr   r   )r   r   r   r   rx   r)   r   r   )r   r   s   "r'   r   Position.__annotate__C  s(     	tyyc  dii n	 
 8DII./l  >"e  %X  P  WoM  gN  P  (7+,L  7OY  /W  hc   hx()R! $ 8G% r&   r   N)&r   r   r    r!   r   r   r   r   r   r   r
   r   r\  r	   rx   rO   r;  r)   rB  r   r]  r  r2  r3  r^  r   r_  r`  r   r   r   ra  rb  r   r   r   r%   r   r   s   @r'   r   r   C  sA    M)$t*<$X\XbXbcB#0d1CZP\E]hm#nI2?T@RT^_jTk2lN%243GQ_QdQd%eF(5d;6GRW(XL#0Q%#PK -gb!nu MH!.wr1~!NI#0Q%#PK/<WR^/LM&3GBNGTWL&YN$1'"a.'RU,$WL"/$0GX\X`X`Xb"cI,9(D:Q,RI+;GF%  r&   r   c                     a  ] tR tRt o Rt]! ]! RR7      R]P                  R7      t	]! ]
! ^d4      RRR7      t]! ]! ^^4      ]! R4      R	7      t]! ]! ^^4      ]! R
4      R	7      t]! ]^
R	7      t]! ]^R	7      t]! ]^KR	7      t]! ]^(R	7      t]! ]! ^^4      ]! R4      R	7      t]! ]RR	7      t]! ]! ^
^4      ]! R4      R	7      t]! ]! ^
^4      ]! R4      R	7      t]! ]! ^^4      ]! R4      R	7      t]! ]^R	7      t]! ]! ^^4      ]! R4      R	7      t]! ]RR	7      t]! ]! RR7      ]P@                  ! 4       R7      t!V 3R lt"Rt#V t$R# )RiskProfileiX  risk_profilesTr   r   Fr  z0.75r   z2.5z0.250.1z0.5z3.0z0.8r   r   c                
  < V ^8  d   Qh/ S[ S[P                  ,          ;R&   S[ S[,          ;R&   S[ S[,          ;R&   S[ S[,          ;R&   S[ S[,          ;R&   S[ S[,          ;R&   S[ S[,          ;R&   S[ S[,          ;R&   S[ S[,          ;R	&   S[ S[,          ;R
&   S[ S[,          ;R&   S[ S[,          ;R&   S[ S[,          ;R&   S[ S[,          ;R&   S[ S[,          ;R&   S[ S[,          ;R&   S[ S[,          ;R&   # )r   r   r   max_risk_per_trade_pctmax_daily_loss_pctmax_trades_per_daymax_consecutive_lossesmin_confidence_buyensemble_sell_threshold	kelly_captrailing_stop_enabledmax_spread_pctmin_volume_ratiomax_aggregate_risk_pctmax_open_positionsmax_correlation
is_defaultr   )r   r   r   r   r   r   r   r   )r   r   s   "r'   r   RiskProfile.__annotate__X  s,     	tyyc  +O	 
 #7Oc  w^  sH  #3KK  sH  $C[M  gV  "$<O  7O[  Wo]  #7Ob   sG! " G_[# $ tD% & x d' r&   r   N)%r   r   r    r!   r   r   r   r   r   r   r   r   r   r   ri  rj  r   rk  rl  rm  rn  ro  r   rp  rq  rr  rs  rt  ru  rv  r   r   r   r   r   r%   r   r   s   @r'   re  re  X  sZ    #M)$t*<$X\XbXbcB%fSk$OD.;GAqMSZ[aSb.c*71wW\~*^&3GR&H*7*K&3GR&H+8"+M!.wq!}gfo!VI*7*O&3GBNGTYN&[N(5gb!ngV[n(].;GAqMSZ[`Sa.b&3GQ&G'4WQ]GTYN'[O,WeDJ#041HY]YaYaYc#dJ'  r&   re  c                     a  ] tR tRt o Rt]! RRR7      3t]! ]! RR7      R]	P                  R7      t]! ]R	RR
7      t]! ]! ^^4      R	R7      t]! ]! ^^4      R	R7      t]! ]! ^^4      ]! R4      R7      t]! ]! ^
^4      ]! R4      R7      t]! ]^ R7      t]! ]^ R7      t]! ]R	R7      t]! ]! ]4      4      tV 3R ltRtV tR# )DailyRiskStatein  daily_risk_statetrading_dateuq_daily_risk_dater   Tr   r   Fr  r   r   r   c                V  < V ^8  d   Qh/ S[ S[P                  ,          ;R&   S[ S[,          ;R&   S[ S[,          ;R&   S[ S[,          ;R&   S[ S[,          ;R&   S[ S[,          ;R&   S[ S[,          ;R&   S[ S[,          ;R&   S[ S[,          ;R	&   S[ S[S[,          ,          ;R
&   # )r   r   r{  starting_capitalcurrent_capital	daily_pnldaily_loss_pctr   rZ   	is_lockedlock_reason)	r   r   r   r   r   r   r   r   r   )r   r   s   "r'   r   DailyRiskState.__annotate__n  s      	tyyc	 
 ,P  WoU  G_T  gT  7OY  +A  sG  d|C  ,-O r&   r   N)r   r   r    r!   r   r   r   r   r   r   r   r   r   r{  r   r~  r  r   r  r  r   r   rZ   r   r  r	   r   r  r   r%   r   r   s   @r'   ry  ry  n  s     &M&~<PQSN)$t*<$X\XbXbcB!.te4!PL(5gb!nu(U'4WR^e'TO!.wr1~ws|!TI&3GBNGTWL&YN -gq AL&3GQ&G+GUCI0=d:>N0OK  r&   ry  c                     a  ] tR tRt o Rt]! ]! RR7      R]P                  R7      t	]! ]! RR7      ]
! R4      RR7      t]! ]! RR7      ]
! R	4      RR7      t]! ]! ]4      RR7      t]! ]! RR
7      RR7      t]! ]! RR
7      RR7      t]! ]! ^^4      RR7      t]! ]! ^^4      4      t]! ]! ^
^4      4      t]! ]! ^
^4      4      t]! ]! ^
^4      4      t]! ]! ^
^4      4      t]! ]! ^
^4      4      t]! ]! ^
^4      4      t]! ]! ^^4      4      t]! ]! ^
^4      4      t]! ]! ^
^4      ]! R4      R7      t]! ]! ^
^4      ]! R4      R7      t ]! ]!]"R7      t#]! ]! ]$4      ]$PJ                  R7      t&]! ]'4      t(]! ]! RR
7      ])PT                  ! 4       R7      t+]! ]! RR
7      4      t,]-! RR7      t.]-! RR7      t/V 3R lt0Rt1V t2R# )r%  i~  r&  Tr   r   r*  Fr   r   r   rg  r   z0.05r   r   backtest_runc                  < V ^8  d   Qh/ S[ S[P                  ,          ;R&   S[ S[P                  ,          ;R&   S[ S[P                  ,          ;R&   S[ S[,          ;R&   S[ S[,          ;R&   S[ S[,          ;R&   S[ S[,          ;R&   S[ S[S[,          ,          ;R&   S[ S[S[,          ,          ;R	&   S[ S[S[,          ,          ;R
&   S[ S[S[,          ,          ;R&   S[ S[S[,          ,          ;R&   S[ S[S[,          ,          ;R&   S[ S[S[,          ,          ;R&   S[ S[S[,          ,          ;R&   S[ S[S[,          ,          ;R&   S[ S[,          ;R&   S[ S[,          ;R&   S[ S[,          ;R&   S[ S[,          ;R&   S[ S[S[	,          ,          ;R&   S[ S[,          ;R&   S[ S[S[,          ,          ;R&   S[ R,          ;R&   S[ S[
R,          ,          ;R&   # )r   r   r-  r   r   
start_dateend_dateinitial_capitalfinal_capitaltotal_return_pctmax_drawdownsharpe_ratiosortino_ratiowin_rateprofit_factorexpected_valuebuy_hold_returncommission_pctslippage_pctmetricsr;  error_messager   completed_atr  r  BacktestTradetrades)r   r   r   r{   r   r   r   r   r   r   r   )r   r   s   "r'   r   BacktestRun.__annotate__~  s
     	tyyc  		"s	 
 dii n  ^$Z  x Y  XW  G_T  (7+,L  Xg./O  '*+K  '*+K  (7+,L  Xg&'G   (7+,L! " 8G,-M# $ HW-.N% & 7O[' ( /Z) * D\>+ , >"h- . (3-(>/ 0 x d1 2 (+,U3 6 Z O7 8 4()W9 r&   r   N)3r   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   rN   r;  r   r  r   r   r   r  r   r  r  r   r%   r   r   s   @r'   r%  r%  ~  s    #M)$t*<$X\XbXbcB%243EzRaGbmr%sK#0d1CZP\E]hm#nI'4T.5ITY'ZH#041HSX#YJ!.x/FQV!WH'4WR^e'TO/<WR^/LM2?A2O.;GBN.KL.;GBN.KL/<WR^/LM*7A*GH/<WR^/LM0=gb!n0MN1>wr1~1NO&3GBNGTYN&[N$1'"a.'RX/$ZL)%>G%243GQ_QgQg%hF+8+>M#041HY]YaYaYc#dJ/<Xt=T/UL#/#OH,8,WF9  r&   r%  c                     a  ] tR tRt o Rt]! ]! RR7      R]P                  R7      t	]! ]! RR7      ]
! R4      RR7      t]! ]! ]4      RR7      t]! ]! ^^4      RR7      t]! ]! ^^4      RR7      t]! ]! ^^4      RR7      t]! ]! ^^4      RR7      t]! ]! ^
^4      RR7      t]! ]! ^^4      ]! R	4      R
7      t]! ]! RR7      RR7      t]! ]! RR7      RR7      t]! ]! ^24      RR7      t]! RR7      tV 3R ltRtV t R# )r  i  backtest_tradesTr   r   zbacktest_runs.idFr   r   r   r   r  r   c                  < V ^8  d   Qh/ S[ S[P                  ,          ;R&   S[ S[P                  ,          ;R&   S[ S[,          ;R&   S[ S[,          ;R&   S[ S[,          ;R&   S[ S[,          ;R&   S[ S[,          ;R&   S[ S[,          ;R&   S[ S[,          ;R	&   S[ S[,          ;R
&   S[ S[,          ;R&   S[ S[,          ;R&   S[ R,          ;R&   # )r   r   backtest_run_idr@  r]  
exit_pricer  pnlpnl_pctrE  
entry_time	exit_timeexit_reasonr%  r  )r   r   r   r>   r   r   r   )r   r   s   "r'   r   BacktestTrade.__annotate__  s      	tyyc  DII&z	 
 
L  P  wO  WoM  
H  G_L  wU  x Y  hX  H   'O! r&   r   N)!r   r   r    r!   r   r   r   r   r   r   r
   r  r	   r>   r@  r   r]  r  r  r  r  r   rE  r   r  r  r   r  r   r  r   r%   r   r   s   @r'   r  r    s    %M)$t*<$X\XbXbcB)6tD7I:VhKity)zO+DOeLD#0Q%#PK"/A"OJ -gb!nu MH(Q%HC,WR^eLG"/APS"UJ#041HSX#YJ"/$0GRW"XI,VBZ%HK*6h*OL!  r&   r  c                     a  ] tR tRt o Rt]! ]! RR7      R]P                  R7      t	]! ]
! ]4      ]P                  R7      t]! ]RR7      t]! ]]R7      t]! ]]R7      t]! ]! RR7      ]! R4      4      t]! ]! RR	7      4      t]! ]RR7      t]! ]! RR	7      4      t]! ]]R7      t]! ]RR7      t]! ]! ^^4      4      t]! ]! RR	7      ]P@                  ! 4       ]P@                  ! 4       R
7      t!V 3R lt"Rt#V t$R# )	BotConfigi  bot_configsTr   r   r   Fzrisk_profiles.idr   )r   r   c                  < V ^8  d   Qh/ S[ S[P                  ,          ;R&   S[ S[,          ;R&   S[ S[,          ;R&   S[ S[,          ;R&   S[ S[,          ;R&   S[ S[S[P                  ,          ,          ;R&   S[ S[S[,          ,          ;R&   S[ S[,          ;R&   S[ S[S[,          ,          ;R	&   S[ S[,          ;R
&   S[ S[,          ;R&   S[ S[S[	,          ,          ;R&   S[ S[,          ;R&   # )r   r   rB  r   active_symbolsstrategy_weightsrisk_profile_idpaper_start_dateproduction_approvedproduction_approved_atstrategy_flagscircuit_breaker_activecanary_capitalr   )
r   r   r   r)   r   r   r   r   r   r   )r   r   s   "r'   r   BotConfig.__annotate__  s     	tyyc  %e	 
 4LH  4LE  TlG  HTYY/0t  Xh/0Y   M  #8H#56_  4LE  #4LP  8G,-M  x y r&   r   N)%r   r   r    r!   r   r   r   r   r   r   r	   r)   r-   rB  r   r   r   r   r  r   r  r
   r  r   r  r  r  r  r  r   r  r   r   r   r   r%   r   r   s   @r'   r  r    s     !M)$t*<$X\XbXbcB(5d;6GQ\QdQd(eL#0%#HN#0#EN%25$%G3@dASU_`rUs3tO3@SWAX3Y(5gu(M9FxY]G^9_#0#EN+8%+P0=gb!n0MN#041HY]YaYaYcnrnvnvnx#yJ  r&   r  c                     a  ] tR tRt o Rt]! RR4      3t]! ]! RR7      R]	P                  R7      t]! ]! RR7      ]! R4      4      t]! ]! ^d4      R	R
7      t]! ]! ^24      R	R
7      t]! ]! RR7      4      t]! ]4      t]! ]4      t]! ]! ^-4      4      t]! ]! ^4      4      t]! ]! RR7      ]P2                  ! 4       R7      t]! RR7      tV 3R ltRtV tR# )r   i  r   idx_audit_logs_createdr   Tr   r   users.idFr   r   r   r   c                  < V ^8  d   Qh/ S[ S[P                  ,          ;R&   S[ S[S[P                  ,          ,          ;R&   S[ S[,          ;R&   S[ S[,          ;R&   S[ S[S[P                  ,          ,          ;R&   S[ S[S[,          ,          ;R&   S[ S[S[,          ,          ;R&   S[ S[S[,          ,          ;R&   S[ S[S[,          ,          ;R	&   S[ S[,          ;R
&   S[ S[R,          ,          ;R&   # )r   r   user_idr.  entity_type	entity_id	old_value	new_value
ip_address
user_agentr   r   r   r   r   r   r   r   r   r   )r   r   s   "r'   r   AuditLog.__annotate__  s      	tyyc	 
 HTYY'(d  3KD  H  htyy)*N  htn%<  htn%<  x}%A  x}%B  x d  &!
"N r&   r   N) 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   s   @r'   r   r     s      M4lCEN)$t*<$X\XbXbcB+8d9KZXbMc+dG'seDF,VBZ%HK-:4;M-NI(5e(<I(5e(<I(5fRj(AJ(5fSk(BJ#041HY]YaYaYc#dJ%1%ND  r&   r   c                   4  a  ] tR tRt o Rt]! RR4      3t]! ]! RR7      R]	P                  R7      t]! ]! ^24      RR	7      t]! ]! ^4      RR	7      t]! ]4      t]! ]RR	7      t]! ]]R
7      t]! ]! RR7      ]P0                  ! 4       R7      tV 3R ltRtV tR# )ApiErrori  r   idx_api_errors_createdr   Tr   r   Fr   r   r   r   c                  < V ^8  d   Qh/ S[ S[P                  ,          ;R&   S[ S[,          ;R&   S[ S[,          ;R&   S[ S[S[,          ,          ;R&   S[ S[,          ;R&   S[ S[,          ;R&   S[ S[,          ;R&   # )r   r   serviceendpointstatus_coder  request_contextr   )r   r   r   r   r   r   r   r   )r   r   s   "r'   r   ApiError.__annotate__  s      	tyyc	 
 C[D  SkF  &?  #;D  D\F  x d r&   r   N)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   s   @r'   r  r    s      M4lCEN)$t*<$X\XbXbcB(eDG)&+FH)6w)?K!.te!DM$1%$FO#041HY]YaYaYc#dJ  r&   r  c                   b  a  ] tR tRt o Rt]! ]! RR7      R]P                  R7      t	]! ]
! ]4      RR7      t]! ]! ^24      RR7      t]! ]! ^4      RR7      t]! ]RR7      t]! ]]R7      t]! ]RR7      t]! ]! RR	7      4      t]! ]! RR	7      ]P4                  ! 4       R
7      tV 3R ltRtV tR# )Notificationi  notificationsTr   r   Fr   r   r   r   c                :  < V ^8  d   Qh/ S[ S[P                  ,          ;R&   S[ S[,          ;R&   S[ S[,          ;R&   S[ S[,          ;R&   S[ S[,          ;R&   S[ S[,          ;R&   S[ S[,          ;R&   S[ S[S[,          ,          ;R&   S[ S[,          ;R	&   # )
r   r   channel
event_typetitlemessagepayloadis_sentsent_atr   )	r   r   r   r   r   r   r   r   r   )r   r   s   "r'   r   Notification.__annotate__  s      	tyyc  '(c	 
 sG  #;C  C[>  D\>  D\A  HX&'P  x d r&   r   N)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   s   @r'   r  r    s     #M)$t*<$X\XbXbcB+8>Q9R]b+cG+F2JGJ&vc{UCE(>G)%>G)'5AG*7$8O*PG#041HY]YaYaYc#dJ  r&   r  c                     a  ] tR tRt o RtRt]! ]! RR7      R]P                  R7      t
]! ]! ^4      RRR7      t]! ]! ]4      RR	7      t]! ]RR	7      t]! ]! ]4      RR	7      t]! ]RR
7      t]! ]4      t]! ]]R
7      t]! ]]R
7      t]! ]RR	7      t]! ]]R
7      t]! ]! ]4      4      t]! ]! ^@4      RR7      t ]! ]! ^4      4      t!]! ]"! RR7      ]#PH                  ! 4       RR7      t%V 3R lt&Rt'V t(R# )DecisionLogi  z<Immutable log of every trading decision with full reasoning.decision_logsTr   r   Fr  r   r   r<  r   r  c                  < V ^8  d   Qh/ S[ S[P                  ,          ;R&   S[ S[,          ;R&   S[ S[,          ;R&   S[ S[,          ;R&   S[ S[,          ;R&   S[ S[,          ;R&   S[ S[S[,          ,          ;R&   S[ S[	,          ;R&   S[ S[	,          ;R	&   S[ S[,          ;R
&   S[ S[	,          ;R&   S[ S[S[
,          ,          ;R&   S[ S[S[,          ,          ;R&   S[ S[S[,          ,          ;R&   S[ S[,          ;R&   # )r   r   r   r.  r/  r0  was_executedblock_reasonr4  r5  r6  indicators_snapshotmarket_regimerL  rJ  r   )r   r   r   r   r1   r   r6   r   r   r   rQ   r   )r   r   s   "r'   r   DecisionLog.__annotate__  s!    
 	tyyc  3KO  < T  sD  y!R  ,F  #'=  "$<L  %TlO   J   J   (<01U! " 8C=)Q# $ Xc]+G% & x p' r&   r   N))r   r   r    r!   __doc__r   r   r   r   r   r   r   r   r	   r1   r.  r   r/  r6   r0  r   r  r   r  r   r   r4  r5  r6  r  rQ   r  rL  rJ  r   r   r   r   r   r%   r   r   s   @r'   r  r    s    F#M)$t*<$X\XbXbcB'r
U$OF#0l1Ce#TF+GeDJ$1$y/E$RJ!.w!FL*7*=L*7t*L-:5$-O'4TE'J(5eT(J4A$|BT4UM,9&*D,QN.;F2J.G#041HY]YaYaYcko#pJ'  r&   r  c                   t  a  ] tR tRt o RtRt]! RRR4      3t]! ]	! RR7      R]
P                  R	7      t]! ]	! RR7      ]! R
4      RR7      t]! ]! ^4      4      t]! ]! ^4      RR7      t]! ]! ^4      RR7      t]! ]]R7      t]! ]! RR7      ]P0                  ! 4       R7      t]! RR7      tV 3R ltRtV tR# )rQ  i  z%Immutable order state transition log.order_eventsidx_order_events_order_createdrX  r   Tr   r   rV  Fr   r   r   r   rR  r   c                0  < V ^8  d   Qh/ S[ S[P                  ,          ;R&   S[ S[P                  ,          ;R&   S[ S[S[,          ,          ;R&   S[ S[,          ;R&   S[ S[,          ;R&   S[ S[,          ;R&   S[ S[,          ;R&   S[ R,          ;R	&   # )
r   r   rX  from_status	to_statuscausecontextr   r   r=  r  )r   r   s   "r'   r   OrderEvent.__annotate__  s      	tyyc  TYYl  &B  c{F  #;C  D\>  x d  '?B r&   r   N)r   r   r    r!   r  r   r   r   r   r   r   r   r   r
   rX  r   r  r  r  r   r   r  r   r   r   r   r   r=  r   r%   r   r   s   @r'   rQ  rQ    s     /"M<j,WYN)$t*<$X\XbXbcB"/T0BJ{D[fk"lH)6vbz)BK*6":FI&vc{UCE)%>G#041HY]YaYaYc#dJ)BE  r&   rQ  c                     a  ] tR tRt o Rt]! RRRR7      3t]! ]! RR7      R]	P                  R	7      t]! ]! RR7      ]! R
4      RR7      t]! ]! ^4      RR7      t]! ]]R7      t]! ]4      t]! ]RR7      t]! ]! RR7      ]! R4      4      t]! ]! RR7      ]P4                  ! 4       R7      t]! RR7      tV 3R ltRtV t R# )r#  i  strategy_versionsr-  versionuq_strategy_versionr   Tr   r   r*  Fr   r   r  r   r   r$  r   c                p  < V ^8  d   Qh/ S[ S[P                  ,          ;R&   S[ S[P                  ,          ;R&   S[ S[,          ;R&   S[ S[,          ;R&   S[ S[S[,          ,          ;R&   S[ S[,          ;R&   S[ S[S[P                  ,          ,          ;R&   S[ S[,          ;R&   S[ R	,          ;R
&   # )r   r   r-  r  r  	changelogr   
created_byr   r  r  )r   r   r   r   r   r   r   r   )r   r   s   "r'   r   StrategyVersion.__annotate__  s      	tyyc	 
 		"s  C[D  tA  hsm$:  d|B  x		*+g  x d  Z J r&   r   N)!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   s   @r'   r#  r#    s     'M&}iF[\^N)$t*<$X\XbXbcB%243EzRaGbmr%sK(eDG,UDAJ'4T':I+GTBI.;D<NPZ[ePf.gJ#041HY]YaYaYc#dJ#/z#JH  r&   r#  c                   n  a  ] tR tRt o Rt]! RR4      3t]! ]! RR7      R]	P                  R7      t]! ]! ^24      RR	7      t]! ]! RR7      RR	7      t]! ]! ^d4      RR	7      t]! ]4      t]! ]RR	7      t]! ]! RR7      ]! R
4      4      t]! ]! RR7      ]P.                  ! 4       R7      tV 3R ltRtV tR# )ConfigHistoryi&  config_historyidx_config_history_createdr   Tr   r   Fr   r  r   r   c                V  < V ^8  d   Qh/ S[ S[P                  ,          ;R&   S[ S[,          ;R&   S[ S[P                  ,          ;R&   S[ S[,          ;R&   S[ S[S[,          ,          ;R&   S[ S[,          ;R&   S[ S[S[P                  ,          ,          ;R&   S[ S[,          ;R&   # )	r   r   r  r  
field_namer  r  
changed_byr   )r   r   r   r   r   r   )r   r   s   "r'   r   ConfigHistory.__annotate__&  s      	tyyc	 
 H  dii T  sH  hsm$:  c{@  x		*+g  x d r&   r   N)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   s   @r'   r  r  &  s     $M8,GIN)$t*<$X\XbXbcB,VBZ%HK#0d1Ce#TI+F3K%HJ'4T':I*4%@I.;D<NPZ[ePf.gJ#041HY]YaYaYc#dJ  r&   r  c                   &  a  ] tR tRt o Rt]! ]! RR7      R]P                  R7      t	]! ]
! ^24      RR7      t]! ]
! ^4      RR7      t]! ]RR7      t]! ]]R7      t]! ]RR7      t]! ]! RR	7      ]P,                  ! 4       RR
7      tV 3R ltRtV tR# )	RiskEventi4  risk_eventsTr   r   Fr   r   r   r  c                   < V ^8  d   Qh/ S[ S[P                  ,          ;R&   S[ S[,          ;R&   S[ S[,          ;R&   S[ S[,          ;R&   S[ S[,          ;R&   S[ S[,          ;R&   S[ S[,          ;R&   # )r   r   r  severityr  r  resolvedr   )r   r   r   r   r   r   r   )r   r   s   "r'   r   RiskEvent.__annotate__4  s      	tyyc  sG	 
 SkE  C[>  D\>  TlB  x p r&   r   N)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   s   @r'   r  r  4  s     !M)$t*<$X\XbXbcB+F2JGJ)&*uEH(>G)%>G*7EBH#041HY]YaYaYcko#pJ  r&   r  c                   :  a  ] tR tRt o Rt]! ]! RR7      R]P                  R7      t	]! ]
! ]4      RR7      t]! ]]R7      t]! ]RR7      t]! ]! RR	7      4      t]! ]! RR7      ]! R
4      4      t]! ]! RR	7      ]P.                  ! 4       R7      tV 3R ltRtV tR# )CircuitBreakerEventi@  circuit_breaker_eventsTr   r   Fr   r   r   r  r   c                &  < V ^8  d   Qh/ S[ S[P                  ,          ;R&   S[ S[,          ;R&   S[ S[,          ;R&   S[ S[,          ;R&   S[ S[S[,          ,          ;R&   S[ S[S[P                  ,          ,          ;R&   S[ S[,          ;R&   # )r   r   reasonr  r   reset_atreset_byr   )r   r   r   rX   r   r   r   r   )r   r   s   "r'   r    CircuitBreakerEvent.__annotate__@  s      	tyyc  '(d	 
 D\>  d|B  Xh'(Q  Xdii()e  x d r&   r   N)r   r   r    r!   r   r   r   r   r   r   r	   rX   r  r   r   r  r   r   r   r  r
   r  r   r   r   r   r%   r   r   s   @r'   r  r  @  s     ,M)$t*<$X\XbXbcB+8>R9S^c+dF)%>G+GTBI+849P+QH,9$t:LjYcNd,eH#041HY]YaYaYc#dJ  r&   r  c                   &  a  ] tR tRt o Rt]! RRR4      3t]! ]! RR7      R]	P                  R7      t]! ]! ^4      R	R
7      t]! ]! ]4      R	R
7      t]! ]]R7      t]! ]]R7      t]! ]! RR7      ]P0                  ! 4       R7      tV 3R ltRtV tR# )MarketRegimeLogiL  market_regime_logsidx_regime_symbol_createdr   r   Tr   r   Fr   r   r   r   c                   < V ^8  d   Qh/ S[ S[P                  ,          ;R&   S[ S[,          ;R&   S[ S[,          ;R&   S[ S[,          ;R&   S[ S[,          ;R&   S[ S[,          ;R&   # )r   r   r   regime
indicatorsactive_strategiesr   )r   r   r   r   rQ   r   r   r   )r   r   s   "r'   r   MarketRegimeLog.__annotate__L  sr      	tyyc	 
 3KC  < T  tA  d|H  x d r&   r   N)r   r   r    r!   r   r   r   r   r   r   r   r   r   r   r	   rQ   r  r   r   r  r   r  r   r   r   r   r   r%   r   r   s   @r'   r
  r
  L  s     (M7<PRN)$t*<$X\XbXbcB'r
UCF#0l1Ce#TF,UDAJ&3E4&H#041HY]YaYaYc#dJ  r&   r
  c                      a  ] tR tRt o Rt]! ]! RR7      R]P                  R7      t	]! ]
! ^24      RRR7      t]! ]! RR7      RR	7      t]! ]]R
7      tV 3R ltRtV tR# )BotHeartbeatiX  bot_heartbeatsTr   r   F)r   r   r   r   r   c                   < V ^8  d   Qh/ S[ S[P                  ,          ;R&   S[ S[,          ;R&   S[ S[,          ;R&   S[ S[,          ;R&   # )r   r   worker_name	last_seenmetadata)r   r   r   r   r   r   )r   r   s   "r'   r   BotHeartbeat.__annotate__X  sO      	tyyc  U	 
 hX  Tl? r&   r   N)r   r   r    r!   r   r   r   r   r   r   r   r  r   r  r   r   r  r   r%   r   r   s   @r'   r  r  X  s\     $M)$t*<$X\XbXbcB,VBZ%PTUK"/$0GRW"XI*5$?H  r&   r  )Ir  enumr   r   r   decimalr   typingr   
sqlalchemyr   r   r   r	   r
   r   r   r   r   r   r   r   sqlalchemy.dialects.postgresqlr   r   sqlalchemy.ormr   r   r   app.core.databaser   r   r   r)   r1   r6   r>   r@   rF   rQ   rX   rj   rx   r{   r   r   r   r   r   r   r   r  r  r   r   rO  r   re  ry  r%  r  r  r   r  r  r  rQ  r#  r  r  r  r
  r  r   r&   r'   <module>r!     s   !   #      7 > > "sDII #tyy 3		 TYY TYY 
 TYY  	#tyy 	3		 3		 &c499 &S$)) 
S$)) #tyy S$)) dii O4 O PT P,FT F6rT r 	e$ 	eYt Y$JT J0 ND  NF
B 
BHt H*e$ e,PT P X$ X>PD P&z z$Ot O$
et 
ee4 eq$ q,C C"Kd K eD e	q 	q	e$ 	e	ed 	e@4 @r&   