Menu Zavřít

Vysoká inflace, rekordní úrokové sazby i nedostatek pracovníků. Ruská ekonomika míří do recese, na kolaps to dle odborníků ale nevypadá

Včera
Doba čtení: 3 minuty
Ruská vlajka před Kremlem
Autor: Shutterstock
  • Více než tři roky od začátku ruské invaze na Ukrajinu je na tom ekonomika geograficky největší země světa o poznání lépe, než mnozí experti původně očekávali
  • Ruské domácnosti a podniky sice stále více trápí vysoká inflace, rekordní úrokové sazby a nedostatek pracovníků, schopnost Kremlu financovat nákladnou válku to ale příliš neomezuje
  • Podle ekonomů lze přepokládat, že do konce příštího roku dojde v zemi k několika bankrotům či dokonce k recesi, úplný kolaps hospodářství je však spíše nepravděpodobný

V únoru 2022 Rusko zaútočilo na Ukrajinu, a od té doby stalo jednou z nejvíce sankcionovaných zemí na světě. Evropská unie, Spojené státy americké, Kanada i další země uvalily na Moskvu řadu rozsáhlých restrikcí, které měly omezit schopnost Kremlu financovat svoji armádu. Jak se ale ukázalo, ruská ekonomika je vůči těmto krokům značně odolnější, než se původně čekalo.

Důvodů, proč Rusko stále nezkolabovalo, je vícero. Hlavní zásluhu na růstu tamního hospodářství mají především právě obrovské výdaje na zbrojení, které tvoří značnou část rozpočtu země. Kromě toho se Moskvě povedlo obejít mnohé západní sankce, takže její ropa i nadále ve velkém proudí zejména do Číny a Indie, což pomáhá naplňovat státní pokladnu. Jinými slovy, vybrané ekonomické údaje podle BBC vypadají aktuálně lépe, než se zprvu předpokládalo. Nebo se alespoň tak jeví.

Chybí 2,6 milionu pracovníků

Ruské hospodářství v roce 2024 údajně vzrostlo o 4,3 procenta. A ačkoliv toto číslo někteří ekonomové rozporují, stále se jedná o výrazně lepší výsledek než u většiny zemí Evropské unie. Po loňském poklesu se navíc opět zotavil rubl, jenž si od začátku roku polepšil o téměř 40 procent. Na druhou stranu ale existuje i mnoho dalších ukazatelů, které už zdaleka tak optimistické nejsou.

Outstream Placeholder

Asi tím největším současným problémem ruské ekonomiky je vysoká inflace. Její meziroční výše letos v dubnu činila 9,9 procenta, za čímž podle odborníků stojí hlavně západní sankce, které zvyšují ceny dovozu. Dalším důležitým důvodem je pak nedostatek pracovních sil, jenž vytváří tlak na růst mezd. Centrální banka se snaží rostoucí ceny zkrotit zvýšením úrokových sazeb na rekordní úroveň, to ale samozřejmě firmám prodražuje získávání kapitálu potřebného k investicím.

Míra nezaměstnanosti v Rusku je v současné době na nebývale nízké úrovni 2,3 procenta, v důsledku čehož se řadě podniků nedaří obsazovat volné pozice. Podle ruské Vysoké školy ekonomické v zemi na konci roku 2024 chybělo přibližně 2,6 milionu pracovníků. Toto číslo zahrnuje především muže, kteří šli do války, nebo ty, kteří uprchli do zahraničí, aby se vyhnuli mobilizaci.

Rusko přichází o mladé a vzdělané pracovníky. Jejich odliv zbrzdí ekonomiku a zhorší životní podmínky, varují odborníci
Přečtěte si také:

Rusko přichází o mladé a vzdělané pracovníky. Jejich odliv zbrzdí ekonomiku a zhorší životní podmínky, varují odborníci

Kromě toho navíc Kreml v posledních měsících trápí také pokles příjmů z prodeje nerostných surovin. I podle oficiálních údajů se totiž zisky z ropy a plynu kvůli sankcím a slabším cenám na trhu v květnu meziročně snížily o 35 procent. To samozřejmě přispělo k navýšení rozpočtového schodku země a zároveň vedlo k omezení výdajů na infrastrukturu a veřejné služby.

„Rusko utrácí obrovské množství peněz na armádu, přičemž tento objem nelze jen tak snížit. Znamená to tedy, že peníze se začínají přesouvat z životně důležitých investičních projektů v oblasti silniční, železniční a energetické dopravy. To samozřejmě představuje velký problém,“ řekl András Tóth-Czifra, politický analytik a odborník na Rusko.

Menší krachy Rusko zvládne

Všechny výše zmíněné komplikace zatím Ruská federace nějak přečkává, podle odborníků to ale určitě nevydrží donekonečna. To ostatně minulý čtvrtek připustil i tamní ministr hospodářství, který varoval, že země je po období přehřátí „na pokraji“ recese. Tento názor navíc sdílí řada dalších expertů, podle nichž by větší problémy mohly přijít už v příštím roce.

„Podle mého názoru se Rusko do konce roku 2026 dostane do poměrně nepříjemné situace, kdy rozhodně dojde nějakým k bankrotům. Na druhou stranu se ale domnívám, že hospodářský pokles bude mírný, takže ke kolapsu téměř určitě nedojde. Ruská ekonomika ostatně v minulosti přežila řadu hlubších recesí,“ uvedl ekonom Jevgenij Nadoršin.

WT100_25

S jeho názorem víceméně souhlasí i Tóth-Czifra: „Současné problémy pravděpodobně vážně neomezí schopnost Ruska vést válku v krátkodobém horizontu. Mohlo by to však ovlivnit schopnost ekonomiky růst nebo diverzifikovat se v nadcházejících letech.“

Co bude po případné normalizaci vztahů s Ruskem? Země nabízí dobré investiční příležitosti, pro západní firmy je ale návrat velmi rizikový
Přečtěte si také:

Co bude po případné normalizaci vztahů s Ruskem? Země nabízí dobré investiční příležitosti, pro západní firmy je ale návrat velmi rizikový

Odhadnout dlouhodobé dopady současné situace na ruskou ekonomiku je poměrně složité. Záležet bude především na tom, jak dlouho bude ještě válka na Ukrajině trvat a zda budou následně členské země Evropské unie a Spojené státy ochotné s Ruskem normalizovat své vztahy. Minimálně současné omezení výdajů na infrastrukturní projekty bude ale něco, co musí Kreml v příštích letech vyřešit, přičemž bez dalších zdrojů příjmů to pravděpodobně bude velmi složité.

  • Našli jste v článku chybu?
'; 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 »