Анализ эффективности вложений денежных средств в РКО
Информация - Менеджмент
Другие материалы по предмету Менеджмент
°нализ за эту текущую дату(доходность к погашению портфеля, индекс,...)
CurDateThen"> If StartDate CurDate Then
Call Процедура_анализа(Sheet.Cells(i; 1))
CoefIndex = CoefIndex + 1
RevIndex = RevIndex + 1
CurDate = Sheet.Cells(i; 1)
End If
i = i + 1
Wend
If Analize1 Then
Worksheets("РезультатИндекс").Cells(1; 2) = "Портфель"
Worksheets("РезультатИндекс").Cells(1; 3) = "Рынок"
For i = 1 To CoefIndex - 1
Worksheets("РезультатИндекс").Cells(i + 1; 1) = Index(i).Dates
Worksheets("РезультатИндекс").Cells(i + 1; 2) = Index(i).Portfel
Worksheets("РезультатИндекс").Cells(i + 1; 3) = Index(i).Birga
Next i
Charts("ДиаграммаИндекс").ChartWizard Source:=Sheets("РезультатИндекс").Range( _
"A1:C" + CStr(i)); Gallery:=xlLine; Format:=4; PlotBy:=xlColumns; _
CategoryLabels:=1; SeriesLabels:=1; HasLegend:=1; Title:= _
"Сравнение индекса портфеля и рынка"; CategoryTitle:="дата"; ValueTitle:= _
"индекс"; ExtraTitle:=""
Charts("ДиаграммаИндекс").Select
MsgBox "Диаграмма Индекса"
End If
If Analize2 Then
Worksheets("РезультатДоходность").Cells(1; 2) = "Портфель"
Worksheets("РезультатДоходность").Cells(1; 3) = "Рынок"
For i = 1 To RevIndex - 1
Worksheets("РезультатДоходность").Cells(i + 1; 1) = Revenue(i).Dates
Worksheets("РезультатДоходность").Cells(i + 1; 2) = Revenue(i).Portfel
Worksheets("РезультатДоходность").Cells(i + 1; 3) = Revenue(i).Birga
Next i
Charts("ДиаграммаДоходность").ChartWizard Source:=Sheets("РезультатДоходность").Range( _
"A1:C" + CStr(i)); Gallery:=xlLine; Format:=4; PlotBy:=xlColumns; _
CategoryLabels:=1; SeriesLabels:=1; HasLegend:=1; Title:= _
"Сравнение доходности портфеля и рынка"; CategoryTitle:="дата"; ValueTitle:= _
"доходность"; ExtraTitle:=""
Charts("ДиаграммаДоходность").Select
MsgBox "Диаграмма Доходности"
End If
End Sub
--------------------- функция возвращает индекс бумаги в массиве BumInfo -------------
Function ReturnBum(bum As Long)
Dim i As Integer
For i = 1 To BumNum
If bum = BumInfo(i).Num Then
ReturnBum = i
Exit Function
End If
Next i
MsgBox "Не найдена бумага в списке бумаг. Занести бумагу в лист Бумаги"
End
End Function
-------------------- Процедура построения индексов портфеля и рынка -----------------
Sub Процедура_анализа(CurDate As Date)
Dim i; k As Long
Dim Sheet As Object
Dim PortfelPrice; BirgaPrice As Single
Dim BirgaCoef; PortfelCoef As Single
Dim Doh; Volume As Single
Dim Flag As Boolean
Set Sheet = Worksheets("Биржа")
поиск первой строки начала биржевой информации за текущий день
i = Поиск(Worksheets("Биржа"); 1; 2; CurDate; 1)
If i = 0 Then
MsgBox "Биржевая информация за " + CStr(CDate(CurDate)) + "не найдена"
End
CoefIndex = CoefIndex - 1
Exit Sub
End If
занесение биржевой информации за текущий день
If i <> 0 Then
While Sheet.Cells(i; 1) = CurDate
EmptyThen"> If Sheet.Cells(i; 6) <> Empty Then
BirgaInfo(ReturnBum(Sheet.Cells(i; 2))) = Sheet.Cells(i; 6)
End If
i = i + 1
Wend
End If
определение по каждой бумаге обращения на бирже
For i = 1 To BumNum
If BumInfo(i).DateStart <= CurDate And CurDate <= BumInfo(i).DateEnd Then
BumInfo(i).Present = True
Else
BumInfo(i).Present = False
End If
Next i
если выбран анализ эффективной доходности портфеля и рынка
If Analize2 Then
Doh = 0
Volume = 0
Flag = True
For k = 1 To BumNum
If BumInfo(k).Present Then
For i = Portfel.StartPos(k) To Portfel.EndPos(k)
Flag = False
Doh = Doh + (100 / Portfel.Price(k; i) - 1) * 36500 * Portfel.Volume(k; i)
Volume = Volume + Portfel.Volume(k; i) * (BumInfo(k).DateEnd - Portfel.Dates(k; i))
Next i
End If
Next k
If Flag Then
RevIndex = RevIndex - 1
GoTo Anal1
End If
Revenue(RevIndex).Portfel = Doh / Volume
Revenue(RevIndex).Dates = CurDate
Flag = True
Doh = 0
Volume = 0
For k = 1 To BumNum
If BumInfo(k).Present Then
Flag = False
Doh = Doh + (100 / BirgaInfo(k) - 1) * 36500 * BumInfo(k).Volume
Volume = Volume + BumInfo(k).Volume * (BumInfo(k).DateEnd - CurDate)
End If
Next k
If Flag Then
RevIndex = RevIndex - 1
GoTo Anal1
End If
Revenue(RevIndex).Birga = Doh / Volume
End If
Anal1:
если выбран анализ индекса портфеля и рынка
If Analize1 Then
определение стоимости портфеля и биржи по средневзвешенным ценам
PortfelPrice = 0
BirgaPrice = 0
For i = 1 To BumNum
PortfelPrice = PortfelPrice + Portfel.VolumeAll(i) * BirgaInfo(i) * 10000
BirgaPrice = BirgaPrice + BumInfo(i).Volume * BirgaInfo(i) * 10000
Next i
расчет индексов
If CoefIndex <> 1 Then
поиск остатков за текущий день
k = Поиск(Worksheets("Остаток"); 1; 2; CurDate; 1)
If k <> 0 Then
PortfelPrice = PortfelPrice + Worksheets("Остаток").Cells(k; 2)
End If
вычисление коэффициента портфеля
If k <> 0 Then
PortfelCoef = (PortfelPrice - Worksheets("Остаток").Cells(k; 3) _
+ Worksheets("Остаток").Cells(k; 4)) / PortfelPricePred
Else
PortfelCoef = PortfelPrice / PortfelPricePred
End If
PortfelPricePred = PortfelPrice
определение индекса портфеля за текущий день
Index(CoefIndex).Portfel = Index(CoefIndex - 1).Portfel * PortfelCoef
Index(CoefIndex).Dates = CurDate
BirgaCoef = BirgaPrice
k = Поиск(Worksheets("Бумаги"); 2; 2; CurDate; 1)
If k <> 0 Then
BirgaCoef = BirgaCoef - Worksheets("Бумаги").Cells(k; 4)
End If
k = Поиск(Worksheets("Бумаги"); 3; 2; CurDate; 1)
If k <> 0 Then
BirgaCoef = BirgaCoef + Worksheets("Бумаги").Cells(k; 4)
End If
BirgaCoef = BirgaCoef / BirgaPricePred
BirgaPricePred = BirgaPrice
определение индекса биржи за текущий день
Index(CoefIndex).Birga = Index(CoefIndex - 1).Birga * BirgaCoef
Else
k = Поиск(Worksheets("Остаток"); 1; 2; CurDate; 1)
If k <> 0 Then
PortfelPrice = PortfelPrice + Worksheets("Остаток").Cells(k; 2)
End If
PortfelPricePred = PortfelPrice
BirgaPricePred = BirgaPrice
End If
End If
End Sub
Sub Cancel()
End
End Sub
Приложение № 2.2. Диаграмма сравнения доходности портфеля и рынка.
Приложение № 2.3. Диаграмма сравнения индекса портфеля и рынка.
Приложение № 3. Входные статистические данные.
Приложение 3.1. Информация о бумагах.