
    EBj                    \    d dl mZ d dlZd dlmc mZ d dlm	Z	 d dl
mZ d
dZd
dZd
d	ZdS )    )annotationsN)	BotConfig)calculate_position_sizereturnNonec            	        t          dddddd          } t          ddd	d
|           }|j        }d}||k    }|st          j        d|fd||f          dt          j                    v st          j        |          rt          j        |          ndt          j        |          t          j        |          dz  }dd|iz  }t          t          j
        |                    d x}x}}|j        }d}t          ||          }d}	||	k    }
|
st          j        d|
fd||	f          dt          j                    v st          j        t                    rt          j        t                    nddt          j                    v st          j        |          rt          j        |          ndt          j        |          t          j        |          t          j        |          t          j        |	          dz  }dd|iz  }t          t          j
        |                    d x}x}x}x}
}	|j        }d}||k    }|st          j        d|fd||f          dt          j                    v st          j        |          rt          j        |          ndt          j        |          t          j        |          dz  }dd|iz  }t          t          j
        |                    d x}x}}|j        }d}||k    }|st          j        d|fd||f          dt          j                    v st          j        |          rt          j        |          ndt          j        |          t          j        |          dz  }dd|iz  }t          t          j
        |                    d x}x}}|j        }d}||k    }|st          j        d|fd||f          dt          j                    v st          j        |          rt          j        |          ndt          j        |          t          j        |          dz  }dd|iz  }t          t          j
        |                    d x}x}}d S )N     @@g      ?risk      9@      Y@      (@wallet_equity_usdcrisk_per_trade_pctposition_sizing_modemax_position_margin_pctmax_position_notional_pctmin_order_notional_usdETH      @       @coincurrent_priceleveragestop_distance_pctcfgg     @o@==z4%(py2)s
{%(py2)s = %(py0)s.notional_usd
} == %(py5)sdecisionpy0py2py5assert %(py7)spy7   goTT@)zZ%(py7)s
{%(py7)s = %(py0)s(%(py3)s
{%(py3)s = %(py1)s.margin_usd
}, %(py5)s)
} == %(py10)sround)r#   py1py3r%   r'   py10zassert %(py12)spy12g      @z,%(py2)s
{%(py2)s = %(py0)s.size
} == %(py5)sg      @)z0%(py2)s
{%(py2)s = %(py0)s.risk_usd
} == %(py5)sz1%(py2)s
{%(py2)s = %(py0)s.capped_by
} == %(py5)s)r   r   notional_usd
@pytest_ar_call_reprcompare@py_builtinslocals_should_repr_global_name	_safereprAssertionError_format_explanation
margin_usdr)   sizerisk_usd	capped_by)r   r!   @py_assert1@py_assert4@py_assert3@py_format6@py_format8@py_assert2@py_assert6@py_assert9@py_assert8@py_format11@py_format13s                P/home/agent/projects/CryptoTradingBot/Crypto_Agent/tests/test_position_sizing.py@test_risk_based_position_size_uses_wallet_risk_and_stop_distancerI      s.   
 # $"'#  C '  H  )E) E)))))))))) E))))))))))))8)))))8)))))) ))))E)))))))))))))))))))))))))))$3a35$a((3G3(G3333333333(G3333333333335333335333333333333333333333333$3333a3333(3333G3333333333333333333333333333333=C=C=C88=C########################8#####8#####################################''''''''''''''''''''''''8'''''8'''''''''''''''''''''''''''''''''''''''    c                 `   t          dddddd          } t          dd	d
d|           }|j        }d}||k    }|st          j        d|fd||f          dt          j                    v st          j        |          rt          j        |          ndt          j        |          t          j        |          dz  }dd|iz  }t          t          j
        |                    d x}x}}|j        }d	}||k    }|st          j        d|fd||f          dt          j                    v st          j        |          rt          j        |          ndt          j        |          t          j        |          dz  }dd|iz  }t          t          j
        |                    d x}x}}|j        }d
}||k    }|st          j        d|fd||f          dt          j                    v st          j        |          rt          j        |          ndt          j        |          t          j        |          dz  }dd|iz  }t          t          j
        |                    d x}x}}|j        }d}||k    }|st          j        d|fd||f          dt          j                    v st          j        |          rt          j        |          ndt          j        |          t          j        |          dz  }dd|iz  }t          t          j
        |                    d x}x}}d S )Nr	   r   r
   g      $@r   r   r   ORDIg      I@r   r   g     b@r   r    r!   r"   r&   r'   )z2%(py2)s
{%(py2)s = %(py0)s.margin_usd
} == %(py5)sr.   
margin_capr/   )r   r   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r<   r   r!   r=   r>   r?   r@   rA   s          rH   :test_position_size_respects_margin_cap_before_live_scalingrO       s   
 # $"'#  C '  H  )E) E)))))))))) E))))))))))))8)))))8)))))) ))))E)))))))))))))))))))))))))))&$&$&&&&&&&&&&$&&&&&&&&&&&&8&&&&&8&&&&&&&&&&$&&&&&&&&&&&&&&&&&&&&&&&&&&&=C=C=C88=C------------------------8-----8---------------------------------------rJ   c                    t          ddd          } t          dddd| 	          }|j        }d}||k    }|st          j        d
|fd||f          dt          j                    v st          j        |          rt          j        |          ndt          j        |          t          j        |          dz  }dd|iz  }t          t          j
        |                    d x}x}}|j        }d}||k    }|st          j        d
|fd||f          dt          j                    v st          j        |          rt          j        |          ndt          j        |          t          j        |          dz  }dd|iz  }t          t          j
        |                    d x}x}}|j        }d}||k    }|st          j        d
|fd||f          dt          j                    v st          j        |          rt          j        |          ndt          j        |          t          j        |          dz  }dd|iz  }t          t          j
        |                    d x}x}}d S )Nfixedg      .@r   )r   trade_size_usdr   SOLr   r   r   r   r   r    r!   r"   r&   r'   g333333?r.   r/   )r   r   r0   r1   r2   r3   r4   r5   r6   r7   r8   r:   r<   rN   s          rH   =test_fixed_position_size_keeps_research_sampler_compatibilityrT   8   s   
^b
c
c
cC&  H  (D( D(((((((((( D((((((((((((8(((((8(((((( ((((D(((((((((((((((((((((((((((=C=C=C88=C((((((((((((((((((((((((8(((((8(((((((((((((((((((((((((((((((((((((((rJ   )r   r   )
__future__r   builtinsr3   _pytest.assertion.rewrite	assertionrewriter1   configr   position_sizingr   rI   rO   rT    rJ   rH   <module>r]      s    " " " " " "                     3 3 3 3 3 3( ( ( (2. . . .0) ) ) ) ) )rJ   