Vetores

Exercício nº01

Neste exercício, é pedido, primeiramente, que se crie um vetor com taxas de juros de 5% a 15% a.a. variando de 0,25% em cada ponto. Com isso, em cada situação (das 40 situações mostradas), será aplicado o valor de R$1000 em cinco anos.

vec <- rep(NULL,40);
ver <- 0.25/100;
inicial <- 1.05;
for (i in 1:40) {
  vec[i]<- inicial +i*ver
  
}
valor<-1000
plot(vec, main = "Taxa de juros variando conforme solicitado", xlab="Ponto",ylab = "Taxa aplicada")

dados <- rep(NULL,40)

for (j in 1:40) {
  
dados[j]<- valor*((vec[j])^5)
  
}

dadosf <-cbind(vec,dados)
plot(dadosf, main = "Valor Final de R$1000 investidos em 5 anos",xlab = "Taxa de juros ao ano",ylab = "Valor final em 5 anos em R$")

require(DT)
## Loading required package: DT
colnames(dadosf)<- c("Taxa de juros a.a.","Valore final em Reais - 5 anos investimento")
datatable(dadosf)

Exercício nº02

Seja uma matriz aleatória formada da seguinte forma:

set.seed(321)
N=8; M=100;
mx = matrix(runif(N*M)*100, N, M)
mx[,1:4] 
##          [,1]      [,2]     [,3]     [,4]
## [1,] 95.58938 45.067322 63.27380 57.46893
## [2,] 93.72855 80.659572 40.35900 75.12382
## [3,] 23.82205 60.572107 29.05034 99.27224
## [4,] 25.50736 36.284109 64.04590 43.08644
## [5,] 39.05120 76.633847 63.59678 12.43650
## [6,] 34.11799  4.508695 98.98785 59.42603
## [7,] 45.23806 59.217188 93.11740 21.05046
## [8,] 28.99328 20.163219 48.55048 71.02533
resp01 <- rep(NULL, N)

for (i in 1:N) {
  resp01[i]<- mean(mx[i,])
}
print("Situação 01")
## [1] "Situação 01"
resp01
## [1] 50.74053 50.62456 52.96649 49.33497 50.99277 49.85947 52.03987 47.03888
resp02 <- rep(NULL,N)
resp002<-rep(1/M, M)*mx
for (j in 1:N) {
  resp02[j]<-sum(mx[j,])/M
}
print("Situação 02")
## [1] "Situação 02"
resp02
## [1] 50.74053 50.62456 52.96649 49.33497 50.99277 49.85947 52.03987 47.03888
resp03<- apply(mx, 1, mean)
print("Situação 03")
## [1] "Situação 03"
resp03
## [1] 50.74053 50.62456 52.96649 49.33497 50.99277 49.85947 52.03987 47.03888
print("Uso do all.equal")
## [1] "Uso do all.equal"
all.equal(resp01,resp02,resp03)
## [1] TRUE

Exercício nº03

A situação descrita é a seguinte: “Você investiu”R$10.000" em dois fundos de investimento. Um dos fundos teve retorno m´edio de 6% anual e o outro 7% ao ano. Se o ganho acumulado em ambos investimentos após um ano foi de “R$630”, quanto dinheiro foi investido em cada fundo? E se o seu ganho acumulado fosse R$800, como teria sido sua alocação inicial? Explique."

Então, vamos lá.

tx01 = 0.06;
tx02 = 0.07;
total = 10000;

result01 = 630

quantidade01 = c(-100*result01+70000,100*result01-60000)

result02 = 800;

quantidade02 = c(-100*result02+70000,100*result02-60000)

total <- cbind(quantidade01,quantidade02)
colnames(total)<- c("Resultado R$630","Resultado R$800")
print("A primeira linha corresponde ao investimento 01 e a segunda corresponde ao investimento 02")
## [1] "A primeira linha corresponde ao investimento 01 e a segunda corresponde ao investimento 02"
datatable(total)

É possível observar que a combinação dos dois investimentos não é possível obter um retorno de R$800, pois em uma das colunas, a quantidade de dinheiro resultou em um valor menor que zero.

Exercício nº04

Você irá receber uma heran¸ca, mas poderá usufruir dela somente depois de 15 anos,onde receberá dez mil reais por 5 anos, acrescidos R$ 500 a cada ano. Como você não quer esperar, quanto representaria essa quantia em termos de dinheiro hoje? Pode assumir que pode pegar dinheiro emprestado a taxa de 10% a.a.

vet <- rep(0:15,1)
vet01 <- rep(NULL,16)
vo <- 10000
for (i in 0:15) {
  vet01[i]<- vet[i]*500 + vo
}
vet01
##  [1] 10000 10500 11000 11500 12000 12500 13000 13500 14000 14500 15000 15500
## [13] 16000 16500 17000
verl = 0 ;
for (i in 0:15) {
  verl <- verl + vet01[1]*((1.10)^i) 
}
print("Valor daqui 15 anos")
## [1] "Valor daqui 15 anos"
print(verl)
## [1] 359497.3

Exercício nº05

Continuando com o caso anterior. Você decide fazer uma dívida por conta de toda a herança e já começar a gastar na quantia de $400 mensalmente. Em quanto tempo terá gastado tudo? (Pode considerar que seu saldo não terá rendimentos).

numm <- verl/400;
numm <- numm/12
numm
## [1] 74.89527
print("Será gasto em 75 anos")
## [1] "Será gasto em 75 anos"

Exercício nº06

Não existe uma forma eficiente.

Funções

Exercício nº01

Em primeiro lugar, será necessário analisar de forma mais profunda o código mostrado na questão:

FC=rep(500,5)

FC
## [1] 500 500 500 500 500
per=seq_along(FC)

per
## [1] 1 2 3 4 5
sum(FC/(1+0.01*12.5)^per)
## [1] 1780.284
FC/(1+0.01*12.5)^per
## [1] 444.4444 395.0617 351.1660 312.1475 277.4645
# VP

fvp <- function(fc, periodos, taxar) {
return(sum(fc * (1 + (0.01*taxar))^-periodos))}

#utilizando a função

fvp(FC, per, 12.5)
## [1] 1780.284
fvp(c(2500,2500),c(3,5),13.5)
## [1] 3037.102
fvp(c(2500,2500),c(3,5),c(13.5,14))
## [1] 3008.25

A principal diferença nestas sentenças está na mudança da taxa de juros. Ela, na primeira aplicação é de 13,5% e na segunda aplicação é de 14%

Exercício nº02

Código de Nelson-Siegel-Svensson

nszs <- function(Beta1, Beta2, Beta3, Beta4, Lambda1, Lambda2, t) {
# t é o prazo até o vencimento em anos
tmp1 = t/Lambda1;etmp1 = exp(-tmp1)
tmp2 = t/Lambda2;etmp2 = exp(-tmp2)
return(Beta1+
Beta2*((1-etmp1)/tmp1)+
Beta3*(((1-etmp1)/tmp1)-etmp1)+
Beta4*(((1-etmp2)/tmp2)-etmp2))
}
tempos <-c(1,21,42,63,126,252,378,504,630,756)/252
tempos
##  [1] 0.003968254 0.083333333 0.166666667 0.250000000 0.500000000 1.000000000
##  [7] 1.500000000 2.000000000 2.500000000 3.000000000
(nszs(0.098,-0.0306,-0.0535,-0.0071,1.4159,0.8610,tempos))
##  [1] 0.06735170 0.06644692 0.06561548 0.06489554 0.06331495 0.06210998
##  [7] 0.06256357 0.06392801 0.06574803 0.06774974
plot(nszs(0.098,-0.0306,-0.0535,-0.0071,1.4159,0.8610,tempos), main = "Nelson-Siegel-Svensson Método",xlab = "tempo (ano)",ylab = "Taxa de juros",type = "l")

Como mostrado no gráfico, o tempo esperando para reversão da taxa de juros é de aproximadamente 6 anos.

Exercício nº03

Um fundo de investimento tem duas letras financeiras do tesouro (LFT), valor de face R$ 1000, com vencimentos em 90 e 180 dias calendário a partir de hoje, respectivamente. Qual o valor dessa carteira, a mercado, hoje? Utilize as funções criadas anteriormente.

Exercício nº04

Outros

Exercício nº01

Seja o banco de dados dado abaixo:

dp <- structure(c(60.0806, 58.9208, 58.2076, 56.761, 54.1546, 55.1012, 58.4542, 58.5674,
56.9744, 59.0074, 56.1878, 51.9148, 50.1216, 53.768, 53.3014, 52.788, 54.6346,
47.7218, 46.1354, 38.5694, 43.8156, 40.3692, 42.0558, 38.6562, 37.3496, 39.4628,
40.5626, 40.816, 45.2088, 48.4884, 52.2548, 53.8346, 51.21, 51.95, 48.6, 50.06,
52.69, 55.9, 57.91, 58.39, 60.42, 56.88, 56.7, 57.56, 59.66, 61.52, 61.53, 62.38,
65.54, 63.62, 66.72, 71.78, 77.02, 75, 42.88, 41.56, 38.12, 35.84, 35.88, 35.44,
37.68, 35.36, 33.44, 33.52, 32.8, 28.24, 26.68, 28.48, 27.64, 28.44, 32.04, 28,
27.88, 23.16, 24.8, 23.4, 23.24, 23.16, 19.96, 20.92, 22.68, 23.52, 26.04, 29.76,
31.88, 32.64, 30.56, 32.28, 30.04, 31.52, 31.84, 34.6, 35.8, 37.8, 39.68, 38.08,
37.08, 39.52, 39.6, 40.04, 40.4, 41.48, 45.08, 43.32, 46.4, 48.56, 50.16, 51.22,
58.7374, 58.5492, 56.6444, 57.326, 51.9548, 51.8514, 54.1796, 50.125, 48.4802,
49.62, 48.9884, 47.8768, 47.5852, 44.9772, 48.7918, 54.1996, 53.1114, 51.5016,
51.6532, 51.5148, 50.3834, 50.1166, 50.1566, 49.32, 50.495, 53.325, 52.77, 49.985,
52.58, 52.995, 54.685, 55.115, 53.44, 56.45, 56.85, 58.15, 59.125, 59.25, 58.275,
60.445, 63.79, 64.965, 64.11, 65.75, 68.81, 69.185, 71.3, 73.655, 74.965, 74.705,
75.665, 75.72, 74.88, 75.11, 56.668, 58.206, 55.2388, 54.6124, 52.128, 55.5856,
53.762, 50.6516, 50.6244, 52.4868, 50.37, 51.892, 53.0952, 50, 53.1212, 53.8984,
53.0716, 51.4616, 52.1936, 50.8976, 49.1012, 50.5776, 52.1736, 51.106, 52.6448,
54.8388, 56.934, 55.3, 59.11, 58.206, 62.14, 61.072, 59.194, 61.872, 62.612,
64.264, 66.162, 67.588, 64.558, 68.13, 68.322, 71.47, 71.19, 76.254, 79.064,
81.088, 82.314, 81.184, 82.054, 81.336, 83.564, 82.608, 83.668, 83.54), .Dim = c(54L,
4L), .Dimnames = list(NULL, c("At1", "At2", "At3", "At4")))

Para multiplicar cada coluna, respectivamente, por 1.2, 1.3, 0.5 e 0.8, temos o seguinte:

multipl <- c(1.2,1.3,0.5,0.8)

for (i in 1:4) {
  dp[,i]<-dp[,i]*multipl[i]
}
#Novo banco dados
datatable(dp) 
#Preço médio de cada ativo - Respectivamente

for (j in 1:4) {
  print(mean(dp[,j]))
}
## [1] 65.05081
## [1] 43.81819
## [1] 28.83509
## [1] 49.55859
dplog <-data.frame(1:54,1:54,1:54,1:54)
colnames(dplog) <- c("At1", "At2", "At3", "At4")
require(TTR)
## Loading required package: TTR
dplog[,1] <- ROC(dp[,1])
dplog[,2] <- ROC(dp[,2])
dplog[,3] <- ROC(dp[,3])
dplog[,4] <- ROC(dp[,4])
print("Retorno Médio")
## [1] "Retorno Médio"
datatable(dplog)
dpsd <-data.frame(1,1,1,1)
colnames(dpsd) <- c("At1", "At2", "At3", "At4")
for (k in 1:4) {
  dpsd[1,k]<- sd(dp[,k])
}
print("Desvio-padrão de cada ativo")
## [1] "Desvio-padrão de cada ativo"
datatable(dpsd)
print("A tabela de correlação é dada por:")
## [1] "A tabela de correlação é dada por:"
datatable(cor(dp))
require(corrplot)
## Loading required package: corrplot
## corrplot 0.84 loaded
corrplot(cor(dp), method = "square",type = c("upper"))