<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Investing |</title><link>https://einarstorvestre.no/tags/investing/</link><atom:link href="https://einarstorvestre.no/tags/investing/index.xml" rel="self" type="application/rss+xml"/><description>Investing</description><generator>Hugo Blox Builder (https://hugoblox.com)</generator><language>en-us</language><lastBuildDate>Mon, 13 Apr 2026 00:00:00 +0000</lastBuildDate><image><url>https://einarstorvestre.no/media/logo_hu_ebc5a94ddf098b18.png</url><title>Investing</title><link>https://einarstorvestre.no/tags/investing/</link></image><item><title>Protector Forsikring Dashboard</title><link>https://einarstorvestre.no/blog/protector-dashboard/</link><pubDate>Mon, 13 Apr 2026 00:00:00 +0000</pubDate><guid>https://einarstorvestre.no/blog/protector-dashboard/</guid><description>&lt;p&gt;Denne siden viser dashboardet direkte inne i nettstedet. Hvis du vil bruke hele appen i egen fane, kan du åpne
.&lt;/p&gt;
&lt;p&gt;Følgende data hentes i sanntid fra Yahoo Finance hver gang siden lastes: &lt;strong&gt;aksjekurs, daglig kursendring, markedsverdi, P/E, P/B, EPS, utbytte og dividendyield.&lt;/strong&gt; Øvrig data — herunder combined ratio, inntjeningshistorikk, ROE-utvikling, geografisk fordeling og scorecard-vurderinger — er basert på siste gjennomgang av aksjen og oppdateres manuelt.&lt;/p&gt;
&lt;p&gt;Vil du følge &lt;strong&gt;innsidehandelen&lt;/strong&gt; i Protector — og på resten av Oslo Børs — har siden en egen
som henter meldepliktige primærinnsidehandler live fra Oslo Børs NewsWeb.&lt;/p&gt;
&lt;h3 id="hva-sier-de-siste-innsidehandlene"&gt;Hva sier de siste innsidehandlene?&lt;/h3&gt;
&lt;p&gt;Innsidebildet i Protector har vært dominert av &lt;strong&gt;kjøp&lt;/strong&gt;, anført av nestleder &lt;strong&gt;Arve Ree&lt;/strong&gt;s investeringsselskap AWC AS, som har akkumulert aksjer over tid — også i perioder med fallende kurs. Kjøp fra primærinnsidere regnes ofte som et tillitssignal, mens store «salg» av og til viser seg å være interne blokkoverføringer mellom innsidere snarere enn spredning ut i markedet. De ferskeste tallene hentes &lt;strong&gt;live&lt;/strong&gt; under (oppdateres automatisk — du trenger ikke vedlikeholde dem):&lt;/p&gt;
&lt;div class="innsum" id="innsum-1791405444116067306"&gt;
&lt;div class="innsum__head"&gt;
&lt;span class="innsum__title"&gt;Siste innsidehandler i Protector&lt;/span&gt;
&lt;span class="innsum__meta" data-role="meta"&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;div class="innsum__counts" data-role="counts"&gt;&lt;/div&gt;
&lt;div class="innsum__list" data-role="list"&gt;
&lt;p class="innsum__empty"&gt;Henter innsidehandler …&lt;/p&gt;
&lt;/div&gt;
&lt;a class="innsum__link" href="https://einarstorvestre.no/innsidehandel/"&gt;Se full live-oversikt for PROT og hele Oslo Børs →&lt;/a&gt;
&lt;p class="innsum__src"&gt;Live fra Oslo Børs NewsWeb, oppdateres automatisk. Ikke investeringsråd.&lt;/p&gt;
&lt;/div&gt;
&lt;style&gt;
.innsum { --buy:#1a9d5a; --sell:#d23b3b; --other:#9aa0a6;
border:1px solid rgba(125,125,125,.22); border-radius:12px; padding:1rem 1.1rem;
margin:1.2rem 0; font-size:.95rem; line-height:1.5; }
.innsum__head { display:flex; justify-content:space-between; align-items:baseline;
flex-wrap:wrap; gap:.4rem; margin-bottom:.5rem; }
.innsum__title { font-weight:700; }
.innsum__meta { font-size:.78rem; opacity:.7; }
.innsum__live { color:var(--buy); font-weight:700; }
.innsum__counts { display:flex; gap:.5rem; flex-wrap:wrap; margin-bottom:.7rem; }
.innsum__pill { font-size:.8rem; font-weight:600; padding:.25rem .6rem; border-radius:999px;
border:1px solid currentColor; }
.innsum__pill--buy { color:var(--buy); }
.innsum__pill--sell { color:var(--sell); }
.innsum__pill--other { color:var(--other); }
.innsum__list { display:flex; flex-direction:column; gap:.5rem; }
.innsum__row { display:flex; gap:.6rem; align-items:flex-start; }
.innsum__dot { width:.6rem; height:.6rem; border-radius:50%; margin-top:.45rem; flex:0 0 auto; }
.innsum__dot--buy { background:var(--buy); }
.innsum__dot--sell { background:var(--sell); }
.innsum__dot--other { background:var(--other); }
.innsum__rdate { font-variant-numeric:tabular-nums; opacity:.65; font-size:.8rem; white-space:nowrap; }
.innsum__rtext { flex:1; }
.innsum__empty { opacity:.7; margin:0; }
.innsum__link { display:inline-block; margin-top:.8rem; font-weight:600; font-size:.9rem; }
.innsum__src { font-size:.74rem; opacity:.6; margin:.5rem 0 0; }
&lt;/style&gt;
&lt;script&gt;
(function () {
var root = document.getElementById("innsum-1791405444116067306");
if (!root) return;
var listEl = root.querySelector('[data-role="list"]');
var metaEl = root.querySelector('[data-role="meta"]');
var countsEl = root.querySelector('[data-role="counts"]');
var RAW = "https://raw.githubusercontent.com/Einar-Storvestre/Einar-Storvestre.github.io/main/static/innside-protector.json";
var LOCAL = "/innside-protector.json";
function esc(s) {
return String(s == null ? "" : s).replace(/[&amp;&lt;&gt;"']/g, function (c) {
return { "&amp;": "&amp;amp;", "&lt;": "&amp;lt;", "&gt;": "&amp;gt;", '"': "&amp;quot;", "'": "&amp;#39;" }[c];
});
}
function noDate(iso) {
if (!iso) return "";
var p = String(iso).slice(0, 10).split("-");
return p.length === 3 ? p[2] + "." + p[1] + "." + p[0] : iso;
}
function within(iso, days) {
var t = Date.parse(iso);
return isFinite(t) ? (Date.now() - t) &lt;= days * 86400000 : false;
}
function render(payload, live) {
var trades = (payload &amp;&amp; payload.trades) || [];
var b = 0, s = 0, o = 0;
trades.forEach(function (t) {
if (!within(t.date, 365)) return;
if (t.side === "buy") b++; else if (t.side === "sell") s++; else o++;
});
countsEl.innerHTML =
'&lt;span class="innsum__pill innsum__pill--buy"&gt;' + b + ' kjøp&lt;/span&gt;' +
'&lt;span class="innsum__pill innsum__pill--sell"&gt;' + s + ' salg&lt;/span&gt;' +
'&lt;span class="innsum__pill innsum__pill--other"&gt;' + o + ' annet&lt;/span&gt;' +
'&lt;span style="font-size:.8rem;opacity:.6;align-self:center;"&gt;siste 12 mnd&lt;/span&gt;';
var latest = trades.slice(0, 4);
if (!latest.length) {
listEl.innerHTML = '&lt;p class="innsum__empty"&gt;Fant ingen nylige innsidehandler.&lt;/p&gt;';
} else {
listEl.innerHTML = latest.map(function (t) {
return '&lt;div class="innsum__row"&gt;' +
'&lt;span class="innsum__dot innsum__dot--' + esc(t.side) + '"&gt;&lt;/span&gt;' +
'&lt;span class="innsum__rdate"&gt;' + noDate(t.date) + '&lt;/span&gt;' +
'&lt;span class="innsum__rtext"&gt;' + esc(t.summary) + '&lt;/span&gt;' +
'&lt;/div&gt;';
}).join("");
}
var when = payload &amp;&amp; payload.updated ? new Date(payload.updated) : null;
var stamp = when ? when.toLocaleString("nb-NO", { day: "2-digit", month: "2-digit", hour: "2-digit", minute: "2-digit" }) : "";
metaEl.innerHTML = (live ? '&lt;span class="innsum__live"&gt;● Live&lt;/span&gt; · ' : "") + "oppdatert " + esc(stamp);
}
function fetchJSON(url) {
return fetch(url, { headers: { Accept: "application/json" } }).then(function (r) {
if (!r.ok) throw new Error("http " + r.status);
return r.json();
}).then(function (d) {
if (!d || !d.trades) throw new Error("bad payload");
return d;
});
}
fetchJSON(RAW)
.then(function (d) { render(d, true); })
.catch(function () {
fetchJSON(LOCAL)
.then(function (d) { render(d, false); })
.catch(function () {
listEl.innerHTML = '&lt;p class="innsum__empty"&gt;Kunne ikke hente innsidedata akkurat nå. Se &lt;a href="https://einarstorvestre.no/innsidehandel/"&gt;innsidehandel-siden&lt;/a&gt;.&lt;/p&gt;';
});
});
})();
&lt;/script&gt;
&lt;div class="prot-dashboard-embed"&gt;
&lt;div class="prot-dashboard-embed__actions"&gt;
&lt;a href="https://einarstorvestre.no/prot-dashboard/" target="_blank" rel="noopener"&gt;Open full screen&lt;/a&gt;
&lt;/div&gt;
&lt;iframe
id="prot-dashboard-1791405444116114672"
class="prot-dashboard-embed__frame"
src="https://einarstorvestre.no/prot-dashboard/"
title="Protector Forsikring dashboard"
loading="lazy"
&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;script&gt;
(() =&gt; {
const iframe = document.getElementById('prot-dashboard-1791405444116114672');
if (!iframe) return;
const applyHeight = (nextHeight) =&gt; {
const safeHeight = Math.max(Number(nextHeight) || 0, 960);
const currentHeight = parseFloat(iframe.style.height || "0");
if (!safeHeight || Math.abs(currentHeight - safeHeight) &lt; 2) {
return;
}
iframe.style.height = `${safeHeight}px`;
};
const resizeFromDocument = () =&gt; {
try {
const doc = iframe.contentWindow?.document;
if (!doc) return;
applyHeight(
Math.max(
doc.documentElement ? doc.documentElement.scrollHeight : 0,
doc.body ? doc.body.scrollHeight : 0,
),
);
} catch (error) {
}
};
const scheduleResize = () =&gt; window.requestAnimationFrame(resizeFromDocument);
window.addEventListener("message", (event) =&gt; {
if (event.origin !== window.location.origin) return;
if (event.source !== iframe.contentWindow) return;
if (event.data?.type !== "prot-dashboard:height") return;
applyHeight(event.data.height);
});
iframe.addEventListener("load", () =&gt; {
scheduleResize();
window.setTimeout(scheduleResize, 250);
window.setTimeout(scheduleResize, 1000);
});
window.addEventListener("resize", scheduleResize);
})();
&lt;/script&gt;</description></item><item><title>Protector Forsikring Dashboard</title><link>https://einarstorvestre.no/projects/protector-dashboard/</link><pubDate>Mon, 13 Apr 2026 00:00:00 +0000</pubDate><guid>https://einarstorvestre.no/projects/protector-dashboard/</guid><description>&lt;p&gt;Interaktiv investoranalyse av Protector Forsikring (OSE: PROT), bygget som en React-dashboard og innkapslet direkte i nettsiden.&lt;/p&gt;</description></item></channel></rss>