понедельник, 26 января 2009 г.

Работа с GnuCash. Часть 3. Ценные бумаги, драгоценности и слитки.

UPD: Внимание! Последняя самая актуальная и полная версия руководства по GnuCash на русском языке в различных форматах доступна по адресу http://kilork.org/gnucash.html.

Снова возвращаемся к нашей славной программе. До этого мы получили очень неплохие результаты, завели счета, в разных валютах, сделали переводы. Что же теперь? Для меня интереснее всего знать текущее распределение активов. Но валюта - это во первых очень медленный инструмент, а во вторых, для не спекулянта - не особо доходный, а может даже убыточный. Хочется чего то другого. Может быть купить акций, войти в паевые фонды, купить драгоценные металлы, или мешок угля. Кстати, срок хранения сахара - не имеет ограничений, можно и его купить, и тем самым сберечь деньги гораздо лучше, чем в депозите. У меня не хватает времени ни на внутридневную торговлю, ни даже на дневную. Иногда времени нет даже на недельном интервале. В таких условиях инвестиции долгосрочные, и дергаться смысла нет. Но следить за общей массой активов все равно хочется. Пришло время gnucash.

Одним из простых способов инвестирования является открытие металлических счетов. Все просто и понятно, купили золото сегодня, продали золото завтра, цена на золото приятным образом связана с огромным количеством факторов, которые рассматривать здесь совершенно бесполезно. Если цена продажи оказалась выше цены покупки - имеем доход. В противном случае - убыток. Цена задается в рублях, так что имеет смысл еще и учитывать цену в долларах, и движение курса рубля к доллару. Итак, мы пошли в Сбербанк, и открыли ОМС счет в золоте, закинули на него нажитые непосильным трудом денежки, в итоге получили 60 грамм на счету. Как теперь все это занести в gnucash? Такой валюты у нас нет, да и к чему привязываться тоже непонятно. Оказывается, никаких проблем нет, нам надо завести еще один счет, и на этот раз номинировать его не в валюте, а в граммах, и на эти граммы установить стоимость.

Начальная конфигурации состоит из 100000 р наличных, мы создаем счет в долларах, переводим туда 32500 рублей по курсу 32.50. Итого 1000 долларов и 67500 рублей. Теперь попробуем добавить сюда золото.

Выбирем Активы->Текущие активы. Выбираем создать новый счет. В типе счета выбираем "Ценные бумаги".



Рис 3.1. Добавление счета для золота.

Жмем "Выбрать..." для валюты счета. В типе указываем "FUND". Жмем на "New" - такого вида ценностей у нас еще нет. Вводим следующие параметры:



Рис 3.2. Параметры для типа ценности "Золото в Сбербанке".

Обязательно надо указать Символ/Аббревиатуру, тут указываем "SBRF.AU". Так как меньше грамма нам не продадут: часть для продажи - 1. Заканчиваем со вводом параметров, новый счет добавлен, пока на нем ничего нет.



Рис 3.3. Общий список счетов с новым "золотым" счетом.

Вызываем диалог перевода, и со счета наличных рублей переводим 50000, на сумму 60. Т.е. получаем наши заветные 60 грамм золота.



Рис 3.4. Перевод средств на "золотой" счет.

Еще раз посмотрим на общий список счетов после перевода средств на золотой счет. Видно, что общая сумма по прежнему 100000 рублей. Хотя наличности у нас осталось совсем немного.



Рис 3.5. Общий список счетов после перевода средств на "золотой" счет.

Ну это ненадолго, пришло время вернуться в реальный мир. Идем в редактор цен.



Рис 3.6. Редактор цен с ценами обмена золота и долларов на рубли.

Жмем "Получить котировки...". Как и ожидалось, пришли новые котировки. Но, естественно, только для стандартного доллара.



Рис 3.7. Редактор цен с ценами обмена золота и долларов на рубли после получения новых котировок.

Закрываем до поры редактор цен (ненадолго). Видим, что с новыми ценами наши активы уже немного подросли.



Рис 3.8. Общий список счетов после получения новых котировок.

Но это не полная информация. Ведь котировок по золоту нет. Придется добавить их вручную. Снова идем в редактор цен. Жмем "+Add" (чудеса локализации). Находим нашу ценную бумагу через "Выбрать...".



Рис 3.9. Выбор ценной бумаги при добавлении котировок.

Валюта "RUB". Тип выбираем "Последний". Цена будет 900.



Рис 3.10. Ввод котировок.

Также, я поменял дату обмена на 20-е число, чтобы котировки не накладывались друг на друга, в целях исключения двусмысленностей.



Рис 3.11. Вид редактора цен после ввода котировок.

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



Рис 3.12. Отчет по портфелю.

Здесь мы видим и отражение по стоимости, и начальную стоимость, и процентное изменение - все, что нам нужно.

Ну и наконец, общий вид счетов после всех манипуляций.



Рис 3.13. Окончательный вид счетов.

Все видно как в начальной валюте (ценности), так и итоговой суммой. В выпадающем списке снизу экрана можно посмотреть прибыли и текущее состояние в разрезе по ценностям, что тоже достаточно удобно. Неудобно вводить котировки руками. Эту проблему мы и научимся решать в следующей части.

воскресенье, 25 января 2009 г.

Татьянин День

Приснилось сегодня что-то страшное из институтской жизни. Проснулся в холодном поту, быстро осознал, что самое страшное позади и диплом уже получен.

Весь день не мог понять, к чему это вообще? Хотя раз в два-три месяца мне такое снится. Но в данном случае это Татьянин День. Праздник студенчества. Все, теперь понятно, что за сон, знать, в руку он...

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

понедельник, 19 января 2009 г.

Logitech QuickCam E2500 - оживляем всевидящее око...

Прокопавшись по форумам нашел нужную информацию для запуска этого устройства. Теперь спешу поделиться с Вами.

Итак, используем поставляемый в ядре 2.6.28 драйвер gspca. Только придется его чуток пропатчить. Всего навсего прописываем идентификатор нашей камерки.

kilork@phoenix ~ $ diff -u /usr/src/linux/drivers/media/video/gspca/zc3xx.c~ /usr/src/linux/drivers/media/video/gspca/zc3xx.c
--- /usr/src/linux/drivers/media/video/gspca/zc3xx.c~ 2008-12-25 02:26:37.000000000 +0300
+++ /usr/src/linux/drivers/media/video/gspca/zc3xx.c 2009-01-19 01:21:08.000000000 +0300
@@ -7530,6 +7530,7 @@
{USB_DEVICE(0x0458, 0x700c)},
{USB_DEVICE(0x0458, 0x700f)},
{USB_DEVICE(0x0461, 0x0a00)},
+ {USB_DEVICE(0x046d, 0x089d), .driver_info = SENSOR_MC501CB},
{USB_DEVICE(0x046d, 0x08a0)},
{USB_DEVICE(0x046d, 0x08a1)},
{USB_DEVICE(0x046d, 0x08a2)},


Пересобираем ядро с нужными модулями. modprobe gspca_zc3xx. dmesg. Видим что наше устройство зацепилось. Теперь пробуем запустить cheese. Ни фига. Одни квадратики.

На этот случай есть замечательный пакет libv4l:
kilork@phoenix ~ $ emerge -s libv4l
Searching...
[ Results for search key : libv4l ]
[ Applications found : 1 ]

* media-libs/libv4l
Latest version available: 0.5.7
Latest version installed: 0.5.7
Size of files: 84 kB
Homepage: http://people.atrpms.net/~hdegoede/ http://hansdegoede.livejournal.com/3636.html
Description: V4L userspace libraries
License: LGPL-2.1


После установки пробуем еще раз, на этот раз таким образом:

kilork@phoenix ~ $ LD_PRELOAD=/usr/lib/libv4l/v4l1compat.so cheese


Ура, на какую-то долю секунды показалась картинка с камеры, страшная, но живая. Потом куда-то делась яркость. На форумах расписано как и с этим побороться, но мне было уже как-то влом. Поэтому я зашел в настройки cheese. Выбрал разрешение 320х240, потом обратно в 640х480, картинка стала поживее. Итак, камера работает, картинку кажет.

Поскольку считаю такой способ запуска устройства сильно извращенным, жду ядра 2.6.29 - там обещали добавить эту строчку, а может быть и победить косяки с яркостью, сообщениями о битых mjpeg, а так же загрузкой процессора под завязку. Ждем ebuild'ов!

P.S. Интересная штука с скайпом, пока не разбирался, но он игнорирует мои попытки подключить камерку, и даже когда я ее выбираю (/dev/video1) все равно в предпросмотре показывает изображение с тюнера (/dev/video0). Могу конечно организовать телетрансляцию через skype, но все же как-то это странно, ругнулся бы хоть как. Ладно, запустим с libv4l и из консольки, может разберемся с бякой.

воскресенье, 18 января 2009 г.

Наконец-то! Поиск по истории bash через PgUp/PgDown

В gentoo это работает по умолчанию. В других дистрибутивах почему-то нет. Наконец-то дошли руки разобраться, где собака зарыта. Дело все в файлике /etc/inputrc. На моем eee в ubuntu он по умолчанию содержит две закомментированые строки:

# alternate mappings for "page up" and "page down" to search the history
# "\e[5~": history-search-backward
# "\e[6~": history-search-forward


Раскомментируем, открываем новый терминал. Вбиваем начало любой команды, PgUp (Fn+Вверх на eee), находится первая команда, еще раз, слудующая. Никаких Ctrl+R. Ура, еще одно удобство настроено.

пятница, 16 января 2009 г.

CPAN Finance::Quote::Sberbank - Модуль для получения котировок ОМС Сбербанка

Выложил свои труды на CPAN. Теперь любой желающий сможет это установить.

kilork@pantogan:~$ cpan

cpan> i Finance::Quote::Sberbank
Strange distribution name [Finance::Quote::Sberbank]
Module id = Finance::Quote::Sberbank
CPAN_USERID KILORK (Alexander Korolyoff )
CPAN_VERSION 0.01
CPAN_FILE K/KI/KILORK/Finance-Quote-Sberbank-0.01.tar.gz
MANPAGE Finance::Quote::Sberbank - Obtain quotes from Sberbank (Savings Bank of the Russian Federation)
INST_FILE /home/kilork/perl/share/perl/5.8.8/Finance/Quote/Sberbank.pm
INST_VERSION 0.01


cpan> install Finance::Quote::Sberbank


Сразу, правда, в gnucash это не заработает - требуется немного магии. Магия заключается в том, что надо поправить сам Finance::Quote и добавить туда загрузку модуля, выглядит это приблизительно так:

kilork@pantogan:~/perl/share/perl/5.8.8/Finance$ diff Quote.pm~ Quote.pm -u
--- Quote.pm~ 2008-10-26 11:15:50.000000000 +0300
+++ Quote.pm 2009-01-08 11:13:02.000000000 +0300
@@ -170,7 +170,7 @@
DWS FTPortfolios Fidelity FinanceCanada Fool HEX IndiaMutual
LeRevenu ManInvestments NZX Platinum SEB StockHouseCanada
TSP TSX Tdefunds Tdwaterhouse Tiaacref Troweprice Trustnet Union
- USFedBonds VWD ZA Cominvest Finanzpartner
+ USFedBonds VWD ZA Cominvest Finanzpartner Sberbank
Yahoo::Asia Yahoo::Australia Yahoo::Brasil
Yahoo::Europe Yahoo::NZ Yahoo::USA/; }


Т.е. просто дописываем модуль в список загружаемых. В данном примере подразумевается, что cpan для пользователя настроен на локальную директорию в папке пользователя, и туда же установлены модули Finance::Quote и Finance::Quote::Sberbank. Подробнее о настройке установки модулей в локальную директорию можно посмотреть здесь. Я пока сомневаюсь, что мой модуль включат в официальный дистрибутив, так что пока так.

UPDATE: Внимательно прочитал модуль, можно сделать гораздо проще, надо назначить переменную окружения:
FQ_LOAD_QUOTELET="-defaults Sberbank"

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

kilork@mexidol ~$ FQ_LOAD_QUOTELET="-defaults Sberbank" gnucash finans



Итак, если мы все сделали правильно, то в gnucash->Инструменты->"Редактор ценных бумаг" можно будет настроить следующее:




Теперь, надеюсь более подробно описать собственно сам процесс разработки новых модулей для gnucash. Цепочка отработана.

UPDATE2: Добавил отдельный сайт для работы с котировками ОМС Сбербанка - пользовательский и программный интерфейс: http://kilork.blogspot.com/2012/01/sberbank-quotes.html.

среда, 14 января 2009 г.

Месть козлов

Все же иногда правило вселенской несправедливости дает осечку. Жаль, что редко.

вторник, 13 января 2009 г.

Работа с GnuCash. Часть 2. Валюта в личной бухгалтерии

UPD: Внимание! Последняя самая актуальная и полная версия руководства по GnuCash на русском языке в различных форматах доступна по адресу http://kilork.org/gnucash.html.

Курс доллара продолжает расти, чем неизменно радует всех обладателей зеленых бумажек. До сих пор мы работали только с рублями, но тут случилось чудо - мы нашли в загашниках некоторое количество $. Теперь есть только одна проблема - как все это учесть в домашней бухгалтерии?

В текущей структуре счетов нет валютных счетов, поэтому идем в Активы->Текущие активы, в контекстном меню выбираем пункт меню "Новый счет". Это будет счет для имеющихся у нас наличных долларов. Назовем его Cash, валюту выбираем USD, следим, чтобы тип счета был "Активы", а родительски счет "Текущие активы".



Рис 2.1. Создание нового счета в иностранной валюте.

Поскольку деньги у нас уже есть, то перед тем, как создать счет, зайдем на закладку "Начальное сальдо", здесь вводим имеющуюся у нас сумму $. В примере это 1000.



Рис 2.2. Закладка "Начальное сальдо".

Снова посмотрим на общий список счетов.



Рис 2.3. Вид счетов после добавления счета Cash, номинируемого в USD.

На лицо явное противоречие - у нас на 1000 USD больше, но активы по прежнему 99700. Все дело в том, что GnuCash пока не знает курсы обмена, чтобы правильно отразить сумму активов. Заходим в меню Инструменты->Редактор цен.



Рис 2.4. Редактор цен.

Сейчас у нас нет котировок. Жмем кнопку "Получить котировки".



Рис 2.5. Редактор цен после получения котировок.

Теперь виден полученный курс обмена USD к RUR. Отлично. Закрываем редактор цен. И снова смотрим на общий список счетов. Замечательно, мы видим именно то, что хотелось видеть.



Рис 2.6. Вид счетов после получения котировок.

Проведем типичную обменную операцию. Для этого встаем на счет Cash, выбираем в контекстном меню "Перевести". Выбираем для передачи счет наличных, который номинируется в рублях, после этого снизу становится доступным для ввода курс обмена. Вводим там 30.5, подтверждаем "Ок".



Рис 2.7. Перевод между счетами в разных валютах с указанием курса обмена.

Теперь список счетов выглядит так:



Рис 2.8. Счета после проведения обменной операции.

Видно, что наша прибыль по прежнему равна -300, но активы значительно выросли. Все очень удобно и просто, курс обмена легко задавать для отдельных операций, и очень просто следить за общими изменениями активов в той или иной валюте из-за колебаний курсов. В дальнейшем я покажу, как вводить новые инструменты учета, такие, как золото в граммах, и т.п., а также - расскажу детали работы механизма получения котировок на примере написания модуля для получения котировок обезличенных металлических счетов с сайта Сбербанка России.