Vežbe 16

Vežbe ćete raditi u grupama po 2-3 (svaki red je jedan tim). Na taj način moći ćete da se međusobno dopunjujete dok rešavate probleme. Rešenja pišite ispod svakog zadatka. Ideja prilikom izrade zadataka jeste da potražite najelegantnije rešenje ako možete. Naravno, koristite Help. Opišite postupak u radu. Posle sačuvajte to što ste radili na USB.

Zadatak br 1

Stringovi koji označavaju tikere indeksa akcija mogu da sadrže simbol “^” ispred grupe slova. Na primer, “^GSPC” je tiker simbol za SP500 indeks. Pretpostavimo da želimo da od tikera napravimo promenljive date njihovim imenima ispisanim samo pomoću malih slova ali bez simbola koji nisu slova na početku. Na primer, pretpostavimo da želimo da transformišemo listu

{"Date","AMZN","YHOO","IBM","AAPL","^GSPC","rf"}

u listu

{date,amzn,yhoo,ibm,aapl,gspc,rf}

Kako to da možemo da uradimo programski? Napišite prvo funkciju tikertransform[“string”] koja uzima kao input tiker simbol (što je string) i pretvara ga u validnu promenljivu (simbol) po receptu objašnjenom gore. Da biste to uradili treba da definišete tu funkciju za slučaj kada nema drugih simbola osim slova, kao i za slučaj kada na početku postoji simbol “^” pre imena indeksa koji treba izbaciti pre nego što se string prepiše malim slovima i onda pretvori u izraz (expression). To može da se postigne putem transformacije i korišćenjem StringCases funkcije, između ostalog (verovatno postoji i puno drugih načina).

Primenite funkciju tikertransform na listu

{"Date","AMZN","YHOO","IBM","AAPL","^GSPC","rf"}

Treba da dobijete

{date,amzn,yhoo,ibm,aapl,gspc,rf}

Zadatak br 2

Dodefinišite funkciju tikertransform[“string”]  tako što ćete joj dodati još jedan parameter, "st". Funkcija tikertrasform[“string”, “st”]  treba da uzima polazni string i da ga transformiše kao pre osim što umesto izraza (sa glavom Symbol) dobijemo kao izlaz odgovarajući string. Na taj način dobijamo ili simbol kao izlaz

tikertransform["^ABCD"]

ili string.

tikertransform["^ABCD","st"]

Primenite funkciju tikertransform[“string” ,”st”] na listu

{"Date","AMZN","YHOO","IBM","AAPL","^GSPC","rf"}

Zadatak br 3

Downloadujmo podatke iz fajla “podaci11.xlsx” koji sadrži prinose na akcije nekoliko kompanija, SP500 indeksa i nerizičku stopu prinosa na dnevnom nivou 2013-2014. To postižemo kao i uvek korišćenjem Import funkcije i time što biramo prvi Sheet u Excel fajlu. Označimo tu listu sa podaci.

podaci=Import[][[1]];

Primetimo da ukoliko uzmemo samo podatke

podaci1=Drop[podaci,1];

bez naslova, iz njih možemo praviti vremenske serije prinosa tako što ćemo podatke o datumima iz prve kolone upariti sa odgovarajućim podacima iz drugih kolona. Na primer, ukoliko nas zanima da napravimo vremensku seriju za prinos na Amazon, to možemo uraditi ovako

TimeSeries[{podaci1[[All,1]],podaci1[[All,2]]}\[Transpose]]

Vaš je zadatak da u što manje linija koda stvorite promenljive (po pravilima opisanim u prvom zadatku) kojima ćete pridružiti svaku od vremenskih serija prinosa. Na primer, u slučaju Amazona, imali bismo identifikaciju

azmn=TimeSeries[{podaci1[[All,1]],podaci1[[All,2]]}\[Transpose]]

Umesto da to radimo za svaku akciju pojedinačno, želimo da to uradimo za sve akcije odjednom. Koliki je najmanji broj koraka za koji to možete da uradite?

Zadatak br 4

Nastavljajući prethodni zadatak, predstavite ove vremenske serije grafički preko DateListPlot. Svaki grafik automatski treba da dobije naziv koji odgovara izlazu funkcije tikertransform[“string”,”st”]. za taj tiker.

Ukoliko su svi datumi identični, sa vremenskim serijama se mogu raditi sve standardne aritmetičke i algebarske operacije. Na osnovu vremenskih serija amzn, yhoo, ibm, i aapl, napravite vremensku seriju koja se sastoji od ponderisane sume prinosa na te četiri akcije, gde su ponderi sve četiri akcije jednaki (to jest 0.25). Predstavite na istom grafiku prinose na takav portfolio (nazovite ga ew), i prinos na gspc (to je prinos na SP500 indeks koji je proksi za tržišni portfolio). Označite na grafiku koja linija odgovara kom portfoliju.