Klesají ceny investičních nástrojů? Kupte si prodejní opci

8. 9. 2017
Doba čtení: 5 minut

Sdílet

Autor: Depositphotos
Prodejní opce jsou užitečným nástrojem, jak můžete profitovat třeba z klesajících cen akcií. Navíc jsou vaše ztráty limitované velikostí v úvodu zaplacené opční ceny.

Pokud budeme chtít být lépe informováni o trzích s finančními opcemi (druh derivátového nástroje), budeme se muset něco naučit o používání dlouhých nebo krátkých pozic na rostoucím nebo klesajícím trhu.

Dlouhá pozice na kupní opci je profitabilní strategií, pokud se hodnota podkladového aktiva třeba v podobě cen akcií zvyšuje. Pokud máme očekávání, že se naopak ceny budou snižovat, můžeme využít prodejní opce. Prodejní opce jsou v podstatě opakem opcí kupních, ale mají odlišně nastavené vlastní výplatní profily.

V tomto článku se pokusíme společně shrnout, jak toto všechno v praxi funguje a jak můžeme použít primárně prodejní opce k tomu, abychom profitovali v případě, že by se ceny akcií skutečně snižovaly.

Vložme vhodně naše finanční prostředky

Vstup do dlouhé pozice u prodejních opcí by neměl být zaměňován s technikou nazvanou anglickým pojmem „married puts“ (toto spojení nemá vhodný překlad do češtiny). „Married puts“ představují strategii, která slouží k ochraně našeho investičního portfolia před prudkým poklesem cen třeba akcií, které vlastníme, takže je toto něco jako forma pojištění proti případným ztrátám.

Pokud se však zaměřujeme na nákup prodejních opcí, pomocí nichž se snažíme spekulovat na klesajících cenách akcií, nejedná se samozřejmě o to samé. Hlavní rozdíl spočívá v tom, že v druhém případě (pouze nákup prodejní opce) nevlastníme na počátku žádnou podkladovou akcii. Jediným vlastnictvím je tak prodejní opce, kterou můžeme nebo nemusíme realizovat, což vždy závisí na vývoji cen podkladového aktiva. Otevření takové dlouhé pozice na našem investičním účtu zahrnuje „nákup k otevření“ prodejní pozice.

Makléři používají tuto možná trochu matoucí terminologii, protože když si kupujeme prodejní opci, buď si ji kupujeme k otevření, nebo k uzavření pozice. Otevření pozice samo o sobě nejspíše nepotřebuje žádné speciální vysvětlení, ale uzavření pozice prostě znamená, že si kupujeme zpátky prodejní opce, které jsme dříve prodali.

Praktické úvahy

Kromě nákupu prodejních opcí je další běžně využívanou strategií k získání profitu z klesajících cen akcií jejich prodej na krátko (shortování). Toho dosáhneme tím, že si půjčíme akcie od našeho zprostředkovatele a následně je prodáme. Pokud ceny akcií klesnou, koupíme je na trhu zpět za levnější cenu a vrátíme je zprostředkovateli, což nám umožní realizovat zisk. Nákup prodejních opcí místo prodeje akcií na krátko je výhodný ze stejných důvodů, jako je tomu v případě, že si kupujeme nákupní opce místo přímého nákupu akcií.

Vedle pákového efektu můžeme získat také možnost nákupu prodejních opcí na akcie, u kterých bychom neměli možnost jejich prodeje na krátko. Některé akcie třeba na New York Stock Exchange (NYSE) nebo NASDAQ nemohou být prodávány na krátko, protože náš zprostředkovatel nemusí mít dostatek akcií k zapůjčení pro všechny investory, kteří by s nimi chtěli shortovat. V takovém případě jsou prodejní opce velmi užitečné, protože díky nim můžeme profitovat z klesajícího trhu i u akcií, které bychom nemohli z nějakého důvodu prodat na krátko.

Dalším pozitivním faktorem je skutečnost, že v případě opcí můžeme ztratit nanejvýš zaplacenou opční cenu či prémii, pokud by nám vývoj cen podkladového aktiva nebyl nakloněn a opce bychom tak nerealizovali.

Prodejní opce jsou tak samy o sobě méně rizikové při srovnání s přímým prodejem akcií na krátko, kde bychom mohli nést mnohem větší ztráty, pokud pro nás nebyl vývoj na trhu příznivý, což by znamenalo, že bychom museli akcie nakoupit za vyšší cenu, než za jakou jsme je původně prodali, abychom je mohli vrátit.

Příklad, jak prodejní opce fungují

Vše si bude nejlepší ukázat na nějakém fiktivním příkladu. Představme si, že se akcie společnosti ABC aktuálně obchodují na trhu za 100 Kč za akcii. Jednoměsíční prodejní opce na tyto akcie, které mají realizační cenu na úrovni 95 Kč, jsou nabízeny za 3 Kč (jedná se tedy o cenu opce). Investor, který je přesvědčen o tom, že jsou akcie společnosti ABC nadhodnocené a spadnou pod 92 Kč během dalšího měsíce, si může koupit prodejní opci za výše uvedenou opční cenu 3 Kč. V takovém případě pak musí investor zaplatit 300 Kč (3 Kč * 100 akcií, což je obvyklá velikost opčního kontraktu) za prodejní opci.

Je podstatné ještě zmínit pár důležitých věcí. První je to, že dosáhne nulového zisku u prodejních opcí, když je cena podkladových akcií na úrovni 92 Kč za akcii (realizační cena 95 mínus opční cena 3 Kč). Také si za druhé povšimněme, že se maximální možná ztráta na úrovni 300 Kč objeví, pokud je cena podkladového aktiva 95 Kč a vyšší. Pokud však bude cena nižší než 92 Kč, budou zisky příslušně růst.

Uzavření pozice: nákupní versus prodejní opce

Uzavření dlouhé pozice u prodejní opce zahrnuje buď prodej prodejní opce, nebo její realizaci. Předpokládejme, že jsme v dlouhé pozici na prodejní opci u akcií společnosti ABC, jak již bylo uvedeno v příkladu výše. Pokud by byla aktuální tržní cena akcií 90 Kč, takže se prodejní opce obchodují za 5 Kč, získali bychom profit ve výši 200 Kč (500 – 300) díky prodeji prodejní opce. Pokud bychom chtěli realizovat naši prodejní opci, šli bychom na trh a koupili bychom tyto akcie za 90 Kč. Následně bychom tyto akcie díky kontraktu v podobě prodejní opce prodali za 95 Kč (realizační cena) vypisovateli opce. Stejně jako v předchozím případě je zisk také 200 Kč.

Je důležité si pamatovat rozdíly mezi výplatním profilem u prodejních a nákupních opcí. Pokud se zabýváme nákupními opcemi v dlouhé pozici, jsou naše zisky, které můžeme získat, neomezené, protože ceny akcií mohou teoreticky růst navždy neomezeně. Nicméně výplatní profil u prodejních opcí v dlouhé pozici není stejný, protože akcie může ztratit nejvýše 100 % své hodnoty a více to prostě logicky není ani dost dobře možné.

Školení pro účetní - podzimní novinky

Nepřepákujte pozice

Prodejní opce jsou velmi užitečným nástrojem, jak být schopni profitovat z klesajících cen třeba akcií. Taková pozice má své vlastní výhody před samotným prodejem akcií na krátko, ale investoři musí být opatrní s tím, aby si „nepřepákovali“ své pozice. Pokud je budeme používat správně, jsou prodejní opce vynikajícím způsobem, jak profitovat z poklesů na trzích, protože naše ztráty jsou limitované velikostí v úvodu kontraktu zaplacené opční ceny.

Volná inspirace podle originálu z Investopedie.

Autor článku

Autor se zajímá o témata spojená s kapitálovými trhy.

Upozorníme vás na články, které by vám neměly uniknout (maximálně 2x týdně).
'; document.getElementById('outstream-iframe').onload = function () { setupIframe(); } replayScreen = document.getElementById('iinfoOutstreamReplay'); iinfoOutstreamPosition = document.getElementById('iinfoOutstreamPosition'); outstreamContainer = document.getElementsByClassName('outstream-container')[0]; setupReplayScreen(); } function setupIframe() { outstreamDocument = document.getElementById('outstream-iframe').contentWindow.document; let el = outstreamDocument.createElement('style'); outstreamDocument.head.appendChild(el); el.innerText = "#adContainer>div:nth-of-type(1),#adContainer>div:nth-of-type(1) > iframe { width: 99% !important;height: 99% !important;max-width: 100%;}#videoContent,body{ width:100vw;height:100vh}body{ font-family:'Helvetica Neue',Arial,sans-serif}#videoContent{ overflow:hidden;background:#000}#adMuteBtn{ width:35px;height:35px;border:0;background:0 0;display:none;position:absolute;fill:rgba(230,230,230,1);bottom:-5px;right:25px}"; videoContent = outstreamDocument.getElementById('contentElement'); videoContent.style.display = 'none'; videoContent.volume = 1; videoContent.muted = false; if ( location.href.indexOf('rejstriky.finance.cz') !== -1 || location.href.indexOf('finance-rejstrik') !== -1 || location.href.indexOf('firmy.euro.cz') !== -1 || location.href.indexOf('euro-rejstrik') !== -1 || location.href.indexOf('/rejstrik/') !== -1 || location.href.indexOf('/rejstrik-firem/') !== -1) { outstreamDirectPlayed = true; soundAllowed = true; iinfoVastUrlIndex = 0; } if (!outstreamDirectPlayed) { console.log('OUTSTREAM direct'); setUpIMA(true); } else { if (soundAllowed) { const playPromise = videoContent.play(); if (playPromise !== undefined) { playPromise.then(function () { console.log('OUTSTREAM sound allowed'); setUpIMA(false); }).catch(function () { console.log('OUTSTREAM sound forbidden'); renderBanner(); }); } } else { renderBanner(); } } } function getWrapper() { let articleWrapper = document.querySelector('.rs-outstream-placeholder'); // Outstream Placeholder from RedSys manipulation if (articleWrapper && articleWrapper.style.display !== 'block') { articleWrapper.innerHTML = ""; articleWrapper.style.display = 'block'; } // Don't render OutStream on homepages if (articleWrapper === null) { if (document.querySelector('body.p-index')) { return null; } } if (articleWrapper === null) { articleWrapper = document.getElementById('iinfo-outstream'); } if (articleWrapper === null) { articleWrapper = document.querySelector('.layout-main__content .detail__article p:nth-of-type(6)'); } if (articleWrapper === null) { // Euro, Autobible, Zdravi articleWrapper = document.querySelector('.o-article .o-article__text p:nth-of-type(6)'); } if (articleWrapper === null) { articleWrapper = document.getElementById('sidebar'); } if (!articleWrapper) { console.error("Outstream wrapper of article was not found."); } return articleWrapper; } function setupDimensions() { outstreamWidth = Math.min(iinfoOutstreamPosition.offsetWidth, 480); outstreamHeight = Math.min(iinfoOutstreamPosition.offsetHeight, 320); } /** * Sets up IMA ad display container, ads loader, and makes an ad request. */ function setUpIMA(direct) { google.ima.settings.setDisableCustomPlaybackForIOS10Plus(true); google.ima.settings.setLocale('cs'); google.ima.settings.setNumRedirects(10); // Create the ad display container. createAdDisplayContainer(); // Create ads loader. adsLoader = new google.ima.AdsLoader(adDisplayContainer); // Listen and respond to ads loaded and error events. adsLoader.addEventListener( google.ima.AdsManagerLoadedEvent.Type.ADS_MANAGER_LOADED, onAdsManagerLoaded, false); adsLoader.addEventListener( google.ima.AdErrorEvent.Type.AD_ERROR, onAdError, false); // An event listener to tell the SDK that our content video // is completed so the SDK can play any post-roll ads. const contentEndedListener = function () { adsLoader.contentComplete(); }; videoContent.onended = contentEndedListener; // Request video ads. const adsRequest = new google.ima.AdsRequest(); if (direct) { adsRequest.adTagUrl = directVast; console.log('Outstream DIRECT CAMPAING advert: ' + directVast); videoContent.muted = true; videoContent.volume = 0; outstreamDirectPlayed = true; } else { adsRequest.adTagUrl = iinfoVastUrls[iinfoVastUrlIndex]; console.log('Outstream advert: ' + iinfoVastUrls[iinfoVastUrlIndex]); videoContent.muted = false; videoContent.volume = 1; } // Specify the linear and nonlinear slot sizes. This helps the SDK to // select the correct creative if multiple are returned. // adsRequest.linearAdSlotWidth = outstreamWidth; // adsRequest.linearAdSlotHeight = outstreamHeight; adsRequest.nonLinearAdSlotWidth = 0; adsRequest.nonLinearAdSlotHeight = 0; adsLoader.requestAds(adsRequest); } function setupReplayScreen() { replayScreen.addEventListener('click', function () { iinfoOutstreamPosition.remove(); iinfoVastUrlIndex = 0; outstreamInit(); }); } /** * Sets the 'adContainer' div as the IMA ad display container. */ function createAdDisplayContainer() { // We assume the adContainer is the DOM id of the element that will house // the ads. outstreamDocument.getElementById('videoContent').style.display = 'none'; adDisplayContainer = new google.ima.AdDisplayContainer( outstreamDocument.getElementById('adContainer'), videoContent); } function unmuteAdvert() { adVolume = !adVolume; if (adVolume) { adsManager.setVolume(0.3); outstreamDocument.getElementById('adMuteBtn').innerHTML = ''; } else { adsManager.setVolume(0); outstreamDocument.getElementById('adMuteBtn').innerHTML = ''; } } /** * Loads the video content and initializes IMA ad playback. */ function playAds() { // Initialize the container. Must be done through a user action on mobile // devices. videoContent.load(); adDisplayContainer.initialize(); // setupDimensions(); try { // Initialize the ads manager. Ad rules playlist will start at this time. adsManager.init(1920, 1080, google.ima.ViewMode.NORMAL); // Call play to start showing the ad. Single video and overlay ads will // start at this time; the call will be ignored for ad rules. adsManager.start(); // window.addEventListener('resize', function (event) { // if (adsManager) { // setupDimensions(); // adsManager.resize(outstreamWidth, outstreamHeight, google.ima.ViewMode.NORMAL); // } // }); } catch (adError) { // An error may be thrown if there was a problem with the VAST response. // videoContent.play(); } } /** * Handles the ad manager loading and sets ad event listeners. * @param { !google.ima.AdsManagerLoadedEvent } adsManagerLoadedEvent */ function onAdsManagerLoaded(adsManagerLoadedEvent) { // Get the ads manager. const adsRenderingSettings = new google.ima.AdsRenderingSettings(); adsRenderingSettings.restoreCustomPlaybackStateOnAdBreakComplete = true; adsRenderingSettings.loadVideoTimeout = 12000; // videoContent should be set to the content video element. adsManager = adsManagerLoadedEvent.getAdsManager(videoContent, adsRenderingSettings); // Add listeners to the required events. adsManager.addEventListener(google.ima.AdErrorEvent.Type.AD_ERROR, onAdError); adsManager.addEventListener( google.ima.AdEvent.Type.CONTENT_PAUSE_REQUESTED, onContentPauseRequested); adsManager.addEventListener( google.ima.AdEvent.Type.CONTENT_RESUME_REQUESTED, onContentResumeRequested); adsManager.addEventListener( google.ima.AdEvent.Type.ALL_ADS_COMPLETED, onAdEvent); // Listen to any additional events, if necessary. adsManager.addEventListener(google.ima.AdEvent.Type.LOADED, onAdEvent); adsManager.addEventListener(google.ima.AdEvent.Type.STARTED, onAdEvent); adsManager.addEventListener(google.ima.AdEvent.Type.COMPLETE, onAdEvent); playAds(); } /** * Handles actions taken in response to ad events. * @param { !google.ima.AdEvent } adEvent */ function onAdEvent(adEvent) { // Retrieve the ad from the event. Some events (for example, // ALL_ADS_COMPLETED) don't have ad object associated. const ad = adEvent.getAd(); console.log('Outstream event: ' + adEvent.type); switch (adEvent.type) { case google.ima.AdEvent.Type.LOADED: // This is the first event sent for an ad - it is possible to // determine whether the ad is a video ad or an overlay. if (!ad.isLinear()) { // Position AdDisplayContainer correctly for overlay. // Use ad.width and ad.height. videoContent.play(); } outstreamDocument.getElementById('adContainer').style.width = '100%'; outstreamDocument.getElementById('adContainer').style.maxWidth = '640px'; outstreamDocument.getElementById('adContainer').style.height = '360px'; break; case google.ima.AdEvent.Type.STARTED: window.addEventListener('scroll', onActiveView); // This event indicates the ad has started - the video player // can adjust the UI, for example display a pause button and // remaining time. if (ad.isLinear()) { // For a linear ad, a timer can be started to poll for // the remaining time. intervalTimer = setInterval( function () { // Example: const remainingTime = adsManager.getRemainingTime(); // adsManager.pause(); }, 300); // every 300ms } outstreamDocument.getElementById('adMuteBtn').style.display = 'block'; break; case google.ima.AdEvent.Type.ALL_ADS_COMPLETED: if (ad.isLinear()) { clearInterval(intervalTimer); } if (outstreamLastError === 303) { if (isBanner) { renderBanner(); } else { replayScreen.style.display = 'flex'; } } break; case google.ima.AdEvent.Type.COMPLETE: // This event indicates the ad has finished - the video player // can perform appropriate UI actions, such as removing the timer for // remaining time detection. if (ad.isLinear()) { clearInterval(intervalTimer); } if (isBanner) { renderBanner(); } else { replayScreen.style.display = 'flex'; } break; } } /** * Handles ad errors. * @param { !google.ima.AdErrorEvent } adErrorEvent */ function onAdError(adErrorEvent) { // Handle the error logging. console.log(adErrorEvent.getError()); outstreamLastError = adErrorEvent.getError().getErrorCode(); if (!loadNext()) { renderBanner(); } } function renderBanner() { if (isBanner) { console.log('Outstream: Render Banner'); iinfoOutstreamPosition.innerHTML = ""; iinfoOutstreamPosition.style.height = "330px"; iinfoOutstreamPosition.appendChild(bannerDiv); } else { console.log('Outstream: Banner is not set'); } } function loadNext() { iinfoVastUrlIndex++; if (iinfoVastUrlIndex < iinfoVastUrls.length) { iinfoOutstreamPosition.remove(); outstreamInit(); } else { return false; } adVolume = 1; return true; } /** * Pauses video content and sets up ad UI. */ function onContentPauseRequested() { videoContent.pause(); // This function is where you should setup UI for showing ads (for example, // display ad timer countdown, disable seeking and more.) // setupUIForAds(); } /** * Resumes video content and removes ad UI. */ function onContentResumeRequested() { videoContent.play(); // This function is where you should ensure that your UI is ready // to play content. It is the responsibility of the Publisher to // implement this function when necessary. // setupUIForContent(); } function onActiveView() { if (outstreamContainer) { const containerOffset = outstreamContainer.getBoundingClientRect(); const windowHeight = window.innerHeight; if (containerOffset.top < windowHeight/1 && containerOffset.bottom > 0.0) { if (outstreamPaused) { adsManager.resume(); outstreamPaused = false; } return true; } else { if (!outstreamPaused) { adsManager.pause(); outstreamPaused = true; } } } return false; } let outstreamInitInterval; if (typeof cpexPackage !== "undefined") { outstreamInitInterval = setInterval(tryToInitializeOutstream, 100); } else { const wrapper = getWrapper(); if (wrapper) { let outstreamInitialized = false; window.addEventListener('scroll', () => { if (!outstreamInitialized) { const containerOffset = wrapper.getBoundingClientRect(); const windowHeight = window.innerHeight; if (containerOffset.top < windowHeight / 1 && containerOffset.bottom > 0.0) { outstreamInit(); outstreamInitialized = true; } } }); } } function tryToInitializeOutstream() { const wrapper = getWrapper(); if (wrapper) { const containerOffset = wrapper.getBoundingClientRect(); const windowHeight = window.innerHeight; if (containerOffset.top < windowHeight / 1 && containerOffset.bottom > 0.0) { if (cpexPackage.adserver.displayed) { clearInterval(outstreamInitInterval); outstreamInit(); } } } else { clearInterval(outstreamInitInterval); } } }
OSZAR »