Серьёзный Бизенес, 787

Day 787, 07:31 Published in Russia Russia by TimLar
(рейтинг доходности предприятий в конце статьи)

еВалютный еРынок

Необходимая оговорка: в eRepublik «игра на валютном рынке» запрещена, потому содержимое статьи носит характер исключительно исследовательских изысканий.

На тему спекуляций на валютном рынке в eRepublik было уже великое множество статей. Совершенно одинаковых. Все они сводились к тому, чтобы покупать валюту (обычно золото) по одному курсу, а продавать по другому, более выгодному. В таком случае возникает некоторый риск, что по этому самому более выгодному курсу валюту никто попросту не купит. А если даже и не возникает, то всё равно сидеть и ждать у моря погоды малоинтересно.
Самым простым и безопасным вариантом спекуляции является, очевидно, двойная покупка по выгодным курсам. То есть, если на рынке продаются рубли по 0.035 золота, а золото по 28 рублей, то на 1 золотую монетку можно купить 28.57 рублей, после чего выкупить 1.02 золота, получив 0.02 золота чистой прибыли. Проблема ясна: на рынке такая ситуация может возникнуть лишь в исключительно редких случаях больших колебаний, и то лишь на рынках каких-нибудь мелких стран. Ведь если существует один из двух указанных лотов, то другой лот не возникнет, его владельцу будет выгоднее попросту выкупить первый лот, чем выставлять на продажу свой.

Но здесь можно вспомнить об одной особенности валютных операций в eRepublik: возможна купля-продажа любой валюты за любую другую. Согласно предыдущим рассуждениям, для любой пары валют (C1,C2) и курсов R12: C1 → C2, R21: C2 → C1 верно соотношение R12 * R21 > 1, то есть при двойной покупке по циклу C1 → C2 → C1, стоимость единицы валюты C1 выйдет более, чем 1.0 C1 (покупка выйдет убыточной).


Однако возникает естественный вопрос: возможна ли вообще, теоретически, такая ситуация, в которой есть возможность купить за золото сначала, скажем, доллары, затем на доллары купить рубли, а на рубли снова купить золото, и оказаться при этом в плюсе? То есть, имея n валют C1,...,Cn с матрицей курсов {Rij} , в которой Rij * Rji > 1, могут ли найтись такие три валюты i , j , k , что Rij * Rjk * Rki < 1? Или, более обще, существует ли такая цепочка валют Ci1,...,Cik , что Ri1i2 * Ri2i3 * ... * Riki1 < 1? Если существует, то через последовательность покупок Ci1 → Ci2 → ... → Cik → Ci1, можно было бы «покупать» валюту Ci1 за саму себя по курсу менее единицы! То есть, например, «покупать» 1 рубль за 90 копеек.


Ответ на этот вопрос положительный, достаточно лишь привести пример. Пусть на валютном рынке имеются следующие лоты:
1 GOLD = 29 RUB
1 RUB = 0.035 GOLD
1 GOLD = 34 USD
1 USD = 0.03 GOLD
1 RUB = 1.3 USD
1 USD = 0.8 RUB
Как несложно убедиться, все возможные двойные покупки убыточны (29 * 0.035 = 1.015 > 1; 34 * 0.03 = 1.02 > 1; 1.3 * 0.8 = 1.04 > 1).
Но зато есть возможность проделать следующие операции:
1. На 1.0 GOLD купить 1.0 / 0.035 = 28.57 RUB
2. На 28.57 RUB купить 28.57 / 0.8 = 35.71 USD
3. На 35.71 USD купить 35.71 / 34.0 = 1.05 GOLD
4. ???
5. Выгода!

Итак, теоретическая возможность доказана без затруднений. Осталась самая малость: проверить, возникают ли такие ситуации на самом деле в eRepublik?
Для решения этой задачи понадобится помощь компьютера, ведь теоретически подобные цепочки могут быть очень длинными, а валют имеется несколько десятков. В качестве иллюстраций будут приводиться тексты программ на Python, как одном из самых популярных и близких к псевдокоду языков.

Прежде всего, при решении поставленной задачи, нужно разобраться с вводом данных, для которого целесообразно использовать eAPI. Понадобятся функции: получения данных из eAPI и получения списка всех игровых валют с полной матрицей курсов . Заодно в матрицу целесообразно записывать объёмы лотов, чтобы была возможность вычислить, какое количество валюты можно приобрести по какой-либо выгодной цепочке.

Далее, после ввода матрицы курсов, самым простым решением будет применение очень маленького алгоритма Флойда-Уоршалла с некоторыми модификациями. Иначе говоря, можно построить «матрицу наилучших курсов» {R'ij}, в которой для каждой пары валют (Ci,Cj) будет указан наивыгоднейший из всех возможных (с учётом промежуточных валют) курс R'ij: Ci → Cj. При этом целесообразно (интереса ради) чуть-чуть расширить алгоритм, добавив в него сохранение соответствующих наивыгоднейших цепочек покупок для их дальнейшего вывода и анализа. Также необходимо внести пару модификаций, связанных с избежанием зацикливания и учётом ограниченности объёмов валютных лотов.
После этого нужно посмотреть для каждой валюты Ci наилучший курс её покупки саму за себя R'ii: Ci → Ci. Там, где этот курс окажется менее единицы, как раз и будут находиться цепочки, позволяющие серией одних только операций покупки получить некоторую прибыль.
Соответственно, понадобится функция построения матрицы наивыгоднейших валютных курсов.

После этого нужно собрать всё воедино и запускать функцию go().

Результаты экспериментов выходят положительные, то есть периодически (не всегда, конечно), на валютном рынке eRepublik действительно возникают ситуации, в которых теоретически можно делать деньги «из воздуха» (на самом деле просто наживаясь на неаккуратных спекулянтах).
Пример ситуации, наблюдаемой незадолго до выхода статьи:
1. За 0.4837 золота можно было купить 17.2743 PLN;
2. За 17.2743 PLN можно было купить 16.7875 ESP;
3. За 16.7875 ESP можно было купить 0.5000 золота.



День 787 eRepublik
Рейтинг доходности предприятий

Ввиду некоторых проблем технического характера, учёт войн и эмбарго до сих пор не добавлен, а разбиение «тарифов» на непересекающиеся группы не произведено. Вероятнее всего, оба изменения будут внесены в следующую пятницу.

Тариф «Нищеброд»
(стоимость предприятия не более 20 золота)
Наибольший ежедневный доход и наименьшее время окупаемости: Q1-house in Brazil, 3.3421 gold/day, 5.9842 days
Посмотреть таблицу TOP20

Тариф «Хомяк»
(стоимость предприятия не более 90 золота)
Наибольший ежедневный доход и наименьшее время окупаемости: Q1-house in Brazil, 3.3421 gold/day, 5.9842 days
Посмотреть таблицу TOP20

Тариф «Братовод»
(стоимость предприятия не более 210 золота)
Наибольший ежедневный доход: Q4-food in Brazil, 5.2963 gold/day, 35.8744 days
Наименьшее время окупаемости: Q1-house in Brazil, 3.3421 gold/day, 5.9842 days
Посмотреть таблицу TOP20

Тариф «Казнокрад»
(стоимость предприятия любая)
Наибольший ежедневный доход: Q5-food in Brazil, 10.5045 gold/day, 37.1269 days
Наименьшее время окупаемости: Q1-house in Brazil, 3.3421 gold/day, 5.9842 days
Посмотреть таблицу TOP20

Тариф «Патриот»
(только еРоссия, стоимость предприятия любая)
Наибольший ежедневный доход и наименьшее время окупаемости: Q3-house in Russia, 2.9763 gold/day, 30.2392 days
Посмотреть таблицу TOP20

_________________________________
Расчёт доходности предприятия:
1. Для каждой страны, отрасли, уровня компании и скилла рабочих берётся максимальная зарплата с рынка труда.
2. Для каждой указанной вариации рассматривается две возможности: продавать продукт в собственной стране или экспортировать его. На основании этого вычисляется чистая цена продажи (Base price): в первом случае это минимальная рыночная цена в заданной стране за вычетом VAT, во втором случае это максимальная (по всем странам, кроме данной) чистая цена продажи (минимальная рыночная за вычетом VAT и Import Tax). Во втором случае стоимость компании (Company cost) увеличивается на 20 золота (оплата за лицензию).
3. Для отраслей, перерабатывающих сырьё, берётся минимальная мировая цена за соответствующий вид сырья в пересчёте на Q1-эквивалент.
4. Для отраслей, добывающих сырьё, региональный коэффициент берётся как максимально возможный для заданных страны и вида сырья (по всем текущим регионам страны).
5. Вычисляется продуктивность гипотетического работника данного скилла на данном предприятии данного уровня в предположении, что количество работников компании оптимально, работник работает с велнесом 95 и имеет скилл X.5 (т.е. средний из указанного зарплатного отрезка).
6. Для отраслей, перерабатывающих сырьё, вычисляется стоимость сырья, переработанного одним таким работником за один день (Raw cost).
7. Вычисляется стоимость рассчитанной продуктивности как (нецелое) количество произведённого продукта, умноженное на чистую цену продажи.
8. Вычисляется дневная прибыль компании как разница стоимости продуктивности и затрат на рабочего (зарплата плюс стоимость сырья), умноженная на оптимальное количество работников в данной отрасли.
9. Вычисляется время окупаемости как отношение стоимости компании к дневной прибыли.
10. Рассматриваются только рынки стран с населением 3000 и выше (в том числе при определении самого дешёвого сырья), причём содержащие не менее 5 лотов, выставленных на продажу (соответственно, всякие госпитали, дефенсы, ку3-билеты и т.п. отбрасываются).
11. Рассматриваются только рабочие скиллы 3, 4, 5 и 6. В итоговые таблицы попадает только наилучший по заданному критерию скилл.