Валютный риск может стать одной из самых больших проблем для крупных компаний.

С точки зрения инвестора, важно понимать последствия изменения обменных курсов для финансовых показателей компании. В этом посте сначала мы поймем, как обменные курсы влияют на прибыль компании. Затем мы проанализируем и построим график нескольких курсов обмена валют с помощью Python.

Как обменные курсы влияют на компании

Обменные курсы являются важным фактором, который следует учитывать при анализе компании. Компания может использовать доллары США в качестве функциональной валюты (т.е.валюту, в которой компания готовит финансовые результаты), но вести операции (например, продажи, ссуды, поставщики и т. Д.) В другой валюте.

Представляя финансовые результаты, компании должны различать денежные и неденежные активы / обязательства:

  • Денежные активы / обязательства - это активы, которые легко конвертировать в наличные. Эти активы переводятся из других валют в функциональную валюту компании на отчетную дату. Любые прибыли или убытки от переоценки повлияют на прибыль компании. Например, дебиторская и кредиторская задолженность, остатки денежных средств и ссуды считаются денежными активами / обязательствами.
  • Неденежные активы / обязательства - это активы, которые не переводятся повторно на отчетную дату. Они показаны в финансовой отчетности с использованием исторической ставки (т. Е. Ставки, использованной при приобретении актива). Например, инвентарь, основные средства и нематериальные активы считаются неденежными активами.

Влияние обменного курса на кредиторскую задолженность

Кредиторская задолженность - это суммы, которыми компании владеют перед своими кредиторами или поставщиками. Чтобы понять влияние обменных курсов на кредиторскую задолженность компании, давайте возьмем компанию ABCD в качестве примера.

Представьте себе компанию ABCD, которая сообщает свои цифры в долларах США:

  • Покупка материалов на 10 000 евро у европейского поставщика.
  • Курс обмена на дату транзакции составляет EURUSD = 1.10. Это означает, что для покупки 1 евро необходимо 1,10 доллара.
  • Покупка подлежит оплате только через 4 месяца.

На момент покупки компания ABCD показывает в балансе кредиторскую задолженность в размере 11 000 долларов США (10 000 евро * 1,10).

Предположим, что через три месяца, когда компания ABCD готовит финансовую отчетность, обменный курс EURUSD упал с 1,10 до 0,90. Это означает, что нам нужно всего 0,90 доллара, чтобы купить 1 евро. Из-за изменения обменного курса это отразится на чистой прибыли компании ABCD. Теперь для возврата первоначальных 10 000 евро требуется всего 9000 долларов (10000 евро * 0,90).

Таким образом, компания ABCD сократит кредиторскую задолженность в балансе на 2000 долларов и покажет увеличение прибыли на 2000 долларов за счет нереализованной прибыли.

Влияние обменного курса на ссуды

Аналогичным образом, если компания имеет ссуду в иностранной валюте, а обменный курс колеблется, это окажет влияние на прибыль и убытки компании.

Предположим, у компании ABCD есть заем в размере 10 000 евро. Когда обменный курс евро / доллар составлял 1,10, компания показывала в балансе 11 000 долларов в качестве ссуды. Однако, когда курс EURUSD переместится с 1,10 на 0,90, компания ABCD укажет в балансе ссуду всего на 9000 долларов. В то же время он сообщит о нереализованной прибыли и убытках в размере 2000 долларов.

Прибыль будет реализована после выплаты кредита банку.

Влияние на обменные курсы в продажах

Интересно, правда? Основываясь на двух предыдущих примерах, кажется, что компания, представляющая отчетность в долларах США, всегда будет получать выгоду, когда доллар США укрепляется по отношению к другим валютам.

Что ж, это не всегда так. Компании, продающие товары в страны, где валюты обесцениваются (т. Е. Обесцениваются), делают их менее конкурентоспособными. Влияние потери конкурентоспособности фирмы может привести к значительному падению объемов продаж.

Представьте себе компанию ABCD в сценарии, когда доллар США вырос по отношению к евро. Теперь европейская компания должна будет заплатить более высокую цену в евро, чтобы купить 1 продукт у ABCD. Это может привести к тому, что европейская фирма прекратит закупки у компании ABCD и найдет альтернативного поставщика в Европе.

Курсы валют с Python

Теперь мы понимаем, почему обменные курсы так важны при анализе компании. Затем давайте узнаем, как рассчитывать и строить графики обменных курсов с помощью Python.

Мы создадим скрипт Python для извлечения исторических данных форекс из нескольких валют и построим их с помощью matplotlib. Я буду использовать бесплатный финансовый API financialmodelingprep, предлагающий большое количество бесплатных финансовых данных.

По следующей ссылке можно найти все валюты, по которым доступны данные. В нашем примере мы извлечем обменные курсы для следующих четырех валют:

Сначала мы импортируем все требуемые пакеты и делаем запрос на получение к конечной точке API, возвращающей исторические курсы обмена за последние несколько лет. Обратите внимание, что мы перебираем каждую из валют. В каждом цикле мы получаем исторические цены для одной валютной пары.

import requests
import pandas as pd
import matplotlib.pyplot as plt

exchange_rates_Python = {}
currencies = ['EURUSD','CHFUSD=X','AUDUSD','GBPUSD']

for currency in currencies:
  forex = requests.get(f'https://financialmodelingprep.com/api/v3/historical-price-full/forex/{currency}')

  forex = forex.json()
  print(forex)

#outcome example of USDGBP: 
{'historical': [{'adjClose': 0.8029,
   'change': -0.00032,
   'changeOverTime': -0.0004,
   'changePercent': -0.04,
   'close': 0.8029,
   'date': '2020-04-10',
   'high': 0.80324,
   'label': 'April 10, 20',
   'low': 0.80076,
   'open': 0.80258},
  {'adjClose': 0.8069,
   'change': 9e-05,
   'changeOverTime': 0.00011,
   'changePercent': 0.011,
...

Ответ содержит словарь с историческими ценами. Обратите внимание, что ключ исторический включает список со всеми ценами закрытия за последние несколько лет. Следовательно, мы можем просмотреть его в цикле, чтобы проанализировать дату и adj. закрыть для каждой из валютных пар. Мы сохраняем значения в пустом словаре под названием exchange_rates_Python:

import requests
import pandas as pd
import matplotlib.pyplot as plt

exchange_rates_Python = {}
currencies = ['EURUSD','CHFUSD=X','AUDUSD','USDGBP']

for currency in currencies:
  forex = requests.get(f'https://financialmodelingprep.com/api/v3/historical-price-full/forex/{currency}')

  forex = forex.json()
  exchange_rates_Python[currency] = {}

  for item in forex['historical']:
    adj_close = item['adjClose']
    trade_date = item['date']
    exchange_rates_Python[currency][trade_date] = adj_close

Наконец, мы конвертируем словарь в Pandas DataFrame, чтобы было легко построить график данных с помощью matplotlib. Кроме того, мы конвертируем индекс (т.е. даты) в объект datetime:

import requests
import pandas as pd
import matplotlib.pyplot as plt

exchange_rates_Python = {}
currencies = ['EURUSD','CHFUSD=X','AUDUSD','GBPUSD']

for currency in currencies:
  forex = requests.get(f'https://financialmodelingprep.com/api/v3/historical-price-full/forex/{currency}')

  forex = forex.json()
  exchange_rates_Python[currency] = {}

  for item in forex['historical']:
    adj_close = item['adjClose']
    trade_date = item['date']
    exchange_rates_Python[currency][trade_date] = adj_close

currencies_df = pd.DataFrame.from_dict(exchange_rates_Python, orient='index')
currencies_df=currencies_df.T
currencies_df.index = pd.to_datetime(currencies_df.index)

График обменных курсов с помощью Python

Теперь, когда у нас есть обменные курсы в красивом фрейме данных Pandas, мы готовы их построить. Мы будем использовать библиотеку matplotlib для создания подзаголовка для каждой валюты.

Мы построим график обменного курса только за последние 90 дней:

#List of symbols https://financialmodelingprep.com/api/v3/quotes/forex

import requests
import pandas as pd
import matplotlib.pyplot as plt

exchange_rates_Python = {}
currencies = ['EURUSD','CHFUSD=X','AUDUSD','GBPUSD']

for currency in currencies:
  forex = requests.get(f'https://financialmodelingprep.com/api/v3/historical-price-full/forex/{currency}')

  forex = forex.json()
  exchange_rates_Python[currency] = {}

  for item in forex['historical']:
    adj_close = item['adjClose']
    trade_date = item['date']
    exchange_rates_Python[currency][trade_date] = adj_close


currencies_df = pd.DataFrame.from_dict(exchange_rates_Python, orient='index')
currencies_df=currencies_df.T
currencies_df.index = pd.to_datetime(currencies_df.index)


#take last 30 days
currencies_df = currencies_df.iloc[:90,:]

fig, axes = plt.subplots(nrows=2, ncols=2)

currencies_df[currencies[0]].plot(ax=axes[0,0])
axes[0,0].set_title(currencies[0])

currencies_df[currencies[1]].plot(ax=axes[0,1])
axes[0,1].set_title(currencies[1])

currencies_df[currencies[2]].plot(ax=axes[1,0])
axes[1,0].set_title(currencies[2])

currencies_df[currencies[3]].plot(ax=axes[1,1])
axes[1,1].set_title(currencies[3])

plt.tight_layout()
plt.show()

Заключение

Всего с помощью нескольких строк кода мы можем получить и построить график обменных курсов с помощью Python.

Мы видим, что за последние три месяца доллар намного сильнее, чем, например, фунт стерлингов. В декабре 2019 года нам нужно было около 1,33 доллара, чтобы купить 1 фунт стерлингов, однако в апреле 2020 года нам нужно было всего 1,22 доллара, чтобы купить 1 фунт стерлингов.

Это означает, что компании, имеющие большие суммы открытой кредиторской задолженности или ссуды в фунтах стерлингов, находятся в гораздо лучшем положении для выплаты этих сумм, чем 4 месяца назад. Однако на продажи может повлиять, если британские компании решат не покупать товары в долларах США из-за повышения курса валюты.

Как мы видели во время публикации, очень важно понимать валютные риски фирмы, прежде чем принимать инвестиционные решения. Я рекомендую вам проанализировать продажи компании, ссуды и кредиторскую задолженность с точки зрения валютного риска.

Если вам понравилась статья, вы можете ознакомиться с другими моими постами на тему Python для финансов.

Первоначально опубликовано на https://codingandfun.com 30 апреля 2020 г.