Læringsmål:
- PLACEHOLDER
Pensum:
- PLACEHOLDER
Denne oppgaven er ment som en øvelse i å løse et litt stort og abstrakt problem. Det som er viktig å tenke på da er hva som i oppgaveteksten som er relevant for akkurat den deloppgaven man skal løse. Man må også passe på å dele problemer opp i mindre og løsbare problemer, og løse kun ett og ett om gangen. Disse delproblemene tilsvarer veldig ofte enten funksjoner eller kontrollstrukturer som if-else, for- eller while-løkker.
Når man skal investere penger i aksjer nnes det mange forskjellige investeringsstrategier. I denne oppgaven det implementeres inntil tre forskjellige strategier.
Vi forenkler børsmarkedet og sier at en aksje har en fast pris per dag og kan enten kjøpes eller selges kl 12:00. Det tillates også å investere i brøkdeler av en aksje. Det vil si at om man har 53,17 kr kan man investere i 53,17 % av en aksje som koster 100 kr.
Aksjeprisene er gitt som en vektor av tall, hvor pris i tilsvarer prisen kl 12.00 på dag i. For eksempel:
Dag | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
---|---|---|---|---|---|---|---|---|---|---|
Pris | 100 | 101 | 102 | 100 | 102 | 104 | 103 | 98 | 96 | 101 |
Hvis det investeres 50 kr i denne aksjen på dag 1 og selger den på dag nummer 2 så tjenes 50 * (101 / 100) = 0.50 kr.
a)
Lag en vektor closingPrices med prisene over.
b)
Plott aksjeprisene i en figur.
Resultatet skal se slik ut:
c)
Lag funksjonen daily_returns(closing_prices) hvor closing_prices er aksjeprisene for et selskap i en gitt periode. Funksjonen skal returnere en vektor som viser dag for dag hvor mye en aksje har gått opp eller ned. Dvs.
dailyReturnsi = closingPricei - closingPricei-1
Daglig gevinst for dag nummer 1 skal være 0. Gitt prisene over skal funksjonen returnere følgende vektor: [0, 1, 1, -2, 2, 2, -1, -5, -2, 5]
d)
Plott daglige gevinster (daily returns) for aksjen over i en figur. Resultatet skal se slik ut:
For å lage den første strategien ma det lages en funksjon som sjekker om prisen har gått opp de siste n dagene.
e)
lag funksjonen isGoingUp(dailyReturn, i, n) som sjekker om alle elementene fra i og ned til i-n+1 i dailyReturn er positive eller lik null. Funksjonen skal returnere true om dette er tilfelle og false ellers.
Code Block | ||
---|---|---|
| ||
isGoingUp([0, 1], 2, 2) % Returnerer 1
isGoingUp([0,-1], 2, 2) % Returnerer 0
isGoingUp([-1, 0, 1], 3, 2) % Returnerer 1
isGoingUp([1, 0, 1], 3, 3) % Returnerer 1 |
Code Block | ||
---|---|---|
| ||
|
Code Block | ||
---|---|---|
| ||
|
Code Block | ||
---|---|---|
| ||
|