Aqui estão os retornos anuais de um fundo hipotético de índice de ações S&P 500 para cada ano civil de 1928 a 2017, expresso como multiplicador. Então, em 1928, você pode dizer "o índice subiu 37,88%", que eu representei aqui por 1,3788.
1.3788, 0.8809, 0.7152, 0.5293, 0.8485, 1.4659, 0.9406, 1.4137, 1.2792, 0.6141, 1.2521, 0.9455, 0.8471, 0.8214, 1.1243, 1.1945, 1.138, 1.3072, 0.8813, 1, 0.9935, 1.1026, 1.2178, 1.1646, 1.1178, 0.9338, 1.4502, 1.264, 1.0262, 0.8569, 1.3806, 1.0848, 0.9703, 1.2313, 0.8819, 1.1889, 1.1297, 1.0906, 0.8691, 1.2009, 1.0766, 0.8864, 1.001, 1.1079, 1.1563, 0.8263, 0.7028, 1.3155, 1.1915, 0.885, 1.0106, 1.1231, 1.2577, 0.9027, 1.1476, 1.1727, 1.014, 1.2633, 1.1462, 1.0203, 1.124, 1.2725, 0.9344, 1.2631, 1.0446, 1.0706, 0.9846, 1.3411, 1.2026, 1.3101, 1.2667, 1.1953, 0.8986, 0.8696, 0.7663, 1.2638, 1.0899, 1.03, 1.1362, 1.0353, 0.6151, 1.2345, 1.1278, 1, 1.1341, 1.296, 1.1139, 0.9927, 1.0954, 1.1942
Fonte: https://www.macrotrends.net/2526/sp-500-historical-annual-returns
Desafio
Dados como entradas:
- a matriz de retornos anuais (mas consulte a Regra 2. abaixo)
- uma matriz de números positivos (os valores a serem investidos em cada ano do período de investimento)
escreva um programa ou função que produza o que teria sido o "melhor" período do ano consecutivo de para investir os valores em , onde:
- cada valor é investido no início de um ano.
- tudo o que resta depois de cada ano é reinvestido no início de cada ano subseqüente.
- "melhor" significa a maior quantidade no final do período do ano
Regras
Isso é código-golfe , portanto, o menor número de bytes em cada idioma vence. Aplicam-se regras padrão. Explicações encorajadas.
Se você não gostar da maneira como representei a matriz de retornos anuais, poderá alterá-los para qualquer outra matriz de 90 números que preferir.
Você pode produzir o melhor período do ano qualquer maneira consistente (por exemplo, indexado a 0 ou 1, o primeiro e / ou o último ano a investir, etc.), mas precisa dizer o que sua produção representa se não for ' t óbvio.
Em caso de empate, dê uma ou todas as respostas corretas.
Exemplo de cálculo
Suponha que .
Se você tivesse investido esses valores em 1928, 1929 e 1930 (os índices 1, 2 e 3), você terminaria com 42743.10. Triste.
Mas se você tivesse investido esses valores em 2014, 2015 e 2016 (os índices 1, 87, 88 e 89), teria terminado com 66722,66. Um pouco melhor.
Acontece que o melhor período de três anos para investir esses valores teria sido 1995, 1996 e 1997 (índices 1, 68, 69 e 70), resultando em 91942.91. Agradável.
Casos de teste
Primeiro ano do período ideal, indexado em 1
[ 1, 2, 3 ] -> 68
[ 1 ] -> 6
* any array of length 90 * -> 1
[ 1, 1 ] -> 27
[ 1, 2 ] -> 8
[ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ] -> 62
[ 1, 2, 3, 4, 5, 4, 3, 2, 1 ] -> 64
* 1 repeated 20 times * -> 53