a
    jFwj'                     @  sZ   d dl mZ d dlmZ d dlmZ d dlmZ eddG dd dZG d	d
 d
Z	dS )    )annotations)	dataclass)	timedelta)SymbolStateT)frozenc                   @  s>   e Zd ZU dZded< dZded< dZded< dZd	ed
< dS )DeltaPolicygffffff?floatmin_price_change_pctg     F@min_anomaly_scoreg{Gz?min_velocity   intmax_stale_secondsN)__name__
__module____qualname__r	   __annotations__r
   r   r    r   r   4/home/opc/hanz-radar/runtime/src/hanz_radar/delta.pyr   	   s   
r   c                   @  s>   e Zd ZddddddZddd	d
dZddd	ddZdS )DeltaScannerNzDeltaPolicy | NoneNone)policyreturnc                 C  s   |pt  | _d S )N)r   r   )selfr   r   r   r   __init__   s    zDeltaScanner.__init__r   bool)stater   c                 C  s@   |j d u rdS t|j| jjkp>|j| jjkp>t|j| jjkS )NF)	last_timestampabsprice_change_pctr   r	   anomaly_scorer
   velocityr   )r   r   r   r   r   is_interesting   s    
zDeltaScanner.is_interestingc                 C  s&   |j d u rdS ||j  t| jjdkS )NT)seconds)r   r   r   r   )r   r   nowr   r   r   is_stale   s
    

zDeltaScanner.is_stale)N)r   r   r   r   r"   r%   r   r   r   r   r      s   
r   N)

__future__r   dataclassesr   datetimer   hanz_realtime.modelsr   r   r   r   r   r   r   <module>   s   