Untitled
unknown
python
a year ago
1.6 kB
7
Indexable
import numpy as np
from scipy.stats import norm
from datetime import datetime, timedelta
import pytz
def get_probability_crossing(price_start, prce_target, days, sigma = 1):
# Конвертация дней в годовую долю (предположим, 365 дней в году)
T_years = days / 365
# Расчет Z для вероятности пересечения уровня
ln_ratio = np.log(prce_target / price_start)
Z = ln_ratio / (sigma * np.sqrt(T_years))
# Нахождение вероятности пересечения уровня
if prce_target >= price_start:
probability_crossing = 2 * (1 - norm.cdf(Z))
else:
# Для случая, когда уровень ниже начальной цены
probability_crossing = 2 * norm.cdf(Z)
return probability_crossing
if __name__ == "__main__":
# Заданные параметры
S_0 = 3205 # начальная цена
s = 1
et_timezone = pytz.timezone('US/Eastern')
now_et = datetime.now(et_timezone)
end_date_et = et_timezone.localize(datetime(2024, 11, 30, 23, 59))
days_difference = (end_date_et - now_et).total_seconds() / (24 * 3600)
print('--------------------- ETH ------------------------')
for S_t in [2000, 2250, 3500, 3750, 4000]:
probability_crossing = get_probability_crossing(S_0, S_t, days_difference, s)
print(f"${S_t} хотя бы раз в течение {days_difference:.1f} дней: {probability_crossing * 100:.4f}%")
Editor is loading...
Leave a Comment