Skip to content

Monthly Midpoint return

6 messages · Phil Steel, Brian G. Peterson, Ilya Kipnis +2 more

#
Hi Phil here,
Sorry for bothering you all with this idiotic question but I can't find a simple way to go forward.
I can't manage to get the midpoint monthly returns from an daily price xts object.I know how to get monthly endpoints by using "to.monthly()"  but I can't figure how to transform the daily object to monthly midpoint. Lets say the midpoint is the first day trading day around the 15:th in a month or every 30:th day.
Anybody have encounter this "problem" and/or have a solution.
Have a great evening/afternoon/morning!
Cheers,Student
#
On Wed, 2015-06-17 at 12:10 +0000, Phil Steel wrote:
I'm not entirely sure I understand your question.  

If you want the mean/median of the monthly series, or any other
calculable stat, you can use period.apply.

If you want a particular point in time, like the 15th of each month,
then use 'endpoints' or subset the index to get the points you're
looking for.

Regards,

Brian
#
Hi Brian and everybody else, 
its downloaded stock prices I want to transform to middle of month stock price.
endpoints give end of month doesn't it?if Im using endpoints I get a really strange result with a lot of NA:s My Data starts with the 15:th som my idea it transforming the data to.monthly somehow
My function is ("provided" by Ulrich): 
monthly = function(x){  sym <- sub("\\..*$", "", names(x)[1])  Ad(to.monthly(x, indexAt = 'lastof', drop.time = TRUE, name = sym))}

best regards,Phillip

  
  
#
If you're going strictly for mid-month, 2/7ths of the time, that's a
weekend, and don't forget holidays.
On Jun 17, 2015 10:23 AM, "Phil Steel" <steelsteel25 at outlook.com> wrote:

            

  
  
#
On Wed, Jun 17, 2015 at 7:23 AM, Phil Steel <steelsteel25 at outlook.com> wrote:
Possibly put the month in an array, determine the size of the array
and then take the price/returns at the midpoint of the array? That way
number of days in the month, holidays, etc. wouldn't matter much?

- Mark
#
Try this

    data(sample_matrix) # load sample data first
    x <- as.xts(sample_matrix)

    do.call(rbind, lapply(split(x, "months"),
                          function(xx) xx[ceiling(nrow(xx)/2)]))

This code splits the object by months, then uses lapply() to loop over
each month and apply a function which selects the row that is in the
middle of the month.  (you could replace ceiling() with floor() or
round()).

Once you have the subsetted data, you can calculate returns however
you normally would (ROC(), Delt(), dailyReturn(), etc.)

HTH,
Garrett
On Wed, Jun 17, 2015 at 9:30 AM, Mark Knecht <markknecht at gmail.com> wrote: