Спрашивал многих — на чем вы моделируете и отрабатываете стратегии? Ответы — Луа, С #, Delphi, C++, Java, php и пр. Хорошие языки, спору нет. Но хороши они для релиза. И лишь немногие при моделировании стратегий работают с Python.
Чем хорош Python?.. Это простота изучения — с нуля можно начать за считанные дни. Это громадные библиотеки — математические, машинное обучения, преобразования, работа с векторами и сложной графикой. Это простота моделирования — слабать стратегию можно за вечер.
Да, когда придет время релиза, придется все это переписывать на другой язык, но библиотеки можно оставить из Python — они оч быстрые, написаны на С++. Интерфейсы ко многим языкам имеются.
Для проверки ваших рыночных гипотез и моделирования стратегий переходите на Python. Чем могу, помогу. Но не обучаю, для этого книги есть- ничего сложного. По книгам и среде посоветую, для начала.
PS. Так, для справки, если покопаетесь в инете, то увидите, что NASA уже почти все пишет и моделирует на Python, и уже потом критические участки кода переводит на С++.
Андрей Первозванный, И тем не менее, никто уже не пишет на Ассемблере, Мало кто пишет на С. так что за питоном будущее и подобными языками. Сложность кода растёт, как и мощности вычислительные, так что на первый план выходит как написать побольше и побыстрее.
Зажиточный бюргер, Это вы очень ошибаетесь про си и ассемблер, но для обычного трейдинга это конечно лишнее :)… что не скажешь о хфт и их фпга девайсах если конечно еще такое делают.
CloseToAlgoTrading, я не очень ошибаюсь я вообще не ошибаюсь. Достаточно взять и посмотреть какую долю популярности раньше ассемблер и с занимали и сейчас.
Но вообще не совсем корректно. Стратегии пишутся не на языке, а на язык-фреймворк-платформа[-библиотека]. На питоне без какой-то платформы, библиотеки для тестирования именно стратегий ну можно таблички векторно посчитать, распределения построить, графики всякие, но это не стратегии, а если стратегии, то простые, а если не простые то для каждой стратегии нужно заново делать одни и те же телодвижения.
Короче язык тут не единственное действующее лицо, вот что хотел сказать. Но питон приятен без сомнений).
Алексей Никитин, не ко мне вопрос, но проще всего НС использовать в качестве программируемой (обучаемой) логики. Т.е., логику не пишешь сам, а она пишется сама, при условии, что ты сам знаешь, какая она должна быть.
Roman Ivanov, во всех топовых западных вузах, идет как первый язык, а дальше уже каждый сам решает надо ему углублять знания или нет. Но я помню как тут советовали первым языком учить C# это вообще финиш.
Goreloff, Питон оч простой язык -вхождение за несколько дней с нуля. Все о чем вы говорите, можно оставить на потом без вреда для ваших программ. Чем Питон и ценен.
_xXx_, у питона вообще С++ по капотом, он весь на нем написан.
Но кроме того есть еще и разница в скорости работы, гигантская. между случаем. когда ты например в цикле функцию применяешь к каждому элементу итератора, или к массиву numpy сразу. целиком.
Математика. статистика — это библиотеки numpy, scipy, sympy.
Из sympy можно Си-код генерировать даже.
_xXx_, JIT есть в питоне. да.
как конкретно работает — не разбирался
вот взгляните (если будет разборчиво):
возведение в квадрат чисел от 0 до 10000 — 2.7 миллисекунды просто в питоне.
и 15.6 микросекунды с помощью массива numpy
Mityan, спасибо, мощно.
Обычно в примерах пишут что С раз в 30 быстрее питона.
А тут нампи в 150 раз быстрее питоньего кода.
Т.е. еще в 5 раз быстрее, чем тот же код на С.
сейчас без знания питона (простите программисты ибо я ламер) только региональные финансисты и управы еще обходятся, в Мск без начальных знаний количественного анализа Ты вообще ноль. Думаю через поколение финансистов (адвизори, портфельные управы, инвест советники) которые бы не знали основы Питона и дата сайенса вообще не будет. Язык будущего ИМХО. Тож чуть-чуть моделирую на нем. Реально топ.
class Hofstadter
{
public:
static int F(int n) {
if ( n == 0 ) return 1;
return n — M(F(n-1));
}
static int M(int n) {
if ( n == 0 ) return 0;
return n — F(M(n-1));
}
};
Turbo Pascal, аналогично. У меня не такой большой перечень я пишу только на с++. А начало было совсем экзотика , разработка логики контроллеров. Писать приходилось сразу бинарный код. Я думаю что людям которые пришли в профессию уже во время 14-17 стандарта, питон намного легче заходит ..
Не согласен. С основами разбираться да не проблема. Пару сотен строк простого кода могу написать на третий день знакомства на любом языке. А вот дальше идут средства разработки, фреймворки, библиотеки и прочее. Это уже несколько иные вещи требуется приличный срок,, мотивация и время
Разработчики Python изобрели dll hell во второй раз. С несовместимыми версиями библиотек можно сойти с ума. В одном месте исправил — в другом поломалось.
deke, не вижу ничего криминального. Любая среда программирования, в этом смысле, аналогична — везде есть несовместимости со старыми версиями.
Короче, наплевать и забыть.)
3Qu, я такой дичи нигде не встречал, а у меня этого добра навалом и дома и на работе. Огромная цепочка зависимостей, которую менеджер пакетов pip не в состоянии разрешить. Тотальная несовместимость всего и вся — это тоже уникальная особенность питона.
deke, да, да, весь мир работает, масса организаций, включая NASA, работают — все справляются, одному deke все не так. Случается. Не надо драматизировать.
deke, Можно и распространять, в комплекте со всеми используемыми модулями. Как оно и делается.
Я не понимаю, по моему любой софт все аналогично. Скажем, с с++ все тоже самое. Без либ соответствующей версий не пойдет, и надо либы включать в установщик, либо устанавливать отдельно.
3Qu, Питон все же под Линукс больше заточен, на Винде не все библиотеки есть и нормально разрулить в инсталляторе все зависимости не получится. Я пробовал пару лет назад — запустить получилось только в Linux Subsystem, но после установки второго проекта все рухнуло и Linux больше не запускался. Проще оказалось отдельный VPS под каждый проект запускать, чем виртуальные среды настраивать.
В С++ я рантайм слинкую сразу, а все либы положу в папку программы. И больше никаких проблем и перекрестных зависимостей. Для этого есть redistributable пакеты у нормальных библиотек.
Не зря у Питона куча пакетных менеджеров понаписана — пип, поэтри, конда. Сделать один раз нормальное решение не позволяет идеология.
А обратная совместимость — это просто песня. У какоего еще языка программирования нарушается совместимость в минорных релизах?
deke, не пугайте народ, для моделирования стратегий не так много модулей и надо, в основном общего назначения, которые есть в любой ОС.
Собственно, и распространять нам ничего не надо. И бог с ними, с недостатками. Недостатки есть у всего, вопрос лишь, критичны ли они для нашего конкретного применения.
3Qu, так я разрабатываю продукты для конченых пользователей и смотрю со своей колокольни. Если что-то ковырять у себя дома на коленке, то вопросов нет.
В России закончился процесс снижения потребления алкоголя, в лидерах продаж шампанское и ликеры Несколько лети подряд в РФ наблюдалось снижение потребления алкоголя, по данным министерства здравоохран...
В России закончился процесс снижения потребления алкоголя, в лидерах продаж шампанское и ликеры Несколько лети подряд в РФ наблюдалось снижение потребления алкоголя, по данным министерства здравоохран...
Дмитрий, кризис, это кризис экономической модели или неэффективное использование финансов, а если мы берём газовую отросль в ней всё в порядке, если не закапывать трубы в землю, раньше институты пл...
количество глюков и ошибок в геометрической прогрессии
Python тема чё).
Но вообще не совсем корректно. Стратегии пишутся не на языке, а на язык-фреймворк-платформа[-библиотека]. На питоне без какой-то платформы, библиотеки для тестирования именно стратегий ну можно таблички векторно посчитать, распределения построить, графики всякие, но это не стратегии, а если стратегии, то простые, а если не простые то для каждой стратегии нужно заново делать одни и те же телодвижения.
Короче язык тут не единственное действующее лицо, вот что хотел сказать. Но питон приятен без сомнений).
Я бы не назвал lua хорошим языком.
Они уже написаны в библиотеках, от scilearn до tensorflow.
3Qu, мне тоже. С чего начать вообще непричастному?
Но кроме того есть еще и разница в скорости работы, гигантская. между случаем. когда ты например в цикле функцию применяешь к каждому элементу итератора, или к массиву numpy сразу. целиком.
Математика. статистика — это библиотеки numpy, scipy, sympy.
Из sympy можно Си-код генерировать даже.
как конкретно работает — не разбирался
вот взгляните (если будет разборчиво):
возведение в квадрат чисел от 0 до 10000 — 2.7 миллисекунды просто в питоне.
и 15.6 микросекунды с помощью массива numpy
Обычно в примерах пишут что С раз в 30 быстрее питона.
А тут нампи в 150 раз быстрее питоньего кода.
Т.е. еще в 5 раз быстрее, чем тот же код на С.
Из Дубая как-то раз приезжает…
Код на пайтоне:
def F(n): return 1 if n == 0 else n — M(F(n-1))
def M(n): return 0 if n == 0 else n — F(M(n-1))
print ([ F(n) for n in range(20) ])
print ([ M(n) for n in range(20) ])
тоже самое на С++
#include <iostream>
#include <vector>
#include <iterator>
class Hofstadter
{
public:
static int F(int n) {
if ( n == 0 ) return 1;
return n — M(F(n-1));
}
static int M(int n) {
if ( n == 0 ) return 0;
return n — F(M(n-1));
}
};
using namespace std;
int main()
{
int i;
vector<int> ra, rb;
for(i=0; i < 20; i++) {
ra.push_back(Hofstadter::F(i));
rb.push_back(Hofstadter::M(i));
}
copy(ra.begin(), ra.end(),
ostream_iterator<int>(cout, " "));
cout << endl;
copy(rb.begin(), rb.end(),
ostream_iterator<int>(cout, " "));
cout << endl;
return 0;
}
… DLang
Это я к тому, что с++ уж очень безобразен становится последнее время
Блин, Питона освоить не могу, вот реально, раза три пробовал. Он ваще нелогичный, тупой язык.
Короче, наплевать и забыть.)
Для внутренних проектов он хорошо подойдет, но распространять такую поделку конечным пользователям — самоубийство.
Я не понимаю, по моему любой софт все аналогично. Скажем, с с++ все тоже самое. Без либ соответствующей версий не пойдет, и надо либы включать в установщик, либо устанавливать отдельно.
В С++ я рантайм слинкую сразу, а все либы положу в папку программы. И больше никаких проблем и перекрестных зависимостей. Для этого есть redistributable пакеты у нормальных библиотек.
Не зря у Питона куча пакетных менеджеров понаписана — пип, поэтри, конда. Сделать один раз нормальное решение не позволяет идеология.
А обратная совместимость — это просто песня. У какоего еще языка программирования нарушается совместимость в минорных релизах?
Собственно, и распространять нам ничего не надо. И бог с ними, с недостатками. Недостатки есть у всего, вопрос лишь, критичны ли они для нашего конкретного применения.