株式売買ユーティリティのメンテナンス

投稿日:

 標記システムはこの3月に手直しして、快調に動いている。

 しかし、この株価好調の折柄、どうも売買成績がそれほど良くない。

 毎日の売買シミュレーションの結果は、成績の良いものがテーブルに格納されて提示される仕組みだ。成績の悪いものは日々の値動きにより次第に排除されていく。ふと気づいてこのテーブルを見てみたら、銘柄数が減っている。はじめのうちは100社以上が残っていたが、今見ると70社ほどに減ってしまっていた。

 ははあ、これだな、と思い、先週から少し試行錯誤して、東証一部の貸借銘柄リストを1893社、東証のサイトから貰ってきた。これを対象銘柄テーブルに全部ブチ込んだ。

 前は自分の気に入った東証二部の銘柄も入れていたが、売買両方向でシミュレーションするので貸借銘柄でないと都合が悪い。東証二部の銘柄を混ぜると貸借銘柄でない銘柄を削除したりするのが面倒になることと、東証一部の貸借銘柄は信用の高い銘柄で自然、時価総額も高いということになるから、これも好都合だと思ったのだ。時価総額が高ければ、そう簡単には倒産などしない。以前は時価総額の高い順に上からリストを持ってきていたが、それはシミュレーションに時間がかかっていたから銘柄数を厳選するためで、最近は計算機を性能の良いもの(Corei7+メモリ32GBのデスクトップマシンのVM)に替えたので、この部分は気にしなくてよくなったのだ。

 株価データは無料を期するため、「Yahoo!株価」からトロトロとスクレイピングする仕組みである。ところが、約1900社の全部のダウンロードには50時間ほどもかかる。

 先週の土日からそれに手を付け、シミュレーションはようやく7.1(木)の未明、真夜中に起動した。

 ところが、朝までかかって1527銘柄ほどシミュレーションしたところで、停止してしまった。

 データにゴミでも入ったかな、と思い、一度スクレイピングした全部のデータを消去して、ダウンロードからもう一度取り掛かることにした。また改めて50時間以上かかる。

 しかし、今度も1526銘柄で異常終了してしまった。

 そんなことに、昨日の土曜日の早朝まで費やしてしまった。今まで最大の銘柄数は700銘柄くらいしか食わせたことがないので、そういうバグがあることがわからなかったのである。

 シミュレーション部分はCで書いてある。どこかにメモリの開放忘れでもあるのかな、とソースを読んでみるがそんなことはない。

 しかし、PostgreSQLへのアクセスにlibpqを使っているのだが、そのリザルトオブジェクトを開放していない場所が1か所あることに気づいた。ある銘柄の過去5年分の日足データを列挙するループに入る直前に「res = PQexec(con, sqlstr);」なんてことをやり、この「res」には過去5年分の日足データが入る。「res」をループ内で使うのだが、ループを出た後でこの「res」を開放しないまま、再び「res = PQexec(con, sqlstr);」が呼ばれるのだ。どうも、これを1500回も繰り返すとメモリリークを起こすようだ。

 そこで、日足データ列挙ループの出口を出てすぐのところに「PQclear(res);」というコードを足した。

 これでもう一度様子を見ることにする。

株式売買ユーティリティの改修

投稿日:

 先週16日に突然正常に動かなくなってしまった株式売買ユーティリティ。やっと手を付けることができた。

 案の定、十何年変わっていなかったYahoo!ファイナンスの仕様が変わったためであることが判った。返してくるHTMLに変な <span> タグや class が増え、まるで別物に変わっている。それに、GETの引数の仕様も変わり、以前のURLではデータを持ってこれなくなっていることも判った。

 株価データを切り出すためのマッチング・パターンを書き直し、変な <span> タグや classのサニタイズを強化した。それからURLも書き直した。

 動くようになったが、220社の株価データを全部取り直すのに数時間はかかる。

時事漠視

投稿日:
結局は地獄の沙汰も金次第

 ああ、醜い、醜いねえ。昔から、「薬九層倍、百姓百層倍、坊主丸儲け」などと言ったもので、薬もこうなってみると九層倍どころの話ではない。……ま、「丸儲け」まではいってないからマシと言えばマシだけれどもさ。無論、今回だけの話をしてるんじゃない、今回を取ってみれば九層倍(9倍)なんてのは言い過ぎで、まずまず良心的ではあろうけれども、抗癌剤での暴利ぶりを見て見ろよコイツら。九層倍どころの騒ぎじゃないだろ。

根性試し相場(笑)

 いよいよヒリヒリヒリヒリ、導火線がチリチリと火花を上げてはじけ縮んでいく爆弾を最後まで持っているのは果たして誰か、テストされるような根性相場になった。おっそろしい。

 私は、今回は「全力売り」の方なんで、まあ、ガタンと力尽きてほしいと思ってますが、それはそれとして、皆様の幸福を祈っていることは確かです、ええ、ええ(謎)。どうかお幸せに(増々謎)。

イギリス人の(かい)(ぎゃく)はさすが年季が入っている

 イギリスの猫官僚。笑ってしまった。

 お堅い我が国政府にも、この程度の諧謔を楽しむ余裕があれば気分もほぐれて楽しいだろうなと思うが、まあ、我々日本人は糞真面目な上に()真面目と来ているから、もしこんなことがあったとしても「税金で猫なんか飼いやがって!」くらいしか言わないんだろうなあ。

臭い臭い、外国人が臭い

投稿日:

 私は自分の金融資産管理の範囲内で多少株式の売買もする。だが、社会勉強程度のもので、沢山(たくさん)の資金を()ぎ込んでいるわけではない。副業にはならない範囲で(つつ)ましく押し引きしている。

 さて、去る1月8日の金曜日、日経平均は30年ぶりの高値、2万8千139円をつけた。バブル崩壊直後、平成2年(1990)8月16日の寄り付き2万8千97円以来の値段である。その後、日経平均は絶えて久しく2万8千円の声を聞かなかった。それが30年経ってこの高騰だ。

 日本の株式市場は、新年の大発会直後は御祝儀相場などという日本らしい相場習慣が根強く残っているため、大概(たいがい)は上げ相場となるのであるが、それにしても異様な上げっぷりではある。

 そればかりか、昨年(令和2年(2020))の春から日経平均は実に堅調に推移している。昨年の春から今日までというと、まったくのところ、新型コロナウイルスの蔓延が世界を支配した時期である。この期間、日本人のセンチメントが日本株にじゃんじゃんお金を注ぎ込みましょう、なんていうような攻めの状況にあったとはとても思えない。

 ましてこの新年は、新型コロナウイルス感染症急拡大を受けての1都3県緊急事態宣言、加えて関西・中京地域もこれに(なら)わん(かな)の構えだ。新聞やテレビが(わめ)き立てる通りの状況だとするなら、新コロ休業を()いられている()(せい)は次々に倒産・廃業などし、とてものことに株に注ぎ込む余剰の資金など()()べくもない(はず)である。

 では、どこから資金が流入しているのか。

 古い言い方だが、株式市場に、外国人の体臭が芬々(プンプン)と充満しているように思う。というのも、日本人の目から日本だけを見れば確かに「買い」の状況ではない。がしかし、ではアメリカに投資するのか、あるいは欧州に投資するのかというと、日本の10倍とか100倍もの新コロ死者を出しているような()(わい)で無責任な国々や地域に、大事な自分の金を出す気はしない。欧米に比べれば、日本を含むアジア諸国は新コロに関しては多少マシとは言えるだろうが、しかし、投資先として選ぶには、中国は勿論のこと、多くの国々の先行きは不透明・不安定で、遠慮しておきたいというのが正直なところだ。インドあたりになると、新型コロナウイルス感染症の(しょう)(けつ)っぷりは欧州・アメリカとあまり変わらず、ここも手控えるに()かず、である。南米・アフリカなど推して知るべし、論ずるまでもなかろう。

 そうなってくると、単に「残った一番マシな市場」として、日本が浮上してくるわけである。そりゃあ、外国人臭い海外の資金も流入するだろう。

 上記に根拠はなく、私の妄想に過ぎない。しかし、さしずめこんなところでそう(ハズ)れでもあるまい。

 私の妄想通り、こんな理由での資金の集中であるなら、欧米が持ち直せば外国人はさっさとお金を引き上げてしまうだろう。

 山高ければ谷また深し、とはなかなか味わいのある警句である。多少余剰資金のある向きもあるだろうが、今から買いに出動するようでは、この資本主義社会、ひいては民主主義ってものを理解しているとは、言えんでしょうなァ。

時事漫考

投稿日:
いや、これは既に2千年もの昔に

 ああ、これ、ねえ。別に「最近」ってことはないんじゃないかな。「『産んでやった』『育ててやった』とか、恩を売るようなことを言うなら、なんで生んだんだ!お前らが勝手にしたことだろ!?」なんてことは、親に反抗する子の常套句で、取り立てて言うほどのことではない。

 それはさておき、出生の否定は人生の否定、ひいては世界の否定でもある。私はキリスト教の回し者ではないし、キリスト教なんか嫌いだが、このことに関する解決の無視すべからざる有力な一方策は、既に2千年の昔、ナザレの大工の息子、ガラリヤの説教師、イエスによって提示されている。

 そのいわく、「世界は悲痛や苦悩でできてはいない。喜びによって満たされている」すなわちこれである。ただ、その根拠について、キリスト教は強引なる(ちから)(わざ)()()せて有無(うむ)を言わせない。つまり「なんとなれば苦悩の根源たる人類のあらゆる罪はイエスが磔刑(たっけい)によって全部負ったから、あとは神の恵みによる歓喜のみが世界に満ち(あふ)れている」()って知るべし、知らば()(こん)より(のち)神の(おん)(ちょう)と光栄に包まれて(しろ)無垢(むく)の幸福そのものとなって()るべし、という破天荒かつ思考停止の論で片付けてしまっているのだ。

 実は仏教も似たり寄ったりのことを別の経路で発見・定義・教示しており、各宗派によってそれは様々なのであるが、悲しいことに我々日本人には中途半端なキリスト教気触(かぶ)れが多いから、当て(こす)ろうと思ってこういうふうに書いてみた。

 ところが、哲学者が(ヨダレ)()らして(くら)い付くこの問題の検討については、欧州では結局キリスト教が上のような一解決を提示して、それが大衆ウケしたものだから停止してしまい、プラトンだのアリストテレスだのの時代からプッツリ断絶、概ね1500年間がところ、ただの一歩も進歩しなかった。

 悪いことに、新教(プロテスタント)(かえ)って古いキリスト教の原理を再興してしまったから、ますますややこしいことになるのであるが、それはまた別の話である。

 結局、欧州で数百世紀にも及んだ図らざる集団的宗教実験はあまり成功していない、などとと吐き捨てるのは急ぎ過ぎだろうが、では他に納得のいく解決の選択肢が欧州の人々に与えられているかと言うとどうも怪しい。まして欧州以外においてをや。「選択肢が与えられているかというと」と書いたが、「与えられる」? 誰から? ……みたいな堂々巡りにもなるだろう。

 いずれにせよ、苦悩の解決に自ら到達する前に、圧倒的大多数の人間は長かろうと短かろうと命が尽きて死ぬわけだ。

 私ですか?

 私なんぞ、誰かに責任をおっかぶせて何かから逃れようなんてことは、とうに、してませんわ。いや、正確に言うなら、そんなことができる状況に、昔ッから、ない。だから幸福も歓喜もヘッタクレも、また苦悩も悲痛もクソも、そんなモン、アナタ(微苦笑)。そもそも誰かに責任をとらせよう、さて誰に責任を取らせよう、なんて選択肢の置かれた岐路自体が、私にはハナっから、ない。

 出生なんて所詮は親の恣意(しい)でどうにでもなる。ということは、この苦悩の始まりの出生や悲痛の連続の人生の責任者は誰だ! というふうに転嫁したい、責任者糾弾をしたい、例えばそれを親に向けたい。つまり人生の否定、出生の拒否なんてものは「ボクの、アタシの苦悩は親がスタートさせたんだ」と言うしょうもない屁理屈と同じこと。自分の悩みの責任を、パパ、ママ、あるいは坊主、和尚、神父、牧師、アッラー、エホバ、仏陀、阿弥陀、大日、観世音、ガースー内閣、アベ政治、麻原彰晃に幸福の科学、(イワシ)の頭、学校、教師、干しニンニクでも投げ上げ菖蒲(しょうぶ)でも心療内科クリニックでも精神病院でも市役所でも警察署でも、ドイツでもコイツでも何でもエエけど、とにかく手っ取り早く誰かにとってもらいたい、結局、ボクの、アタシの責任じゃないんだ! ……せいぜいその程度の、小学校の高学年あたりが顔を真っ赤にして言い立てそうなことだよ。

 餓鬼みたいなこと言ってンじゃねえよ。……あ、文字通りガキか。

 まあ、あくまで私にとっては、ではありますけどね。だからこんな暴論めいた自分流の解決を、自分の妻や子供も含め、誰かに押し付ける気もないですわ。「反出生主義」なるほど、ええ、ええ、結構なことじゃないですかね、おお、ヨシヨシ、オジサンが聴いてあげるよネンネちゃん、ってなモンですわ。

 あんまりにも無残で(すさ)んだ文章の成り行きになってきたから、皆さんがだ~い好きな、イエス・キリストの言と伝わる一句を書きつけて締めておきましょう。

マタイ傳福音書第6章第25節・第26節より引用。ルビは佐藤俊夫による。

 この(ゆえ)(われ)なんぢらに告ぐ、何を(くら)ひ、何を飮まんと生命(いのち)のことを(おも)(わずら)ひ、何を()んと(からだ)のことを思ひ煩ふな。生命は(かて)にまさり、體は(ころも)(まさ)るならずや。

 空の鳥を見よ、()かず、刈らず、(くら)(おさ)めず、(しか)るに(なんじ)らの天の父は、これを(やしな)ひたまふ。汝らは(これ)よりも(はるか)(すぐ)るる者ならずや。

新年御祝儀相場でこんなに下げなら……キッシッシ

 大発会でこれなら、明日以降なかなか期待が持てるな。

「『期待』だと?」

……ええ、そうです。ほぼ全力売り中ですゴメンナサイ。

こんだけデジタルがいろいろあっても

 まあ、そりゃ、そうなんだろうねえ……。

 理由もヘッタクレも、下世話で恐縮だが、若い人には性欲ってモンも、そりゃ、あるからねえ。会わなきゃそれこそ「始まらない……」わけではある。単純(シンプル)そのものの話ですわ。天下の大新聞がンなこと書けやしないだろうけれども。

【6238】フリュー

投稿日:

 自作の株式売買システムの指示に従い、4日前(8月13日(木))、「フリュー」というアーケードゲーム機等の会社の株を買ったら、今日はこれが非常に高騰している。現在値952円で、1割以上の儲けだ。

 表でご覧の通り、過去5年以内に15回取引して1回も損をしていないわけであるから、まず安心な指標パラメータに基づくものの、さすがにたったの2営業日でこんなにリターンが来るのは、ちょっと嬉しいことである。

扱う銘柄を増やす

投稿日:

 東証の時価総額上位300社と、自分の気に入った銘柄70社あまりを売買シミュレーションにかけてみていたが、ふと気づいてスクリーニングしてみると、私が採用している「過去5年で10回以上の売買実績があり、その勝率が95%以上であるもの」が70社そこいらしかないことがわかった。

 そこで意を決し、東証の時価総額上位1000社の株価データを持ってきて、計算機の性能が激速になったのを生かしてシミュレーション、その中から残ったものを日常シミュレーションにかけることにした。

 昨夜18時51分に株価の取得をはじめて、今13時間あまり。残り2百数十社だ。普段は差分だけをダウンロードする仕組みなのでこんなにはかからないのだが、さすがに初回はものすごく時間がかかる。シミュレーションと違って、株価のダウンロードはデータ提供元である「Yahoo!ファイナンス」の性能に依存しているからである。

 シミュレーションは3時間強ほどで終わるだろうと見積もっている。

株式売買シミュレーションシステム

投稿日:

 十何年動かしてきた標記システム。

 先日、古いサーバを見限って、セキュリティの堅いデスクトップマシン上の仮想マシンに「Fedora 31」を導入し、その上に移設したところだ。

 さすがはCerelonの32ビットから「Devil’s Canyon」ことCore i7-4790Kへの移設だけあって、性能には目を見張るものがある。

 前記した通り、前はマシンの性能上の限界から、自分が着目した49個の銘柄を分析の対象としていた。

 ところがどうだ。目を見張るようなスピードでカッ飛ぶようになったこのシステム、東証1部上場の時価総額上位銘柄から300社を持ってきて、自分が気になる銘柄71社を合わせた371社合わせてシミュレーションしても、1時間余りで終わってしまう。前のマシンでは20時頃からスタートさせて、23時~24時頃までかかってしまっていたのだ。

 これはもう、大幅に手を広げて、株式の売買に励むよりほかない。

Fedora 31で自作の株式売買シミュレーションシステムを動かす

投稿日:

 自宅で10年以上の間、株式の売買シミュレーションシステムを運用してきた。Linux上で作動する。

 以前、このブログでも少し書いたことがあるが、これで多少儲けても来ている。

 このシステムは、株価をネットからダウンロードするプログラムをPerlで、これを格納するRDBはPostgreSQL、シミュレーションはCで、ユーザインタフェースはPHPで、というハイブリッド(笑)なつくりである。プラットホームは古いIntel Cerelon D “Prescott-V” 2.66GHzのマシン上に最初Fedora Core 5をインストール、順次アップグレードし、最後はFedora 9となっていた。

 2年ほど前からだったろうか、株価をネットからダウンロードするプログラムがうまく動かなくなってしまっていた。株価は「Yahoo!ファイナンス」の時系列データから無料で頂戴してくるのだが、これはデータではサービスされておらず、htmlの中から特徴的なタグに正規表現でマッチングさせて株価を取り出してくる仕組みになっていた。なので、うまく動かなくなっていたのは、さしずめYahoo!ファイナンスの仕様が変わり、htmlのフォーマットなどが変わったのだろう、と思っていた。実際、正規表現でマッチングさせて目的のデータを切り出すコードになっているから、わずかでもhtmlが変わると、途端に消化不良を起こすのである。

 原因究明や修理が面倒で、また、しばらく株式も値動きがあまりなくて面白くなかったから売買もしておらず、シミュレーションシステムも放りっぱなしになってしまっていた。

 そんな折も折、ここへきて、新型コロナウイルス蔓延により外出の自粛が推奨される事態となった。ために、やむなく家に垂れこめている。平日は仕事に(いそ)しんでいるからあまり暇はないが、休日などはどうしても無聊(ぶりょう)となる。

 そこで、意を決して上述のシステムを修理することにした。多分、Yahoo!ファイナンスの仕様、就中(なかんづく)htmlのフォーマットを分析すれば、すぐに修理できるだろうと思っていた。

 ところが、その推量は全然違っていた。

 株価ダウンロードプログラムは、htmlをダウンロードするのに、CPANの「LWP」ライブラリ等は使わず、Perl内から「wget」を呼び出して使っていた。そうしないとSSLの部分が面倒だからだ。

 問題は、このSSL部分にあった。Yahoo!全体の仕様が、TLS1.2未満のSSLを拒絶するよう変更されていたのだ。Fedora 9は、OpenSSL0.9.8までしか対応しておらず、そしてOpenSSL0.9.8はTLS1.0までしか対応していない。

 そこまで確かめて、やっと思い出した。私のシステムが動かなくなった2年ほど前というと、ちょうどSSLのセキュリティホールやSHA-1アルゴリズムの危殆(きたい)化などが取り沙汰され、あちこちのサイトやブラウザがどんどんバージョンアップされて行っていたのだ。

 私はその頃、仕事が非常に忙しく、自宅のPC環境など(かえり)みている暇がなかった。それで、他人事のようにそれらのニュースに接していたのである。

 原因は、wgetとOpenSSLが古い、ひいてはプラットフォームOSが古いことにあった。

 最新のFedoraシリーズのバージョンは「31」になっており、そもそも平成17年(2005)発売のCerelon Dのような32ビットCPUには対応していないから、もう、古いLinuxマシンはそろそろお払い箱だろう。

 私のデスクトップマシンはCore i7 4790K 4GHzにメモリは32GBをブチ込み、ストレージは1TBのHDDから、先日2TBのSSDに換装したところだ。されば、ここはもう、仮想化しかあるまい。

 VMWare Playerをダウンロードしてインストール。非営利であれば無料である。これにFedora 31のisoイメージを本家サイトから貰ってきてインストールする。

 動かしてみてびっくりした。私のような商用のSystem V育ちの者にとって、Linuxの「init」システムは長年慣れ親しんだシステムなのだが、Apache2を動かそうと/etc/rc.d/init.d/の下を覗いてビックリ仰天!何も入っていなくて、空っぽではないか!(笑)

 こ、これは……!とGoogle先生にお尋ね申し上げ、今は「init」は否定の憂き目にあい、「systemd」というものに置き換わっているということを知る。

 「systemctl」というサービス・コマンドの操作を調べ、これでhttpdを動かす。PostgreSQL、PHP、wgetなど必要なものをyum改め、「dnf」で次々とブチ込む。

 それから(おもむ)ろに株価ダウンロードシステムを動かす。……まったく何の支障もなく、プログラムの変更もなく作動するようになった。

 phpで作られたユーザインタフェースについては、POSTやGETの引数を直接グローバル変数として扱うことのできるかつてのPHPの仕様が廃止されてしまっており、そのままでは動かなくなってしまっていたが、そこは彌縫(びほう)的にパッチ当てをした。

 SELinuxを調整しないとPostgreSQLとPHPが協調動作しないなど、多少ひっかかったところもあったが、元の通り株価売買シミュレーションシステムは作動するようになった。

 さすがは Core i7 だ。生マシンから仮想マシンへの移設とはいえ、もはや骨董(こっとう)品に近い Cerelon の生マシンから移設しただけあって、C で書いたシミュレーション部分は、目を見張るような素晴らしいスピードでカッ飛んでいく。

 もともとこのシステムでは、過去5年分の株価データに対し、8900通り×49銘柄の売買シミュレーションを行っていた。Yahoo!ファイナンスに株価の整理値が出揃う20時50分頃から「cron」でこのシステムを起動していたのだが、これだけの組み合わせのシミュレーションを行うと、全部終わるのは23時くらいにはなってしまっていた。

 ところが今回の移設で、それらシミュレーションがなんと10分ほどで完了するようになった。かつて誰かが言っていたが、「稚拙で鈍足なアルゴリズムでも、意外にマシンパワーの進歩で解決されてしまう」ということの実例を目の当たりにした次第である。

 さて、そのようにしてシミュレーション結果を見てみると、やはり、新型コロナウイルスの影響で、相場は鉄火場と化している。大変な勢いで売買指標が出ている。これは大変だ。

 今この鉄火場に飛び込むのは危険である。ウイルス禍が一段落し、上昇相場になったところからが勝負だろう。

来簡の始末

投稿日:

 たまっていた来簡、株式の取引報告書、広報誌など、全部ScanSnapに叩き込んで始末してしまう。

 マシンの性能がいいので、文字の認識もあっと言う間。