Избранное трейдера Старик Рамуальдыч
Есть формула расчета индекса RVI.
Что такое дельта Кi?
Отмечено стрелкой.
В описании написано, что это шаг страйка. Но шаг страйка у нас const. Причем здесь тогда индекс i ?
Или имеется в виду, что это модуль разности между К0 и Кi,
то есть Abs(K0 — Ki).
Понятно что под знаком суммы весовые коэффициенты для Price(Ki).
Но что же все таки принимать в качестве дельта Ki ?
Методика расчета: fs.moex.com/files/6756/
Update: сам нашел ответ в Интернете. В описании на VIX
Торговый робот должен (условно) удовлетворять следующим условиям:
Безусловно, эти требования ничего не гарантируют, хоть и несколько увеличивают доверие к потенциальным возможностям робота.

По мотивам невинно убиенных топиков 30% годовых без рисков и просадок на продаже покрытых опционов Си зафиксирую итоги прошедших двух недель (хотя это и не совсем правильно делать постфактум, тем не менее).
Посыл был такой: заводим на счет 1000 usd + рублевый эквивалент (сейчас уже 79000 руб), каждую неделю в четверг продаем стрэдл на центральном страйке из недельных опционов Si, ничего не делаем, в конце недели подсчитываем прибыль/убыток с учетом изменения курса USD.
На отдельный субсчет завел 1000 usd + 25000 руб (пожадничал). Вместо ничего не делать, решил при движении Si на 500 пп продавать еще один стрэдл уже на новом ЦС.


import sqlite3 as sql
from scipy.stats import logistic
import math
import numpy as np
import numpy.random as rnd
import matplotlib.pyplot as plt
from sklearn.neural_network import MLPRegressor
sdata =[]
sql1= "select ticker, date, open, high, low, close, vol \
from Hist_1m where ticker_id=1 order by Date;"
con=sql.connect('C:/Users/ubase/Documents/StockDB/StockDB21.sqlite')
cur=con.cursor()
cur.execute(sql1)
sdata=cur.fetchall()
con.commit()
con.close()
Ldata = len(sdata)
N = 8000 # Количество сделок
ld = 5 #Продолжительность сделки
NNinterval = 20 # Количество входов NN
# Генерация случайных чисел
rng = rnd.default_rng()
rm=rng.integers(0, Ldata, N )
class Candle:
tr = 0
dt = 1
o = 2
h = 3
l = 4
c = 5
v = 6
cl = Candle
DataC =[sdata[i][cl.c] for i in range(0,Ldata)]
# sigmoid линейность до 0.5
def sigmoidnorm(x, alfa = 0.9, xmin = -1.3, xmax = 1.3):
return (xmax - xmin)*((1 / (1 + math.exp(-x*2.0*alfa))) - 1.0) + xmax
x = [0.002 * i - 3 for i in range(0,3000)]
y = [sigmoidnorm(x[i]) for i in range(len(x))]
plt.plot(x,y)
plt.grid()
plt.show()
# формируем сделки.
def DealsGenL(rm,ld):
#Lm = len(rm)
ix = []
x = []
pr = []
for i in range(0,N):
if rm[i] + ld < Ldata and rm[i] - NNinterval - 1 > 0:
delta = (sdata[rm[i]+ld][cl.c] - sdata[rm[i]][cl.c])/sdata[rm[i]+ld][cl.c]*100
x0 = [sigmoidnorm((sdata[rm[i] - j][cl.c] - sdata[rm[i]][cl.c])/sdata[rm[i]][cl.c]*100) \
for j in range(0, NNinterval)]
ix.append(rm[i])
x.append(x0)
pr.append(delta)
return ix, x, pr
Ix, X, Pr = DealsGenL(rm,ld)
Ib = 0
Ie = 100
plt.plot(X)
plt.legend()
plt.grid()
plt.show()
plt.plot(Pr, label = 'Prof')
plt.legend()
plt.grid()
plt.show()
regr = MLPRegressor(hidden_layer_sizes = [30,20,15,10,5], \
max_iter=500, activation = 'tanh')
regr.fit(X, Pr)
Out = regr.predict(X)
plt.plot(Pr, Out, '.')
plt.grid()
plt.show()И вот результат прогнозирования: