An embedded and charset-unspecified text was scrubbed... Name: not available URL: <https://stat.ethz.ch/pipermail/r-help/attachments/20110107/625bca51/attachment.pl>
Currency return calculations
2 messages · Amelia Vettori, PIKAL Petr
Hi What is wrong with my suggestion then.
rate1
USD GBP EURO CHF AUD 1 112.05 171.52 42.71 41.50 109.55 2 112.90 168.27 42.68 41.47 102.52 3 110.85 169.03 41.86 42.84 114.91 4 109.63 169.64 44.71 43.44 122.48 5 108.08 169.29 44.14 43.69 122.12 6 111.23 169.47 44.58 42.30 123.96 7 112.49 170.90 41.07 42.05 100.36 8 108.87 168.69 42.23 41.23 110.19 9 109.33 170.90 44.55 42.76 121.58 10 111.88 169.96 41.12 43.79 103.46
portfolio<-c("USD", "USD", "CHF", "AUD", "USD")
log(rate1[-1,portfolio]/rate1[-nrow(rate1),portfolio])
USD USD.1 CHF AUD USD.2 2 0.007557271 0.007557271 -0.000723153 -0.066323165 0.007557271 3 -0.018324535 -0.018324535 0.032501971 0.114091312 -0.018324535 4 -0.011066876 -0.011066876 0.013908430 0.063798538 -0.011066876 5 -0.014239366 -0.014239366 0.005738567 -0.002943583 -0.014239366 6 0.028728436 0.028728436 -0.032332157 0.014954765 0.028728436 7 0.011264199 0.011264199 -0.005927700 -0.211195211 0.011264199 8 -0.032709819 -0.032709819 -0.019693240 0.093442427 -0.032709819 9 0.004216322 0.004216322 0.036436939 0.098366334 0.004216322 10 0.023056037 0.023056037 0.023802395 -0.161387418 0.023056037
As I said instead fiddling with several loop/if/function/variables attempt it seems to me better to use powerful R indexing and "whole object" approach where it is possible. Regards Petr Amelia Vettori <amelia_vettori at yahoo.co.nz> napsal dne 07.01.2011 13:46:53:
Dear sir, I am extremely sorry for messing up the logic asking for help
w.r.t.
my earlier mails I have tried to explain below what I am looking for. I have a database (say, currency_rates) storing datewise currency
exchange
rates with some base currency XYZ.
currency_rates <- data.frame(date = c("12/31/2010", "12/30/2010",
"12/29/
2010", "12/28/2010", "12/27/2010","12/24/2010", "12/23/2010",
"12/22/2010",
"12/21/2010", "12/20/2010"), USD = c(112.05, 112.9, 110.85, 109.63, 108.08, 111.23, 112.49, 108.87,
109.33, 111.88),
GBP = c(171.52, 168.27,169.03, 169.64, 169.29, 169.47, 170.9, 168.69,
170.9, 169.96),
EURO = c(42.71, 42.68, 41.86, 44.71, 44.14, 44.58, 41.07, 42.23, 44.55,
41.12),
CHF = c(41.5, 41.47, 42.84, 43.44, 43.69, 42.3, 42.05, 41.23, 42.76,
43.79),
AUD = c(109.55, 102.52, 114.91, 122.48, 122.12, 123.96, 100.36, 110.19,
121.
58, 103.46)) I have a portfolio consisting of some of these currencies. At this moment, suppose my portfolio has following currency
transactions. i.e
following is my current portfolio and
has 2 USD transactions, 2 EURO transactions and a CHF transactions.
portfolio_currency_names = c("USD", "USD", "EURO", "CHF", "EURO", "USD")
# ____________________________________
My objective is AS PER THE PORTFOLIO, I need to generate a data.frame
giving
respective currency returns. Thus, I need to have an output like USD USD EURO CHF EURO USD -0.0076 -0.0076 0.0007 0.0007 0. 0007 -0.0076 0.0183 0.0183 0.0194 -0.0325 0. 0194 0.0183 0.0111 0.0111 -0.0659 -0.0139 -0. 0659 0.0111 0.0142 0.0142 0.0128 -0.0057 0. 0128 0.0142 -0.0287 -0.0287 -0.0099 0.0323 -0. 0099 -0.0287 -0.0113 -0.0113 0.0820 0.0059 0. 0820 -0.0113 0.0327 0.0327 -0.0279 0.0197 -0. 0279 0.0327 -0.0042 -0.0042 -0.0535 -0.0364 -0. 0535 -0.0042 -0.0231 -0.0231 0.0801 -0.0238 0. 0801 -0.0231 Thus, my requirement is to have the dataframe as per the composition of
my
portfolio. Thus, if there are only 2 transactions i.e. if my portfolio contains say only CHF and AUD, I need the return calculations done only
forCHF and AUD.
CHF AUD 0.0007 0.0663 -0.0325 -0.1141 -0.0139 -0.0638 -0.0057 0.0029 0.0323 -0.0150 0.0059 0.2112 0.0197 -0.0934 -0.0364 -0.0984 -0.0238 0.1614 I once again apologize for not asking my requirement properly thereby
causing
not only inconvenience to all of you, but also wasting your valuable
time. Its
not that I wasn't careful while asking for guidance for my requirement,
I
wasn't clear about it. I am sorry for the same once again. I request you to please help me. Amelia Vettori