В прошлом видео я рассказал, почему «средняя цена» из новостей — это иллюзия из-за перекоса структуры. Сегодня переходим к практике.
Этот макрос за секунду посчитает тренд рынка двумя методами: квантильным и моим «Индексом Ядра».
Инструкция:
Подготовь данные: колонка A — цена за кв.м, колонка B — месяц (1 или 2).
Нажми ALT + F11 -> Insert -> Module.
Вставь код ниже и жми F5.
Sub RealTrend()
L = Cells(Rows.Count, 1).End(xlUp).Row
Range("A1:B" & L).Sort Key1:=Range("A1"), Order1:=xlAscending, Header:=xlNo
For i = 1 To L
If Cells(i, 2) = 1 Then N1 = N1 + 1
If Cells(i, 2) = 2 Then N2 = N2 + 1
Next
P = 1
For d = 1 To 10
I1 = Application.Round(N1 * d / 10, 0)
I2 = Application.Round(N2 * d / 10, 0)
C1 = 0: C2 = 0
For i = 1 To L
If Cells(i, 2) = 1 Then
C1 = C1 + 1: If C1 = I1 Then D1 = Cells(i, 1)
ElseIf Cells(i, 2) = 2 Then
C2 = C2 + 1: If C2 = I2 Then D2 = Cells(i, 1)
End If
Next i
P = P * (D2 / D1)
Next d
TQ = (P ^ (1 / 10) - 1) * 100
S1 = Application.Round(N1 * 0.4, 0): E1 = Application.Round(N1 * 0.6, 0)
S2 = Application.Round(N2 * 0.4, 0): E2 = Application.Round(N2 * 0.6, 0)
C1 = 0: C2 = 0
For i = 1 To L
If Cells(i, 2) = 1 Then
C1 = C1 + 1: If C1 >= S1 And C1 <= E1 Then Y1 = Y1 + Cells(i, 1): K1 = K1 + 1
ElseIf Cells(i, 2) = 2 Then
C2 = C2 + 1: If C2 >= S2 And C2 <= E2 Then Y2 = Y2 + Cells(i, 1): K2 = K2 + 1
End If
Next i
TC = ((Y2 / K2) / (Y1 / K1) - 1) * 100
MsgBox "Квантили: " & Format(TQ, "0.0") & "%" & vbCrLf & "Индекс Ядра: " & Format(TC, "0.0") & "%"
End Sub
В чем разница результатов?
Квантильный метод разбивает рынок на 10 слоев, считает изменение в каждом и склеивает их через среднее геометрическое. Метод нормальный, но включает обработку замусоренных краев выборки.
Мой Индекс Ядра — оптимален. Скрипт отрезал по 40% крайних объектов и посчитал среднее строго по 20% центрального «ядра» рынка. Никаких фейков и элитки, только чистый тренд цен.
Сохраняй код в закладки и тестируй на своих базах. Вопросы по коду жду в комментариях