samedi 30 juin 2007

The LaTeX Companion

Je me suis gâté récemment! Sur Amazon.ca, j'ai acheté un livre à propos de LaTeX... c'est genre un assez gros livre de comme 1100 pages! Il était en spécial... je pouvais l'acheter en librairie à Montréal pour genre 75$, et il m'a coûté 51$ sur Amazon. Je vais le recevoir genre la semaine prochaine là... (faut juste que Postes Canada l'envoie au bureau de poste près de chez moi!).

vendredi 29 juin 2007

Triangles

Je suis en train de travailler sur un assez gros projet chez AXA.

Je vous explique ce qu'est un triangle. En gros, disons à chaque semestre, on accumule des données sur les sinistres qui se sont produits. Disons que l'on regarde combien on a déboursé d'argent depuis le deuxième semestre en 2006 (2006-2). Donc, en décembre 2006, on a regardé combien on a payé pour des sinistres de juillet à décembre.

Maintenant, en juin, on regarde combien on a payé POUR LES SINISTRES ENCOURRUS PENDANT 2006-2. Mettons qu'on avait payé 600K, et que là on soit rendu à j'sais pas... 800K. Ça veut dire qu'on a payé 200K pendant le dernier semestre, pour les sinistres du dernier semestre en 2006.

Plus le temps avance, plus on a de l'information sur les semestres passés, combien on a payé, etc. etc. Après un certain nombre de semestres / d'années, on est "certain" qu'on a tout payé.

Ensuite, on fait des études là-dessus. On regarde par exemple, "si on a payé 10K dans le premier semestre, combien doit-on s'attendre à payer d'ici 15 ans pour ce semestre-là?".

Voici à quoi pourrait ressemble un triangle (pour ce qui est payé):





Ici, si on regarde la dernière ligne, par exemple, ça veut dire que pendant le dernier semestre de l'année 2006, on a payé 15 000$ en dommages et frais et autres pour ce semestre-là. Si on continue à monter sur la diagonale, le "21" vis-à-vis 2006-1 et 12, ça veut dire qu'après 12 mois (depuis janvier 2006), on a payé un total de 21 000$ pour les accidents survenus entre janvier et juin 2006 (premier semestre).

Certains constateront que "à chaque 6 mois, on peut rajouter une diagonale!". Mais à quoi ça sert? En gros, ça sert à estimer des "loss development factors". Par exemple, on pourrait avoir un facteur "à l'ultime", qui nous permettrait d'estimer après 1 semestre combien on déboursera en tout pour cette période d'accidents-là. Par exemple, le LDF à l'ultime pour 2001-1 serait ~ 2.6. En effet, au premier regard on avait 10 000, et on dirait que le total s'est stabilisé à 26 000. A posteriori, on observe facilement qu'on obtient 26 000 en multipliant 10 000 par 2.6. Si on avait su a priori, ç'aurait été cool... donc, c'est ça qu'on essaie de faire... on essaie d'obtenir des données de même pour pouvoir faire de meilleures estimations. Aussi, des LDF peuvent être développés pour n'importe quelle quantité de semestres... je dis "à l'ultime", mais j'aurais pu dire 18 mois ou quelque chose du genre... c'est le même principe.

Bon, le problème survient justement quand on veut construire cette diagonale-là. Premièrement, on joue avec des bases de données complètement incompréhensibles et indéchiffrables (si je vous dit qu'il y a 60 000 enregistrements, et que chaque enregistrement a ~ 48 variables, je pense que ça vous donne une petite idée ;)).

La manière que ça fonctionnait avant, c'est qu'on faisait rouler des programmes dans un logiciel, puis on se servait d'un autre logiciel pour utiliser ces résultats-là et on faisait des opérations "fastidieuses" pour obtenir certaines données, qui ELLES étaient finalement envoyées dans Excel, et là fallait faire plein d'affaires que j'ai jamais compris. En fait, y'a pas grand-monde là-bas qui font des triangles, et seulement "quelques-uns" semblent vraiment savoir de quoi ils parlent... mais c'est vraiment compliqué comme processus / procédure.

Ce que je suis en train de faire, c'est de simplifier le tout. J'ai modifié / écrit des programmes qui permettent de sauter l'étape du deuxième logiciel... et les données sortent directement dans un fichier Excel. J'ai développé un outil dans Excel qui se "feed" sur ces données-là directement, et tous les triangles de toutes les lignes d'affaires d'une compagnie sont construits en un gros 45 secondes, et envoyés directement vers la base de données. J'ai aussi rajouté une petite interface qui permet de modifier manuellement les triangles, tout à coup qu'on ait des opérations / ajustements à faire dessus. C'est assez chouette.

Bon... le problème, c'est de modifier les programmes qui permettent de générer ces données. Il y a 4 compagnies... la première compagnie, ça a bien été. La deuxième compagnie, c'était l'enfer... parce que celle-là avait des triangles semestriels (classiques) mais aussi trimestriels... et il fallait que le programme gère les deux à la fois, et c'était bordélique et affreux. En fait, le programme, au départ, ne gèrait pas les triangles semestriels... il fallut que je l'adapte en conséquence (pas le fun pour une miette). La troisième compagnie, facile as fuck... alors la quatrième, qui est petite et sans importance, je me suis, my god ça va être facile.

Ouais ben... grossière erreur. J'ai commencé cette compagnie-là mardi. Je l'ai "finie" (débloquée serait le meilleur mot) seulement cet après-midi (j'étais content as shit). Le problème, c'est qu'il y a deux "types" de données: des données incrémentales, et des données cumulatives. À titre d'exemple, dans le triangle, si on prend la ligne 2006-1, on a ces deux données: 16 et 21. Pour obtenir le 21, i.e. celui de la diagonale, on pourrait soit: générer "21" comme résultat (cumulatif), ou encore générer "5" (16 + 5 = 21)(incrémental).

Dès le départ, j'ai développé absolument tout à partir de données incrémentales. Toute l'interface en fait fonctionne strictement avec des données incrémentales... mine de rien, switcher d'incrémentales à cumulatives, c'est pas SI agréable que ça, surtout s'il n'y a qu'une seule compagnie qui fonctionne de même. ;)

Mais c'était pas mon plus gros problème. Non seulement j'avais des données cumulatives, mais aucune de mes données ne fonctionnaient! :) Ça m'a pris un temps fou pour comprendre pourquoi... il me manquait une criss de variable. Ah ben oui, avec 48 variables, certaines que tu gardes d'autres que non, et qui changent de noms d'une compagnie à l'autre, C'EST PAS SI FACILE QUE ÇA LE SAVOIR.

Bon, et là j'avais la grosse question: j'ai des données cumulatives, comment les transformer en incrémentales.

La question est bête... mais j'étais pogné dans mon monde. J'essayais de me dire qu'il y aurait moyen de faire une petite passe-passe dans Excel, d'y dire que "si c'est telle compagnie, alors load-moi le triangle, enlève l'ancienne diagonale, puis utilise ces données-là pour faire la nouvelle diagonale". Mais c'était typiquement inutile, et puis c'est pas "clean" -- je préfèrais que toutes les compagnies soient uniformes.

J'ai passé plusieurs heures à essayer de trouver une solution simple. Et là j'ai eu l'idée enfantine de ma vie: Si je suis capable de calculer la diagonale de décembre... je vois pas pourquoi je serais pas capable de calculer la diagonale à juin (c'est-à-dire l'ancienne diagonale). Et si je suis capable de fausser les données, de faire à croire à l'ordi que juin est en décembre, et que toutes ses valeurs sont négatives, et que j'additionne les deux ensemble... TADA! DONNÉES INCRÉMENTALES LES AMIS!

Bon, dit de même, ça a l'air compliqué... mais en 10 minutes, tout était parfaitement usitionnel. Alors, aujourd'hui, j'ai terminé la quatrième compagnie. :) J'étais tellement content. Ça me stressait beaucoup beaucoup. J'y pensais tout le temps. Quand je me couchais, j'essayais de trouver une solution, de voir quoi faire... et là je suis content que ça ait débloqué.

Disons-le, j'ai pas crissé grand-chose de l'après-midi après ça... mais j'ai quand même trouvé le moyen d'améliorer un peu mon outil, de le rendre plus efficace, des conneries de même qui font que je perds pas totalement mon temps.

Vous savez, ça a l'air de rien... mais il y a quelque chose d'honnêtement récompensant quand on regarde le résultat final. Parce que tout est rendu si simple. On change quelques valeurs (quelle date sommes-nous? où se trouve la base de données? ...), et on clique sur un bouton. On copie/colle ces données-là dans une page dans Excel, on change quelques paramètres (quelle date sommes-nous? quelle compagnie traitez-vous?), et on clique sur un bouton, et BANG... 75 triangles sont construits, on sauvegarde, on quitte, et c'est fait! N'importe qui, avec une procédure de 1 page, pourrait faire ça. Pas besoin d'être actuaire. Ce qui fait que 1) l'adaptation est beaucoup plus facile, et 2) le temps est grandement optimisé, de telle sorte qu'il reste beaucoup plus de temps pour faire de l'analyse plutôt que juste des opérations pour créer des résultats.

C'est pour ça que je tiens à bien faire ma job. Parce que si je suis capable de prévoir le plus de problèmes possibles avant qu'ils ne surviennent, alors tout le monde s'en portera mieux, et tout le monde va être content que quelqu'un quelque part ait pris le temps de développer ce monstre-là.

Light bulbs

Light bulbs are not actually "light bulbs" but dark absorbers. When you turn them on, they suck the dark out of the room. You can prove this by holding your hand under a "light bulb". The dark will stack up under your hand where its path to the absorber is blocked by your hand. When they quit working and turn a dark color, it's not because they burnt out, it's because they're full.

jeudi 28 juin 2007

Fight Club

"In the world I see - you are stalking elk through the damp canyon forests around the ruins of Rockefeller Center. You'll wear leather clothes that will last you the rest of your life. You'll climb the wrist-thick kudzu vines that wrap the Sears Tower. And when you look down, you'll see tiny figures pounding corn, laying strips of venison on the empty car pool lane of some abandoned superhighway".



mercredi 27 juin 2007

Fille dans le bus

Bon... là je voulais parler de mes préjugés.

Premièrement, j'aimerais mentionner que mes préjugés sont habituellement vrais (lol). C'est quand même rare que je me trompe, parce que j'essaie d'aller dans le plus cliché possible, et ensuite vérifier expérimentalement quelques fois (disons un échantillon impressionnant de 2 données me suffirait) pour soutenir l'hypothèse.

La fille dans le banc en avant de moi avait une sorte de chemise serrée rose style salope, des culottes courtes courtes (répétition intentionnelle), des maudites grosses lunettes de soleil fashion, etc. etc. Elle avait l'air comme toutes les connes qui sont au cégep et qui ne sont jamais à leur cours et qui sont avec les joueurs de football, en gros!

Son téléphone sonne............. lol... ouais, alors là j'étais câlissement convaincu. C'était quelqu'un vraisemblablement à sa job... elle parlait qu'elle avait laissé un mot à Claude et bla bla bla, et que tout était par écrit, et qu'elle avait des preuves et tout le tralala, et que ça faisait longtemps que c'était prévu et tout le kit.

Son argumentation était correcte... sa manière de s'exprimer aussi. Aucun sacre, pas vraiment d'expressions laides qui veulent rien dire non plus... (ouais, j'écoutais sa conversation).

La manière que j'ai compris ça (il s'avère que j'avais raison), c'est qu'elle avait demandé congé, quelque chose du genre, et qu'elle était supposée l'avoir. Mais là quelqu'un lui demandait de rentrer ce soir parce qu'elle ne le savait pas et tout le kit.

Alors elle devait rentrer. Mais TOUT LE MONDE sait que la grande majorité des gens s'en fout pas mal de sa job d'été nowhere, et que genre... tout le monde finit par ne pas se présenter s'il avait une mini excuse qui soit mini bonne. Moi je m'attendais crissement à ce qu'elle lui dise qu'elle ne viendrait pas, parce qu'elle avait demandé la permission et qu'elle avait d'autre chose à faire et tout le tralala.

Après avoir raccroché, elle a appelé sa mère, et elle avait la voix vraiiiiment triste (du style que le moment P (pour pleurs) approchait à grands pas). Elle parlait à "maman". Elle lui a raconté qu'elle devait aller travailler, que c'était pas correct... que "papa m'a appelé j'ai essayé de le rejoindre mais on pouvait pas se parler", ça c'est un bout que j'ai pas compris, sûrement parce que ça ne me regardait pas et que j'écoutais une conversation sans vraiment y avoir droit. Je suis de même moi... roi du monde.

Mais bon... après, quelqu'un d'autre de sa job l'a appelée, là elle a essayé de s'expliquer, qu'elle avait demandé congé, qu'elle avait laissé un mot et qu'elle avait parlé à Maggie, quelque chose du genre, anyway... et là elle lui a dit "ben qu'est-ce que tu veux que j'fasse?", suivi de quelque chose qui devait ressembler à "ben oui je vais rentrer... mais je trouve vraiment pas ça correct".

Pendant tout ce temps, je n'ai entendu aucun sacre, aucun mauvais mot, aucune expression laide, aucun criss de commentaire que j'arrive à lui reprocher.

Je trouve ça vraiment remarquable qu'elle y soit allée, et qu'elle ait agit de même et tout le kit... sérieusement, je savais pas qu'il y avait du monde de même à part moi (lol... roi du monde) qui s'inquiète vraiment pour sa job, et de ses responsabilités et tout ça. Je trouve ça honnêtement remarquable, et j'ai été agréablement surpris, et j'ai presque (l'histoire d'un moment) repris confiance en l'humanité.

Tout ce que je trouve à dire, a posteriori, c'est que les apparences sont trompeuses.

*soupir*... faudrait que je sois moins "le monde est cave" tout le temps de même...

mardi 26 juin 2007

Dé truqué

Eh! oui... comme si j'avais pas achalé assez de monde de même, j'ai décidé d'en parler ici.

Samedi en jouant au hockey, j'ai trouvé un dé à terre. Pour rire, j'ai demandé à Olivier de choisir un chiffre. Il a pris le six. Je lance le dé, pi BANG c'est un six... "haha t'as été chanceux"...

Hier soir, j'étais à mon bureau, et je m'amusais à le lancer... et je me disais TABARNACK... tout ce que je pognais c'était genre des 5 et des 6 (mais surtout des 6).

Et plus je le lançais, plus je me disais que ça avait vraiment pas d'allure. Et c'est un petit dé cheap, poche. Alors je me suis dit, hmmmm... est-ce que ça se pourrait qu'il ne soit pas équilibré?? Et là vous allez me dire, ouais mais faudrait une balance ultra avancée avec des crochets pour le suspendre et un spectromètre de masse et tout le tralalala...

NON les amis. Je suis en actuariat. Je sais calculer des probabilités et faire des tests statistiques sur des trucs vraiment fascinants. J'ai fait ce qu'on appelle un "goodness-of-fit test". En fait, c'est simplement de vérifier si une certaine variable aléatoire suit une distribution de probabilités connue. Ici, c'est assez simple... la distribution était "la probabilité de pogner n'importe quelle face est de 1/6".

J'ai fait 100 lancers. Avec 100 lancers, on s'attend à avoir 16,66666666... fois chaque face. En statistique, il est possible de montrer que la sommation de (nombre d'une face obtenue - nombre attendu)^2 / (nombre attendu), pour toutes les faces, suit une loi du Khi-deux avec 5 degrés de liberté (il y a 6 faces, donc 6 catégories, donc 6 - 1 = 5 degrés de liberté). Ça s'appelle un "test du Khi-deux". Il y a une condition qu'il faut respecter, cette condition étant que pour chaque catégorie, le nombre de résultats attendu soit supérieur à 5. Pour toutes les catégories, 16,6666... est strictement supérieur à 5, donc l'approximation est valable.

J'ai fait tout ça. J'ai calculé la "probabilité critique" en me basant sur la distribution du Khi-deux. La probabilité critique, c'est la probabilité d'obtenir des résultats comme ceux obtenus, ou des résultats encore pires, en supposant que la distribution est "vraie". En des termes plus clair, ça me donne la probabilité d'obtenir ce que j'ai obtenu avec un dé bien équilibré.

Ma probabilité critique était de 4,92% environ. Donc, avec un "vrai" dé, si 100 fois je lançais 100 fois le dé, seulement 4,92 fois j'aurais des résultats comparables à ce que j'ai obtenu. Ce n'est pas tellement bon... en fait, c'est assez mauvais.

Je n'ai donc pas eu le choix de supposer que mon dé était très mal équilibré. (Note: le 4,92% peut aussi être interprété comme la probabilité de ne pas être en mesure de reconnaître qu'il s'agit de la vraie distribution en se basant sur les résultats observés).

Pour ceux qui n'ont rien compris: MON DÉ EST À CHIER.
Aujourd'hui, en revenant, je l'ai lancé deux fois; deux 6, lol...

Hier, j'avais obtenu quelque chose comme 31 fois (sur 100 lancers!) un 6...