F2PY rulez!

I recently found some old Fortran code from the paper Algorithm AS197 A Fast Algorithm for the Exact Likelihood of Autoregressive-Moving Average Models (Melard 1984) [pdf] [code].

I’m not very fluent in Fortran77 and I don’t like the idea of rewriting a well tested piece of code introducing new bugs, so why not give a try to F2PY?

F2PY is a tool that provides an easy connection between Python and Fortran languages. F2PY is part of NumPy.
F2PY creates extension modules from (handwritten or F2PY generated) signature files or directly from Fortran sources.

Continue…

PostgreSQL custom aggregate functions

Aggregate functions compute a single result from a set of input values. Like sum() or count() they operate on one or more columns and multiple rows and output a single result.

In PostgreSQL is quite easy to create a custom aggregate function, the ingredients are:

  • Create an aggregate function
  • Create a state update function
  • optional: create a final function

For example, if we want to implement the avg function we can write:

CREATE AGGREGATE avg (float8)
(
    sfunc = float8_accum, -- {_count+=1, _sum+=value}
    stype = float8[],
    finalfunc = float8_avg, -- _sum / _count
    initcond = '{0,0}'
);

Now we need a bit more complex aggregate function to write…

continue…

Caml Trading talk

Chi gioca sul mercato finanziario?

  • Investitori
    • mettono del denaro a rischio e si attendono un ritorno proporzionato al rischio.
    • il mercato finanziario esiste per loro
    • ruolo non professionale
  • Speculatori
    • cercano di trovare cosa è sottovalutato prima che il mercato se ne accorga e lo comprano per riverderlo quando ha il massimo valore.
    • hanno interesse a prevedere il futuro
    • ruolo misto tra professionisti e hobbisti
  • Market Makers
    • vivono nello spazio tra il prezzo di vendita ed il prezzo di acquisto
    • un po’ come il negoziante che rivende ciò che ha comprato
    • non ha particolare interesse a prevedere il futuro, al limite quello a breve termine
    • ruolo per professionisti
  • Arbitratori
    • comprano e vendono quantità (valute, …) su mercati diversi (America, Europa, Asia, …)
    • quando un mercato è poco fluido i suoi prezzi non sono attendibili e i prezzi dei mercati fluidi possono essere usati per fare inferenza sui mercati poco fluidi
    • le transazioni devono avvenire molto rapidamente
    • ruolo per professionisti strettamente legato con il ruolo di Market Maker

Jane Street lavora come Market Maker – Arbitratore.

[altre cose che non ho voglia di trascrivere...]

Poi viene presentata la particolare dinamicità dei lori sistemi, costretti ed aggiornarsi in tempo reale alle modifiche continue dei sitemi di Trading con cui si interfacciano per compiere le operazioni sui mercati.
Per questo negli anni tutta la base di codice è via via migrata ad OCaml, che con il controllo statico dei tipi riesce a trovare la maggior parte delle incongruenze al momento della compilazione.

Altro vantaggio di OCaml è il fatto di incentivare uno stile di programmazione funzionale (nessuno usa gli oggetti in OCaml…), stile che facilita la fattorizzazione di pattern comuni a detta dello speaker molto più dello stile ad oggetti.

Terzo ma non ultimo vantaggio, vantaggio che accomuna un po’ tutti i linguaggi della famiglia ML, la compilazione è rapida e produce codice performante pur senza dover scomodare ottimizzazioni aggressive (che a volte rendono imprevedibile la velocità del codice prodotto anche a seguito di una piccola modifica nel codice).

Vi è poi un vantaggio accessorio e non marginale per una azienda, la possibilità di trovare buoni programmatori da assumere. Il fatto di avere scelto un linguaggio di nicchia li porta a pescare in un paniere di programmatori molto più piccolo anche se spesso la selezione fatta a monte dal linguaggio non è casuale ma predilige programmatori che come minimo hanno avuto l’interesse a studiare un linguaggio “strano”.

In particolare interessante l’opinione del relatore su OCaml, F# ed i linguaggi funzionali vs ad oggetti, riassunta in un commento qua: Caml Trading talk at CMU

Dietro Dive Into Python 3

Oggi ho notato il sito diveintopython3.org.

Incuriosito dal footer:

This site is optimized for Lynx just because fuck you.
I’m told it also looks good in graphical browsers.

© 2001-4, 2009 ℳark Pilgrim, CC-BY-3.0

Sono andato a guardare nei sorgenti della pagina ed ho trovato questa interessante riflessione:

<!-- As I write this, the year is 2009, and the internet is STILL a battleground of so-called “intellectual property” disputes. Some people would have you believe that without proper financial incentives, music, literature, and software would disappear. After all, who would make music if they can’t make money on it? Who would write? Who would program?

I know the answer. The answer is that musicians will make music, not because they can make money, but because musicians are the people who can’t not make music. Writers will write because they can’t not write. Most of the people you think of as artists are really just showmen. They collect a paycheck and go home at 5 o’clock. That’s not art, that’s commerce.

I’ve been programming since 1983 and releasing my code under Free Software licenses since 1993. I’ve been writing and publishing under Free Content licenses since 2000. I can’t imagine not doing this. If you can imagine yourself not doing what you’re doing, do something else. Do whatever it is you can’t not do. -->