Untitled
unknown
python
5 months ago
1.6 kB
4
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