создать данные CSF портфолио ETF - PullRequest
0 голосов
/ 07 февраля 2020

Я пытаюсь рассчитать скорректированный коэффициент Шарпа для портфеля из двух или более активов. что мне нужно сделать, это:

  • Я загружаю два CSV-файла, которые я сгенерировал.

структура (список (X.1 = 1:50, X = 1:50, дата = структура (1:50, .Label = c ("2019) -07-01 "," 2019-07-02 "," 2019-07-03 "," 2019-07-05 "," 2019-07-08 "," 2019-07-09 "," 2019-07 -10 "," 2019-07-11 "," 2019-07-12 "," 2019-07-15 "," 2019-07-16 "," 2019-07-17 "," 2019-07-18 "," 2019-07-19 "," 2019-07-22 "," 2019-07-23 "," 2019-07-24 "," 2019-07-25 "," 2019-07-26 ", "2019-07-29", "2019-07-30", "2019-07-31", "2019-08-01", "2019-08-02", "2019-08-05", "2019 -08-06 "," 2019-08-07 "," 2019-08-08 "," 2019-08-09 "," 2019-08-12 "," 2019-08-13 "," 2019-08 -14 "," 2019-08-15 "," 2019-08-16 "," 2019-08-19 "," 2019-08-20 "," 2019-08-21 "," 2019-08-22 "," 2019-08-23 "," 2019-08-26 "," 2019-08-27 "," 2019-08-28 "," 2019-08-29 "," 2019-08-30 ", "2019-09-03", "2019-09-04", "2019-09-05", "2019-09-06", "2019-09-09", "2019-09-10"), класс = "factor"), adjClose = c (130.8539817206, 131.863291017, 132.8033339891, 131.041990315, 131.2201037202, 131.1706277743, 130.4482789642, 128.7067256684, 128.8551535061, 129.597292 6947, 129,2113803166, 130,6066019911, +130,6164971802, +130,3097463156, +130,5571260452, 129,8446724242, 130,4086982074, +129,7853012891, +130,0920521537, +130,1316329104, +130,4482789642, 131,4971690173, 134,103513361, +135,3428257349, 137,6826474969, 138,783156885, +138,83272938, +139,1301643497, +138,852558378, +141,7475920835, +141,2617816329, 144,4443358092, 146,0504846459, +144,8805737649, 142,8084434756, +144,2857038254, 143,3239974232, +142,37220552, +144,712027282, 144,1270718415, +146,3479196156, +146,5362950965, 145,9810831529, 146,0207411489, +146,2092980651, +146,4278025524, 143,7759526384, 144,7989509198, +142,2265571831, 139,7336196235), lagx = c (NA, 130.8539817206, 131.863291017, 132.8033339891, 131.041990315, +131,2201037202 , +131,1706277743, 130,4482789642, +128,7067256684, +128,8551535061, 129,5972926947, +129,2113803166, +130,6066019911, +130,6164971802, +130,3097463156, 130,5571260452, 129,8446724242, +130,4086982074, 129,7853012891, +130,0920521537, +130,1316329104, +130,4482789642, 131,49716 90173, +134,103513361, 135,3428257349, 137,6826474969, 138,783156885, +138,83272938, +139,1301643497, 138,852558378, +141,7475920835, 141,2617816329, 144,4443358092, 146,0504846459, +144,8805737649, 142,8084434756, +144,2857038254, 143,3239974232, +142,37220552, 144,712027282, +144,1270718415, 146,3479196156, +146,5362950965, 145,9810831529, 146,0207411489, +146,2092980651, +146,4278025524, +143,7759526384, 144,7989509198, +142,2265571831), pct_change = c (NA, 0,0076542098, 0,0070784591, -0,0134410632, 0,0013573637, -0,0003771877, -0,0055374346, -0,0135311755, 0,0011518968, 0,0057265023, -0,0029866748, 0,0106826275, 7.57575751427131e-05, -0,0023540132, 0,0018948007, -0,0054869685, 0,0043250626, -0,0048032937, 0,0023579524, 0,0003041594, 0,0024273686, 0,0079765219, 0,0194353174, 0,0091568383, 0,0169943112, 0,0079297042, 0,0003570663, 0,002137818, -0,001999286, 0,0204238651, -0,0034390792, 0,0220330839, 0,0109972168, -0,0080750017, -0,0145098584, 0,0102384388, -0,0067100166, -0,0066852368, 0,0161 688134, -0,0040586091, 0,0151751236, 0,001285521, -0,0038033143, 0,0002715915, 0,001289637, 0,0014922336, -0,0184443216, 0,0070649564, -0,0180865922, -0,0178406425), rollmeanx, NA, NA, NA, NA, NA, NA, NA = c NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 0,0022449273, 0,0020327583, 0,0016836143, 0,0029861115, 0,002801633, 0,0036635665, 0. 0042995146, 0,0045093675, 0,0039069923, 0,0040805283, 0,0039373228, 0,0032693281, 0,0038882917, 0,0038227304, 0,004333512, 0,0045939924, 0,0042813625, 0,0044765504, 0,0044354613, 0,0044811565, 0,0036783992, 0,003643339, 0,0022001886, 0,0011618239), rollsdx = * тысяча тридцать-четырь * (Н. А., Н. А., Н. А., Н.А. , NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 0,0077480465, 0,0076691234, 0,0076367931, 0,0076367931 , 0,0078392534, 0,0079349676, 0,0087510466, 0,0086559326, 0,0082636055, 0,0090514164, 0,0091306015, 0,0092739515, 0,0093933857, 0,0096997509, 0,0097492652, 0,0099891559, 0,0098095162, 0,0099469924, 0,0098104499, 0,0098219087, 0,0098046681, 0,0107849756, 0,010771918, 0,01108063, 0,0116528378), roll_sharpe = c ( NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 0,2897410646, 0,2650574546, 0,2204609035, 0,380917847, 0,3530742789, 0,4186432387, 0,4967130412, 0,5456900702, 0,4316442951, 0,4469068418, 0,4245571962, 0,3480457574, 0,4 008651116, 0,3921044585, 0,4338216423, 0,468319975, 0,4304177896, 0,4563042904, 0,4515885332, 0,4570431621, 0,3410669895, 0,3382256492, 0,1985616886, 0,0997030911), класс = "* ..frame", строка 100), строка. *

структура (список (X = 1:49, дата = структура (1:49, .Label = c ("2019-01-02", "2019-01-03", "2019) -01-04 "," 2019-01-07 "," 2019-01-08 "," 2019-01-09 "," 2019-01-10 "," 2019-01-11 "," 2019-01 -14 "," 2019-01-15 "," 2019-01-16 "," 2019-01-17 "," 2019-01-18 "," 2019-01-22 "," 2019-01-23 "," 2019-01-24 "," 2019-01-25 "," 2019-01-28 "," 2019-01-29 "," 2019-01-30 "," 2019-01-31 ", "2019-02-01", "2019-02-04", "2019-02-05", "2019-02-06", "2019-02-07", "2019-02-08", "2019 -02-11 "," 2019-02-12 "," 2019-02-13 "," 2019-02-14 "," 2019-02-15 "," 2019-02-19 "," 2019-02 -20 "," 2019-02-21 "," 2019-02-22 "," 2019-02-25 "," 2019-02-26 "," 2019-02-27 "," 2019-02-28 "," 2019-03-01 "," 2019-03-04 "," 2019-03-05 "," 2019-03-06 "," 2019-03-07 "," 2019-03-08 ", "2019-03-11", "2019-03-12", "2019-03-13"), класс = "fac тор "), adjClose = c (+107,6401844169, +108,2682817731, 108,0425592857, 107,9738611374, 108,0621873281, +108,1897696036, +107,9346050527, +108,2192116672, 108,0229312434, +107,9247910315, +107,9149770103, +107,8266508196, +107,6990685441, +107,7677666924, 107,6401844169, +107,8070227772, +107,6401844169, +107,4929740991, 107,8070227772, +108,3958640486, +109,0043333624, 108,621586536, +108,4056780698, 108,5528883877, +108,4841902393, +108,6510285996, 108,7000987055, 108,4743762181, +108,4940042605, +108,4743762181, +108,778610875, +108,778610875, 109,033775426, +109,0730315107, +108,8865651081, +109,1711717227, 109,0926595531, +109,2496838922, +108,9945193412, 108,8178669598, 108,6019584936, +108,7589828327, +108,7197267479, 108,8473090234, 109,1515436803, +109,2496838922, +109,2300558498, +109,4361502948, +109,5637325703), lagx = c (Н.А., +107,6401844169, +108,2682817731, +108,0425592857, +107,9738611374, 108,0621873281, 108,1897696036, +107,9346050527, +108,2192116672, +108,0229312434, 107,9247910315, 107,9149770103, +107,8266508196, 107,6990685441, +107,7677666924, +107,6401844169, 107,8070227772, +107,6401844169, 107,4929740991, 107,8070227772, +108,3958640486, 109,0043333624, 108,621586536, 108,4056780698, +108,5528883877, 108,4841902393, 108,6510285996, +108,7000987055, +108,4743762181, +108,4940042605, +108,4743762181, 108,778610875, +108,778610875, 109,033775426, +109,0730315107, +108,8865651081, +109,1711717227, 109.0926595531, 109.2496838922, 108.9945193412, 108.8178669598, 108.6019584936, 108.7589828327, 108.7197267479, 108.8473090234, 109.1515436803, 109.2496838922, 109.2300558498, 109.4361502948 (NA). 00580130529379156, -0,00208919974584387, -0,000636247954609872, +0,000817364453597674, +0,00117924528324126, -0,00236406619337162, +0,0026299084064227, -0,00181702552912345, -0,000909338910569157, -9.09421608741455e-05, -0,000819149904301271, -0,00118461818866857, +0,000637464711466883, -0,00118526622925381, +0,00154756486175119, -0,00154996353084853, -0,00136948781102927, +0,00291306326814199, 0,00543232231753777, +0,0055820653641086, -0,00352367184650867, -0,00199167119328355, +0,00135611608393343, -0,000633254930957689, +0,00153554331192595, 0,000451426507283543, -0,0020808830183651, +0,000180913613925363, -0,000180946349583393, +0,00279682425113514, 0, +0,00234023402384323, +0,000359906423762952, -0,0017124831003245, +0,00260697590864838, -0,000719683340030535, +0,00143729788046738, -0,00234107689581361, -0,00162337662311708 , -0,00198807157066812, 0,00144378271118579, -0,00036107600685043, 0,001172121540208, 0,00278726847685346, 0,000898311174948939, -0,000179694519491878, 0,00188323917137825, 0. 0011644571840243), rollmeanx = c (NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA Н.А., +0,00031862067098972, +0,000116566615996168, 0,000182745925763722, 0,000281463710606259, 0,000264830167591981, +0,000116642517518964, +0,000232323417850645, 0,000104557292577641, +0,00031427773713485, +0,000355611323978903, +0,000466119332375147, 0,000519712801832612, 0,000495718942211888, 0,00058524217844741, +0,000606405037048468, +0,000601392901535568, +0,000565433203128064, 0,000553892802578618, 0,000331113946269068, +0,000149816691434887, -0,00012032609815416, 9.31190557875071e-05 0.00031034358624828, 0.000289534272203531, 0.000310150654542886, 0.000325955011790718, 0.000358365497097116), rollsdx = c Н. А., Н. А., Н. А., Н. А., Н. А., Н. А., 0,00268140767467829, +0,00240146073630199, +0,00235743767997561, +0,00236696184695034, +0,0023643008327706, 0,00240605774759231, +0,00234142001164779, +0,00228025110555633, 0,002307117 86187933, +0,00229224984050652, +0,0023280202990145, +0,00231052893570155, 0,00233171418775393, 0,00237482539929513, +0,00236032672014123, +0,00235834925288879, 0,00239840602803656, +0,0024087481448098, +0,00240681026318947, 0,00213964886031918, +0,00176319827198963, 0,00160907538291628, +0,00163656991965793, +0,00162551270011354, +0,00161610064622736, +0,00163029258958719, 0,00163996465710043), roll_sharpe = * +1043 * (Н. А., Н. А., Н.А. , NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 0.118825896561196, 0.0485398800130578, 0.0775188787877576, 0.11891349705062, 0.112012043442729, 0.04837585729 , +0,0992232989787878, +0,0458534116364924, 0,136220928426624, 0,155136372002243, 0,200221335085637, 0,224932392666535, 0,212598501486754, 0,246435876347421, 0,256915719283212, 0,255005869380419, 0,235753744994942, 0,229950484351013, 0,137573763637803, +0,0700192887783178, -0,0682430898814242, +0,0578711580427878, 0,189630508614717, 0,178118738895924, 0,191912957442906, 0,199936510705267, 0 .218520256241821)), class = "data.frame", row.names = c (NA, -49L))

  • Я выбираю между двумя etfs в соответствии с самый высокий скорректированный коэффициент Шарпа в последний день месяца. (?)

    • Я создаю новый CSV-файл с одинаковыми столбцами, рассчитываемыми каждый месяц для верхнего рейтинга etf (ежедневно). (?) Требуемый выходной файл - это файл, подобный приведенному выше, с данными высшего ранга etf

Я понятия не имею, как поступить. Это для нахождения последнего месяца:

library(tidyverse)
library(roll)


library(quantmod)
library(httr)
library(jsonlite)
library(tidyverse)
library(hrbrthemes)
library(dplyr)
library(xts)

xdf <- data.frame()
xdf <- read.csv('tip.csv')

library(timeDate)    
xdf$eom<-timeLastDayInMonth(xdf$somedate)

????

xdf_02 <- xdf %>% mutate(lagx = lag(adjClose)) %>%
  mutate(pct_change = (adjClose - lagx)/adjClose)%>%
  mutate(rollmeanx = roll_mean(pct_change, width = 22),rollsdx = roll_sd(pct_change, width=22)) %>%
  mutate(roll_sharpe = rollmeanx / rollsdx)

write.csv(xdf_02,'tip_r.csv')

Tnx для всех участников

...