![]() |
|
|
Анализ эффективности вложений денежных средств в РКОType PortfelRecord Dates() As Date ' дата покупки Price() As Single ' цена покупки Volume() As Long ' количество StartPos() As Integer ' начальный индекс бумаги в массиве бумаг данной серии EndPos() As Integer ' конечный индекс бумаги в массиве бумаг данной серии VolumeAll() As Long ' количество бумаг данной серии в портфеле End Type ' тип данных для записи информации об индксах портфеля и рынка Type IndexRecord Dates As Date Portfel As Single Birga As Single End Type Const MaxBum = 500 ' максимальное количество бумаг в портфеле одной серии Const DilerConst = 1000900000 ' константа для выборки портфеля дилера Dim MaxPeriod As Long ' максимальное количество дней для анализа(можно вычислить как последний день анализа-первый день анализа+1) Dim Portfel As PortfelRecord ' данные о портфеле Dim BumInfo() As BumRecord ' данные о бумагах Dim BumNum As Integer ' количество различных серий бумаг Dim Index() As IndexRecord ' индексы портфеля и рынка Dim Revenue() As IndexRecord ' доходность к погашению портфеля и рынка Dim BirgaInfo() As Single ' текущая биржевая информация по каждой серии Dim CoefIndex As Long ' индекс коэффициента Dim RevIndex As Long ' индекс доходности Dim EvalDate As Date ' дата для расчета Dim StartDate As Date ' начальная дата для постоения индексов Dim PortfelPricePred; BirgaPricePred As Single Dim Analize1; Analize2 As Boolean '------------------------------- Процедура расчета портфеля (главный модуль)- Sub АнализПортфель() Dim Sheet As Object Dim i; Ind As Integer Dim SumCell As Long Dim CurDate As Date Set Sheet = Worksheets("Бумаги") BumNum = 0 While Sheet.Cells(BumNum + 2; 1) <> Empty BumNum = BumNum + 1 Wend With DialogSheets("ДиалогДата") .EditBoxes(1).Text = "05.02.97" .EditBoxes(2).Text = "30.05.97" .EditBoxes(1).InputType = xlDate .EditBoxes(2).InputType = xlDate .Show StartDate = CDate(.EditBoxes(1).Text) EvalDate = CDate(.EditBoxes(2).Text) End With With DialogSheets("ДиалогВыбор") again: .Show Analize1 = False Analize2 = False If .CheckBoxes(1).Value = 1 Then Analize1 = True If .CheckBoxes(2).Value = 1 Then Analize2 = True If Not Analize1 And Not Analize2 Then MsgBox "Выберите тип анализа" GoTo again End If End With MaxPeriod = EvalDate - StartDate + 1 ReDim Index(MaxPeriod) ReDim Revenue(MaxPeriod) Index(1).Portfel = 1 Index(1).Birga = 1 Index(1).Dates = StartDate ReDim BumInfo(BumNum) ReDim BirgaInfo(BumNum) For i = 1 To BumNum With BumInfo(i) .Num = Sheet.Cells(i + 1; 1) .DateStart = Sheet.Cells(i + 1; 2) .DateEnd = Sheet.Cells(i + 1; 3) .Volume = Sheet.Cells(i + 1; 4) End With Next i ReDim Portfel.Dates(BumNum; MaxBum) ReDim Portfel.Price(BumNum; MaxBum) ReDim Portfel.Volume(BumNum; MaxBum) ReDim Portfel.StartPos(BumNum) ReDim Portfel.EndPos(BumNum) ReDim Portfel.VolumeAll(BumNum) For i = 1 To BumNum Portfel.StartPos(i) = 1 Portfel.EndPos(i) = 0 Next i Set Sheet = Worksheets("Сделки") Call Сортировка(Worksheets("Сделки"); "A2"; "A2"; "B2"; "D2"; _ xlAscending; xlAscending; xlAscending) i = 2 CoefIndex = 1 RevIndex = 1 CurDate = StartDate While Sheet.Cells(i; 1) <> Empty And Sheet.Cells(i; 1) = Portfel.Volume(Ind; Portfel.StartPos(Ind)) And SumCell > 0 SumCell = SumCell - Portfel.Volume(Ind; Portfel.StartPos(Ind)) Portfel.StartPos(Ind) = Portfel.StartPos(Ind) + 1 Wend If SumCell < Portfel.Volume(Ind; Portfel.StartPos(Ind)) Then Portfel.Volume(Ind; Portfel.StartPos(Ind)) = Portfel.Volume(Ind; Portfel.StartPos(Ind)) - SumCell End If End If End If ' в данном месте можео провести анализ на основе данных о портфеле за текущую дату ' дата текущая - это Worksheets("Сделки").cells(i-1;1) ' т.е. анализ за эту текущую дату(доходность к погашению портфеля, индекс,...) 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 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 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. Диаграмма сравнения доходности портфеля и рынка. [pic] Приложение № 2.3. Диаграмма сравнения индекса портфеля и рынка. [pic] Приложение № 3. Входные статистические данные. Приложение 3.1. Информация о бумагах. |№ |Дата выпуска |Дата |Объем выпуска | | | |погашения | | |21019 |14.11.96 |13.02.97 |60 000 000 | |21020 |09.01.97 |10.04.97 |65 000 000 | |21021 |13.02.97 |15.05.97 |55 000 000 | |21022 |10.04.97 |10.07.97 |55 000 000 | |21023 |10.07.97 |09.10.97 |40 000 000 | |21024 |18.12.97 |09.04.98 |45 000 000 | |22002 |29.08.96 |27.02.97 |25 000 000 | |22003 |26.09.96 |27.03.97 |30 000 000 | |22004 |24.10.96 |24.04.97 |40 000 000 | |22005 |28.11.96 |29.05.97 |45 000 000 | |22006 |19.12.96 |19.06.97 |90 000 000 | |22007 |30.01.97 |24.07.97 |30 000 000 | |22008 |27.02.97 |28.08.97 |55 000 000 | |22009 |27.03.97 |25.09.97 |55 000 000 | |22010 |24.04.97 |23.10.97 |60 000 000 | |22011 |15.05.97 |13.11.97 |60 000 000 | |22012 |29.05.97 |27.11.97 |60 000 000 | |24001 |20.03.97 |12.03.98 |30 000 000 | |24002 |08.05.97 |07.05.98 |25 000 000 | Приложение 3.2. Информация о сделках. |Дата |№ бумаги |Цена приобр |Цена продажи|Кол-во | |02.12.96 |22004 |92,99 | |62 | |02.12.96 |22004 |93,00 | |340 | |04.12.96 |22005 |77,50 | |6 | |05.12.96 |22003 |85,14 | |5 | |19.12.96 |22006 |80,05 | |300 | |19.12.96 |22006 |80,21 | |500 | |19.12.96 |22006 |80,37 | |259 | |01.01.97 |22005 |92,06 | |7 | |01.01.97 |21021 |0,00 | |1126 | |01.01.97 |22005 |0,00 | |95 | |01.01.97 |22008 |0,00 | |75 | |01.01.97 |22009 |0,00 | |457 | |01.01.97 |22008 |0,00 | |29 | |01.01.97 |21020 |0,00 | |642 | |01.01.97 |22004 |0,00 | |12 | |01.01.97 |22006 |0,00 | |20 | |01.01.97 |22009 |0,00 | |16 | |01.01.97 |21020 |0,00 | |90 | |01.01.97 |22006 |0,00 | |26 | |01.01.97 |21020 |0,00 | |20 | |01.01.97 |22004 |0,00 | |15 | |01.01.97 |22006 |0,00 | |5 | |01.01.97 |21021 |0,00 | |12 | |01.01.97 |22006 |0,00 | |27 | |01.01.97 |21020 |0,00 | |0 | |01.01.97 |21021 |0,00 | |63 | |01.01.97 |22004 |0,00 | |159 | |01.01.97 |22005 |0,00 | |146 | |01.01.97 |22009 |0,00 | |46 | |01.01.97 |22007 |0,00 | |32 | |01.01.97 |22008 |0,00 | |13 | |01.01.97 |22006 |0,00 | |73 | |01.01.97 |22006 |0,00 | |59 | |01.01.97 |22006 |0,00 | |56 | |01.01.97 |21020 |0,00 | |29 | |01.01.97 |21021 |0,00 | |8 | |01.01.97 |22005 |0,00 | |12 | |01.01.97 |22006 |0,00 | |27 | |01.01.97 |21021 |0,00 | |10 | |01.01.97 |22008 |0,00 | |28 | |01.01.97 |22008 |0,00 | |57 | |01.01.97 |21021 |0,00 | |42 | |01.01.97 |24001 |0,00 | |34 | |01.01.97 |24001 |0,00 | |69 | |01.01.97 |21021 |0,00 | |104 | |09.01.97 |21020 |90,93 | |300 | |09.01.97 |21020 |91,03 | |600 | |09.01.97 |21020 |91,24 | |900 | |09.01.97 |21020 |91,35 | |600 | |09.01.97 |21020 |91,50 | |500 | |10.01.97 |22004 |91,54 | |24 | |13.01.97 |21020 |93,65 | |50 | |14.01.97 |21020 |93,22 | |32 | |15.01.97 |22005 |88,51 | |10 | |17.01.97 |21020 |92,50 | |10 | |28.01.97 |21020 |93,40 | |7 | |31.01.97 |22007 |84,19 | |16 | |31.01.97 |22007 |84,20 | |184 | |06.02.97 |22004 |92,80 | |60 | |10.02.97 |22006 |89,00 | |500 | |13.02.97 |21021 |91,20 | |430 | |13.02.97 |21021 |91,30 | |430 | |13.02.97 |21021 |91,33 | |320 | |17.02.97 |22005 |92,25 | |78 | |17.02.97 |22007 | |88,42 |78 | |19.02.97 |22005 |93,00 | |122 | |19.02.97 |22003 |97,55 | |41 | |19.02.97 |22007 | |89,39 |122 | |20.02.97 |22005 |92,60 | |28 | |25.02.97 |22005 |92,01 | |100 | |25.02.97 |22005 |92,03 | |60 | |25.02.97 |21020 |96,00 | |101 | |26.02.97 |22004 |95,10 | |12 | |26.02.97 |21021 | |92,50 |12 | |27.02.97 |22008 |84,04 | |300 | |27.02.97 |22008 |84,10 | |432 | |27.02.97 |22008 |84,22 | |318 | |27.02.97 |22008 |84,09 | |311 | |27.02.97 |22008 |84,22 | |182 | |27.02.97 |22008 |84,42 | |100 | |28.02.97 |21021 |93,23 | |80 | |03.03.97 |21020 | |97,30 |200 | |03.03.97 |21021 | |94,00 |154 | |03.03.97 |22006 | |92,50 |200 | |04.03.97 |22006 |92,40 | |24 | |04.03.97 |22006 |92,52 | |200 | |04.03.97 |22006 |92,53 | |200 | |06.03.97 |22006 |92,63 | |25 | |06.03.97 |22004 |96,45 | |4 | |06.03.97 |21020 |97,53 | |108 | |12.03.97 |21020 | |97,70 |489 | |13.03.97 |21020 | |97,50 |822 | |13.03.97 |21021 | |94,00 |399 | |17.03.97 |21021 |93,67 | |100 | |19.03.97 |22003 |99,19 | |128 | |19.03.97 |22003 |99,20 | |229 | |20.03.97 |24001 |72,00 | |50 | |20.03.97 |24001 |72,15 | |290 | |21.03.97 |22005 |94,20 | |2 | |21.03.97 |22005 |94,25 | |100 | |24.03.97 |22005 |94,25 | |108 | |24.03.97 |22005 |94,39 | |27 | |24.03.97 |22005 |94,40 | |598 | |24.03.97 |21020 | |98,40 |200 | |25.03.97 |22006 |92,10 | |70 | |25.03.97 |22005 |94,05 | |320 | |25.03.97 |22003 | |99,78 |403 | |26.03.97 |22006 |92,00 | |314 | |26.03.97 |21021 |94,45 | |80 | |26.03.97 |21020 |98,10 | |50 | |28.03.97 |22005 |94,15 | |7 | |28.03.97 |21021 |95,10 | |135 | |28.03.97 |21021 |95,19 | |378 | |28.03.97 |21021 |95,20 | |90 | |28.03.97 |21020 | |99,07 |288 | |28.03.97 |21020 | |99,01 |300 | Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9 |
|
|||||||||||||||||||||||||||||
![]() |
|
Рефераты бесплатно, курсовые, дипломы, научные работы, реферат бесплатно, сочинения, курсовые работы, реферат, доклады, рефераты, рефераты скачать, рефераты на тему и многое другое. |
||
При использовании материалов - ссылка на сайт обязательна. |