Salkkujen seuranta: excel-taulukot

Valmistauduin jo henkisesti korjaushommiin, mutta näkyy kyllä toimivan ihan normaalisti.

Tuolla sinun alkuperäisellä näyttäisi osakkeet toimivan, mutta esimerkiksi rahastot =yahoofinance("0P000134K9.F";"price") ja =yahoofinance("iusq.de";"price") antavat vääriä arvoja.

Tällä korjauksella hintadata näyttää olevan väärin kaikilla.

1 tykkäys

Uudempi yahoofinance koodi hakee itselle ~4500 lähes kaiken arvoksi, kun taas vanhan kanssa osa osakkeista ja osa ETF antaa 0 tai jopa negatiivisia arvoja.

Pari tuntia yahoofinancen sivua yritin tutkia ja lisäillä ehtoja koodiin, mutta kun korjasi jonkun arvon hajosi samalla monta muuta.

Jos joku saa toimimaan tuon palikan niin kertokaa miten onnistui :slight_smile:

3 tykkäystä

Sama. Jotain 4500 ja risat ja kun kirjoittelee käskyn käsin uudelleen, niin välillä harvoin se toimii. Aivan henkimaailman juttuja.

Voisitte testailla toimiiko seuraava versio yhtään paremmin:

function yahoofinance(symbol, mode="price") {
  symbol = symbol.toUpperCase();
  mode = mode.toLowerCase();

  const content = UrlFetchApp.fetch("https://finance.yahoo.com/quote/" + symbol).getContentText();
  const $ = Cheerio.load(content);

  if (mode === "price") return Number($('fin-streamer[data-symbol="' + symbol + '"][data-field="regularMarketPrice"]').attr('value')) || 0;
  else if (mode === "name") return $("div#quote-header-info h1").first().text().split("(" + symbol + ")")[0] || "N/A";
  else if (mode === "change") return Number($('fin-streamer[data-symbol="' + symbol + '"][data-field="regularMarketChange"]').attr('value')) || 0;
  else if (mode === "changepct") return Number($('fin-streamer[data-symbol="' + symbol + '"][data-field="regularMarketChangePercent"]').attr('value')) || 0;

  var summaryArr = $("div#quote-summary").children().children().children().children().toArray().map((element) => { return $(element).text() });

  if (mode === "high") return Number(summaryArr[4].split(" ")[3].replace(/\,/g, "")) || "N/A";
  else if (mode === "low") return Number(summaryArr[4].split("e")[1].split(" ")[0].replace(/\,/g, "")) || "N/A";
  else if (mode === "high52") return Number(summaryArr[5].split(" ")[4].replace(/\,/g, "")) || "N/A";
  else if (mode === "low52") return Number(summaryArr[5].split("ge")[1].split(" ")[0].replace(/\,/g, "")) || "N/A";
  else if (mode === "open") return Number(summaryArr[1].split("n")[1].replace(/\,/g, "")) || "N/A";
  else if (mode === "volume") return Number(summaryArr[6].split("e")[1].replace(/\,/g, "")) || "N/A";
  else if (mode === "volumeavg") return Number(summaryArr[7].split("e")[1].replace(/\,/g, "")) || "N/A";
  else if (mode === "beta") return Number(summaryArr[9].split(")")[1]) || "N/A";
  else if (mode === "pe") return Number(summaryArr[10].split(")")[1].replace(/\,/g, "")) || "N/A";
  else if (mode === "eps") return Number(summaryArr[11].split(")")[1].replace(/\,/g, "")) || "N/A";
  else if (mode === "edate") return summaryArr[12].split("Date")[1] || "N/A";
  else if (mode === "divdate") return summaryArr[14].split("Date")[1] || "N/A";
  else if (mode === "target") return Number(summaryArr[15].split("st")[1].replace(/\,/g, "")) || "N/A";
  else if (mode === "div") return Number(summaryArr[13].split("ld")[1].split(" ")[0].replace(/\,/g, "")) || "N/A";
  else if (mode === "yield") return Number(summaryArr[13].split("(")[1].split("%")[0]) || "N/A";
  else throw new Error("Unknown mode");
}

Tekemäni muutokset:

  • Parametrit merkkikokoriippumattomiksi
  • Poikkeus tuntemattomasta mode-parametrista (oletusparametrina “price” kuten ennenkin)
  • Nimen parsinta eri tavalla
  • price/change/changepct -kenttiin data-symbol-ehto (tämä toivottavasti korjaa väärät arvot).
2 tykkäystä

Itsellä lähti ainakin toimimaan tuolla koodilla, kiitos siitä.
Joihinkin piti lisäillä se “price” kun sitä en ollut kaikissa aiemmin käyttänyt kun se tuli oletuksena noissa aiemmissa koodeissa, mutta hyvältä näyttää ainakin tällä hetkellä. :+1:

1 tykkäys

Joo alkoi tällä pelittämään. Iso kiitos avusta! Vaan EURUSD%3DX eli EURUSD näyttää itselläni nollaa.

Aivan juu, en tajunnut, että skripti toimi siten. Lisäsin skriptiin vielä pricen oletusmoodiksi, jos parametria ei anna, niin pysyy taaksepäin yhteensopivuus.

2 tykkäystä

Mulle tää antaa Erroria :

TypeError: Cannot read properties of undefined (reading ‘toUpperCase’)

Mitähän teen väärin?

Edit.
valitti riville 2 erroria, joten otin sen pois kokonaan ja vaikuttais toimivan ilman.
rivi 2: symbol = symbol.toUpperCase();

jostain syystä tunnistaa vaan tolowercase komennon ?

Google Financesta ovat hävinneet monet ETF:t, kuten suositut EUNL ja IS3N. Onko kukaan huomannut samaa?

Tämän osalta ammutte valitettavasti itseänne nopeasti jalkaan, kun maksullisellakin versiolla saa mukaan vain 200 kauppaa ja historian viideltä vuodelta.

Lisäksi jos palveluun ei ole mahdollista tuoda kauppoja suosituimmilta välittäjiltä (esim. csv-muodossa tms.), niin kynnys vaihtaa palvelun käyttäjäksi on kohtalaisen suuri, kun kauppoja saa naputella sisään hyvän tovin.

1 tykkäys

Beta-versiossa rajat hiukan vielä tiukemmat jotta varmistetaan, että kaikki pelittää oikein. Varmasti tullaan optimoimaan softaa tuoltakin osin vielä. csv-importtikin on tekeillä ja automatisointia osinkoihin, jotta ei aivan niin paljon tule käyttäjälle manuaalista työtä. Kiitos palautteesta!

1 tykkäys

Joo, ETF:t ei löydy enää, ennen toimivat. Esim. XESC, XDUK, SXR8, IS3N.
Näissä käytin tickerin edessä fra:, eli fra:XESC jne. Nyt ei toimi tuolla eikä ilman.

Sattumalta Kauppalehden salkussakin ETF:ien kurssit eivät näytä päivittyvän, näkyy jotkut vanhat kurssit.

Vastaan siitäkin huolimatta että viestisi on jo pari viikkoa vanha :sweat_smile: ; huomasin itekin että kesän aikana muutaman rahaston tikkeri oli vaihtunut. Esim SXR8 → CSPX, IS3N → EMIM, IS3R → IWMO. Nuo uudet tikkerit saa selville, kun kirjoittaa googlen talous-sivulle rahaston nimen, niin siinä jossain alhaalla lukee googlen käyttämä tikkeri. Sheetsin googlefinance-kaava ei silti nuita kaikkia tunnistanut, joten joidenkin kohdalla pitää mainita pörssi erikseen. Aiemmin on tosiaan toiminut tuo FRA:xxxx, mutta ainakin itse jouduin nyt kokeilemaan läpi myös BIT / AMS / LON että alkoi löytymään.

1 tykkäys

Olen kokeillut Nordeasta exceliin ladatulla tiedostolla excelin XIRR kaavaa joka laskee salkun keskimääräisen vuosituottoprosentin. Sain tämän idean Heikki Keskivälin kirjasta. Toki vaatii vähän excelin muokkausta. Lisää vaan ajanjakson alkuun salkun arvon ostoksi ja ajanjakson loppuun salkun arvon myynniksi. Tämä XIRR kaava vaatii siis päivänmääräsarakkeen ja osto/myynti sarakkeen. En ole osannut vielä tehdä tuota automaattiseksi niin, ettei tarvitse joka kerta exceliä manuaalisesti muokata esim. päivänmääriä tms.

1 tykkäys

Apple Mac-käyttäjille:

MacOS käyttikseen kuuluvalla “ekselillä” eli Numbersilla on helppo hakea hinnat ja paljon muitakin parametreja. Funktio on STOCK.

Hakee toki jenkkiosakkeet, ja kokeilin saksa-ETF:ää, suomiosaketta ja Dansken rahastoa - kaikki löytyivät. Ilmeisesti takana on Yahoon koko satsi.

Heikkoutena on se että tuorein data on edellisen päivän päätöshinta.

1 tykkäys

Suosittelen kokeilemaan ilmaisohjelmaa nimeltä Portfolio Performance, mikäli riittää että pääsee tietokoneella tutkimaan salkkua. Toki sinne pitää naputella kaikki toimeksiannot ja muut tapahtumat sisään, mutta piirtää hienosti käppyrät ja saapa sinne määriteltyä tavoiteallokaation ja benchmarkitkin (en ole vielä itse niin pitkällä).

LINKKI

Jos täällä on muita käyttäjiä, niin palvelisikohan ko. softan käyttäjiä ehkä oma ketju? Vai sovitaanko excel-ketjun sekaan :smiley: Aina välillä joutuu pohtimaan miten tuonne kannattaa perustaa / viedä esim. pääomasijoitusten tapahtumat, niin voisi jakaa ideoita.

15 tykkäystä

Ilmeisesti tämä myös importtaisi toimeksiannot tositteilta, mutta tukee lähinnä DACH-alueen pankkeja. Aiemmin myös haki etf:n sektoripainot, mutta api meni kiinni tämän osalta.

Joo koitin saada Nordnetin CSV exportista mäpättyö mutta en siinä itse ainakaan onnistunut… Jos joku onnistuu niin tutoriaalia kehiin :grin:

Asensin tämän sovelluksen ja sain sieltä hienon käppyrän, mutta noita prosentteja sivulla en ymmärrä.

Osuudet näyttää olevan kuitenkin oikein.

Tämä on Degiron salkkuni.

Onkohan mahdollista, että joku piste-pilkkuvirhe? Aika huimat tuotot olet muuten saanut aikaiseksi :wink: En näillä tiedoilla kyllä osaa muuta arvata…

1 tykkäys