2020-07-12 09:39 | カテゴリ:勉強や投資情報
塩漬けマンが自作したWEBスクレイピングツールをくださいってDMが時々来るんですが、WEBスクレイピングって、サイトによって禁止されてたり、法律的にもグレー(著作権的に)なので、販売するのは論外で、配布もやらない方がいいと思うんですよ。

なので、作り方を教えます(え?!)
個人で勝手に作って勝手に使う分には自己責任ですので。

因みに、塩漬けマンは今4つの機能を持つツールを作っています。
①適時開示リアルタイムチェック
②企業HP更新リアルタイムチェック
③投資情報自動取得(CSV)・・・PERとかの指標を自動で取得してくれる便利ツールの事
④メディア情報リアルタイムチェック・・・PRTIMESとか日経新聞のニュースサイトのチェックの事


自作する場合、一番難しいのは②です。
差分チェックのアルゴリズムが、プロでも作るのが難しいです。
塩漬けマンは、ボランティア精神溢れる人がC#のライブラリという形で差分チェッククラスを無償配布してくれてたのを使っています。
①・③・④は無茶苦茶簡単に作れます。
プログラムやったことがある人なら初級レベルです。

んで、プログラム言語ですけど、C#です。
理由は、現役プログラマ時代に最後に触ってた言語で覚えてたというのと、.NETフレームワークが充実しているので、誰でも簡単に高機能なWindowsアプリケーションが作れるからです。
ただし、初心者向けとはいえ、プロ仕様の言語ですので、ちょっと敷居が高いです。
多分一番素人でも簡単に始めれて、とっつきやすいのはエクセルVBAだと思います。
次にPowerShellかな・・・ただ、PowerShell、塩漬けマン使った事ないので、なんとも言えないです。
そして、やる気がある人はPythonをお勧めします。
本屋に行けば、どの言語が一番流行ってるか分かるのですが、塩漬けマンの現役時代ってJava一色でしたが、今はPython一色になっています。
しかも機械学習とかのAIソフトも簡単に作れる(フレームワークが充実してて何でもあるらしいです)らしく、多分今一番旬で、今後一番有望な言語です。

C#の欠点は、それでWinodwsフォームアプリケーションを作ると、ちゃんとマルチスレッド処理してても、処理(更新チェックとかの)が動いている時は、ツールが固まります。
誰でも簡単に高性能に作れる代わりに、処理が遅くて固まるというのはしょうがないって感じの言語です。

んで、詳細には説明しないです。
やる気がある人や経験者が出来るレベルでやり方を教えます。
経験者は「④HTML解析について」だけ読めば十分だと思います。

※例で使うのは、以下のようなユーザインタフェースの「④メディア情報リアルタイムチェック」です。
20200710メディアチェック画像

①開発環境の準備
C#で開発するにはVisualStudioが必須です。昔は数万円とかしましたが、今は以下から無料でダウンロードできます。
Visual Studio 2019ダウンロード

②一定時間間隔での処理
リアルタイム監視の場合は必須ですが、そうでなくても、タイマー機能というのを利用して作るべきです。
.NETフレームワークではタイマー機能を以下の三つ用意してくれています。
1.Windowsタイマ:System.Windows.Forms.Timerクラス
2.スレッドタイマ:System.Threading.Timerクラス
3.サーバベースタイマ:System.Timers.Timerクラス
三つの違いはここを参照
C# の Timer 種類別 特徴 と 使い方
結論から言うと、3を使うべきで、使い方はここを参照
タイマにより一定時間間隔で処理を行うには?(サーバベースタイマ編)

■System.Timers.Timerクラスの実装例■
※ボタンを押したら処理が実行される仕様
※大枠だけ残して、その他の詳細な処理は全部削除しています(実際は1000行を超えるソースになっています)
20200706タイマー大枠コード例

★ポイント★
10行目:これでSystem.Timers.Timerが使えるようになります
20行目:デザイナーにある「Timer」は「1.Windowsタイマ:System.Windows.Forms.Timerクラス」のです。
↓この一番下にあるTimerは「1.Windowsタイマ:System.Windows.Forms.Timerクラス」の事で違う
20200706ツールボックスのタイマー
「3.サーバベースタイマ:System.Timers.Timerクラス」を使用するためには、手動でツールボックスにSystem.Timers.TimerクラスのTimerを追加しないといけないのですが、そんな事をしなくても、20行目のように「System.Timers.Timer timer1 = new System.Timers.Timer();」ってコードを書けばいいだけです。
29行目:SynchronizingObjectプロパティに当フォーム(this)を設定しないと、フォームの更新処理が出来ません。
66行目、73行目:アクセス修飾子は「private」にして下さい。デフォルトでは違うのになっていました。上記の例のように、得られたメディアの情報を一覧(DataGridViewを使用)にどんどん追加していく仕様なのですが、デフォルトのアクセス修飾子のままだと、フォーム上のオブジェクト(DataGridView等全て)の内容を変更出来ませんでした。知ってる人にはどうでもいい事ですが、塩漬けマンは知らなかったので、実は一番迷った箇所です。

③WEB情報の取得(ログイン認証についても)
.NETフレームワークではWEBアクセスするのに以下の二つが用意されています。
1.HttpWebRequestクラス
2.WebClient クラス・・・使いやすい
どっちでも出来ますが、ログイン認証(クッキー認証)のあるメディア(日経新聞とか日刊工業新聞とか)にプログラムからログインする場合は、WEB上の説明は「1.HttpWebRequestクラス」しかないです。「2.WebClient クラス」でも出来るみたいですが、専門的な知識(クッキーの仕様理解)が必要となります。
クッキーを使ってWebページを取得するには?
因みに、塩漬けマン、それ知らなくて、「2.WebClient クラス」で作っちゃっています。
↓こんな感じで
 Uri webUri = new Uri(@"※アクセスしたいHPアドレス");
 WebClient client = new WebClient();
 client.Encoding = Encoding.UTF8;
 string result = client.DownloadString(webUri);

どうしてもログインしたくなったら、ちょっと変更するかもです。

④HTML解析について
C#では凄く優秀なHTMLパーサーである「HtmlAgilityPack」が使えます。
最初から使える訳ではなくて、「参照」に追加したりと準備が必要ですが、以下を見て設定しました。
Html Agility Packを使ってWebページをスクレイピングするには?[C#、VB]
※昔の画像で、今と少しやり方が違ったと思いますが、上記を見ながらやってたら出来ました。
「HtmlAgilityPack」の使い方ですが、難し過ぎて説明は出来ないし、しようと思ったら、膨大になるので、例を見せた方が早いです。
上記③で取得したHTMLを以下のようにHtmlAgilityPackパーサーにセットします。
 HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
 doc.LoadHtml(result);

後はHTMLを解析して、情報を取得出来るかはパズルを解くような感じで、頭の良さが試されます。
1.単一ノードを取得する場合
<HTML例>
例えば、日経新聞の記事から更新日時を取得しようとした場合、HTMLを見ると以下のようになっています。
20200706単一ノード例
↓上記のHTMLから日付を取得するコード
 string datetime = "";
 HtmlAgilityPack.HtmlNode objNode = doc.DocumentNode.SelectSingleNode("//dd[contains(@class, 'cmnc-publish')]");
 if (objNode != null)
 {
  datetime = objNode.InnerText;
 }

※nullチェックとかしないで一気に変数に入れちゃいたい人はこうも書けますが、日経新聞はclass="cmnc-publish"を持ったddタグを持っていない記事もあるらしく、その場合nullになって、例外エラーが発生します。
 string datetime = doc.DocumentNode.SelectSingleNode("//dd[contains(@class, 'cmnc-publish')]").InnerText;

つまり、SelectSingleNodeメソッドに取得したいタグを以下の引数の書式にして渡せばいいのです。
//タグ名[contains(@属性名, '属性値')]
なので、例えばタグがdivで、属性がidの場合は以下になります。
//div[contains(@id, 'cmnc-publish')]
さらに、タグの中のタグとどんどん潜っていく場合は、以下のように、//で繋いでいきます。
//タグ名[contains(@属性名, '属性値')]//タグ名[contains(@属性名, '属性値')]
後は、属性の条件を増やしたい場合は、[]で繋いでいきます。
//タグ名[contains(@属性名, '属性値')][contains(@属性名, '属性値')]
(例)タグを辿りつつ、属性の条件が二つある場合
 doc.DocumentNode.SelectSingleNode("//div[contains(@class, 'cmn-article')]//a[contains(@class, 'm-inline_text')][contains(@href, 'javascript:void(0)')]");
※cmn-articleというclass属性を持つdivタグの中のm-inline_textというclass属性とjavascript:void(0)というhref属性を持つaタグの情報を取得している。

タグの中身はInnerTextに入っています。タグ付きで取得したい場合はInnerHtmlプロパティです。
その他、プロパティは多数ありますので、何か使えそうなのがあれば適時使う感じですが、とりあえず欲しい情報はInnerTextで取得するって覚えておけばいいです。

ここで、class="cmnc-publish"を持ったddタグが複数あったらどうなるの?っていう疑問が湧くと思います。
試してみた所、どうやら一番最初に出て来るddタグが取得されていました。
※これは欲しい情報が入ったタグが複数ある場合に、欲しい情報が一番最初に出て来るタグにあった場合は、上記が使えるという事ですので、覚えておいてください。

2.複数ノードを取得する場合
 var titleList = new List();
 var urlList = new List();
 foreach (HtmlAgilityPack.HtmlNode objNewsDataNode in docSokuho.DocumentNode.SelectNodes("//h3[contains(@class, 'm-miM09_title')]//a"))
 {
  if (objNewsDataNode.InnerText != "")
  {
   titleList.Add(objNewsDataNode.InnerText.Trim());
   urlList.Add("https://www.nikkei.com/" + objNewsDataNode.Attributes["href"].Value);
  }
 }


このように、取得したいデータが複数ある場合、はSelectNodesメソッドを使えば、複数ノードが配列で取得されます。
※上記の例は日経新聞のHPから記事のタイトルとリンク先のアドレスを取ってくる例です。
上記は全データを使うのでループさせていますが、取得したデータの3番目だけが欲しいから、ループしなくていいんだけどって場合は以下のように、配列の番号をダイレクトに指定してもいいです。
 objNewsDataNode[2].InnerText

※取得したデータの前後にいらない空白があったらよくない場合が多いので、自動で削除してくれるTrimをInnerTextとセットで使った方がいいです。
(例)string datetime = doc.DocumentNode.SelectSingleNode("//dd[contains(@class, 'cmnc-publish')]").InnerText.Trim();

⑤DataGridView等に取得したデータを新しい順に表示するアルゴリズム
皆がDataGridViewを使うとは限らないし、ここまでサービスしなくていいかなって思ったんですけど、出血大サービスでコード公開します。
フローチャートを作って提示して終わりにしようとしたのですが、フローチャートを作るのが面倒くさいので、もういっそコードで示すはって感じです。
※大枠が分かる所だけ残して、その他の処理は全部削除しています。実際はすごくガチャガチャ色々やってます。
20200710メディア監視ソース

ポイントは以下の通りです。
253行目:タイトルをキーにしてて、ニュースで取得したタイトルと同じのがDataGridViewにあったら追加しないってだけ
257行目:一回目(DataGridViewにデータがない)は、取得したデータを上から順番にAddで追加して、二回目以降(DataGridViewにデータがある)はAddだと一番下に追加されちゃうので、一番上から順に追加するためにInsertにしています。
※Insertする行番号(rowindex)は0でもいいけど、より精密に時系列でニュースを並べたいなら、追加した行数をカウントする変数(246・272行参照)を使ってください。
280行目:キーが重複したら処理を終わるかどうかで、コメントで詳しく書いている通りで、何気に重要です。
273行目:DataGridViewに行を追加する処理が終わったら、1行毎に
 mediaDgv.Refresh();
で、画面表示を一度更新しておいた方がいいです。これがないと全部の処理が終わってから表示が更新されるので、ちゃんと動いているか、今どこを処理しているのかが分からないです。

⑥パラレス(同時)処理について
処理を早くしようと思えば、パラレス処理が考えられます。
例えばチェックしているHPの数が100ある場合、上から順番に処理してたら、100番目のHPをチェックするのは凄く後になってしまいます。
そういう場合は処理するHPを配列系の変数で保有して、以下のようにパラレスのループで回せば、100のHPに一斉に処理を行ってくれるので凄く早くなります。
ループをParallelクラスで並列処理にするには?[C#/VB]
ループを使わない場合は以下のHPが参考になります。
C# 並行・並列プログラミング パターン集

※「④メディア情報リアルタイムチェック」には実装してなくて、多分実装したらDataGridViewの表示とか見づらくなる上に、同じDataGridViewに対して、同時に更新処理が走るので、バグが起きそうなので実装しないです。ただし、「②企業HP更新リアルタイムチェック」はチェックするHPの数が膨大になるので、パラレス処理は必須となります。

※WEBスクレイピング対策等で、多重アクセスを禁止しているWEBサーバの設定にしているサイトもあるので、そういうサイトでパラレルで同時にアクセスするとエラーとなるので注意して下さいね。株探とかそういう設定だったはずです。

⑦アプリの設定値の保有方法

設定値(今回の例で言えば、「更新チェックを行う間隔」「通知音」「監視ワード」)をどのように保有するかは常に開発者の悩みの種です。
だって、アプリを起動する度に、前の設定が消えてたり、デフォルト値に戻ってたら嫌でしょ。
そういう時に使う、昔からWindowsに用意されている仕組みがレジストリなのですが、PCに詳しい人は、これを聞いただけで嫌になりますよね。
レジストリにはWindowsOSの超重要な設定もあるため、詳しい人程、気軽にいじりたくないのです。
このような、適当に作る便利アプリでレジストリを使うべきではありません。
そこで、昔のプログラマはアプリの起動exeのあるディレクトリにiniファイルというテキストファイルを作って、そこに設定値を保存しておいて、アプリ起動時に読み込む処理をしていました。
それと全く同じ機能を提供してくれているのが、Properties.Settingsクラスとなります。
↓使い方は色んなHPで紹介されてますが、どうも、内容が古かったり、微妙に塩漬けマンが使ってるのと違うような・・・
「アプリケーション構成ファイル」を使用して設定を読み込む
「アプリケーション構成ファイル」を編集する
Visual Studioでアプリケーションの設定を保存する
App.configによる初期データの読み込み

んで、これって上記のリンクのやり方でApp.configを作ったら、ソリューションエクスプローラーに「App.config」が増えています。
中身はこんな感じですが、キーは勿論自分で好きなのを作ります。
↓以下の画像のコメントに書いてますが、アプリを再起動しないと設定値が反映されない定数っぽいのはappSettingsを使って、アプリを再起動しなくても設定が反映される変数っぽいのはuserSettingsを使います。この二種類は用途が違うので注意して下さい。
20200706AppConfig.jpg

んで、さらに言うと、これってソリューションエクスプローラーの「Properties」→「Settings.settings」と連動しています。
20200706Settings.jpg

んで、さらにさらに言うと、これって実は、エクスプローラで実行ファイルがあるディレクトリを覗いたら、「~~~.exe.config」という物理ファイルで存在してて、中身を見たら、「App.config」と全く同じ形式で、設定値が保存されている事が分かります。
20200706Config.jpg

そして、Properties.Settingsクラスの実際の使い方です。
1.設定を変更して保存する場合
 Properties.Settings.Default.■■■(自分で作ったキー) = ●●●(設定値);
 Properties.Settings.Default.Save();
 ←これを忘れがち。忘れちゃだめよ
2.設定を参照する場合
 string settei = Properties.Settings.Default.■■■(自分で作ったキー);

簡単でしょ?なんかリンク先の説明だと、こんな簡単な風に書いてないので、一応使用例を書いておきました。

尚、「監視ワード」は、単一の値ではなく、複数の値を、しかもそれぞれに「監視ワード」「詳細」「不使用」の三つのデータを持たないといけないので、CSVファイルを作って、そこにデータを保存するようにしています。
C#でのCSVファイルの使い方までは説明しません。
ググればいくらでも出て来るので。

====

これってNoteとかで10000円とかでも売れる内容だと思いません?
思った人は分かってるだろうなっ!(`・ω・´)シャキーン

↓コメントはツイッターからどうぞ ※忙しいと申し訳ありませんが、コメント返信出来ない事があります。
ツイッターアイコン1

↓応援クリックをして頂けたら感謝です。


↓拍手には特に意味はないのですが、ブログ内容の良し悪しパロメータとして使っています(´・ω・`)
2020-06-28 10:55 | カテゴリ:勉強や投資情報
先週のIPO祭りに乗れなかった失意の塩漬けマンですが、今週も小型二つというヤバそうなのがあります。
先週は同じく小型のフィーチャがなんと公募の10倍という理解不能な株価で寄って、一瞬上に行って、大暴落と当たり前の展開でしたが、再来になりそうです。
難しいのは3倍ぐらいで寄ったら突撃していいのか?ってマネゲ的判断。
投資で買いたい人は、当たり前ですが、自分の中での適正株価まで押さないと買ってはいけません。

■6月29日(月)

[6599] : エブレン
【市場】JQS (電気機器)
【事業内容】産業用電子機器・工業用コンピュータの設計・製造・販売
【公募株式数】総計:269,900株(公募:142,900株 / 売出:127,000株)売出株式比率:47.1%
【公開価格】1,350円
【吸収金額】4.18億円
【時価総額】20.7億円
【業績(予想)】売上33億(+6%) 営業利益3.3億(+19%) 営業利益率10% EPS140円 PER9.6倍
【ロックアップ】VCなしでほぼ全員に90日解除条項なしのロックアップ
【塩漬評】
これ、初値高くなりますね。需給短期IPOマネゲいけるかどうかの奴。
↓煽りパワーワード満載のHPだけど、そもそもこの業態の会社は元々こういうのが仕事なので、本来これで株価が上がる材料にはらないけど、煽り屋は頑張りそう
20200626エブレン事業分野

■6月30日(火)

[7351] : グッドパッチ
【市場】東M (サービス業)
【事業内容】UI/UXデザイン支援事業
【公募株式数】総計:659,800株(公募:308,900株 / 売出:350,900株)売出株式比率:53.2%
【公開価格】690円
【吸収金額】5.23億円
【時価総額】49.4億円
【業績(予想)】売上22億(+32%) 営業利益2億(+174%) 営業利益率9.2% EPS30円 PER23倍
【ロックアップ】約26%VC保有で、1.5倍ロックアップ解除
【塩漬評】
デザインの企業だけど、成長率が優秀。公募価格なら勿論買ってホールドでいいけど、小型なので初値高騰するので投資ではセカンダリーでは買えず、参戦するならマネゲ的思考でないとだめで、VC爆弾が怖い所。

↓コメントはツイッターからどうぞ ※忙しいと申し訳ありませんが、コメント返信出来ない事があります。
ツイッターアイコン1

↓応援クリックをして頂けたら感謝です。


↓拍手には特に意味はないのですが、ブログ内容の良し悪しパロメータとして使っています(´・ω・`)
2020-06-21 09:53 | カテゴリ:勉強や投資情報
コロナによる怒涛のIPO撤退戦が終わり、ついにIPO戦線に復帰する勇気ある企業が登場し始めます。
コロナ下でもIPOを強行するには、相当自信のある猛者揃いだと期待したいです。

※数値はこのサイトを参考にしています。
IPO初値予想、読者予想の結果と投票所

■6月24日(水)

[4052] : フィーチャ
【市場】東M (情報・通信業)
【事業内容】画像認識ソフトウェアの開発
【公募株式数】総計:580,000株(公募:150,000株 / 売出:430,000株)売出株式比率:74.1%
【公開価格】520円
【吸収金額】3.46億円
【時価総額】28.1億円
【業績(予想)】売上4億(+42.7%) 営業利益0.72億(黒転) 営業利益率18% EPS7.9円 PER65倍
【ロックアップ】VCが約16%保有でその大部分が1.5倍解除。その他は解除条項なしの180日
【塩漬評】
ITSの画像認識がメインで、トヨタ系の出資を受けており(今どうなってるかは分かりません)
未来創生ファンドからの出資受け入れのお知らせ
代表取締役CTO(32%保有第一位株主)の人が豊田中央研究所出身で、中国人なので、中国企業との業務提携とかのIRも頻繁に出してきそうです。
因みに、21%保有してる第二位株主の人も中国人っぽくて、代表取締役の配偶者で従業員なんですよね。
ちなみに、社長は17%保有でキャノン出身の日本人です。
要は小型でマネゲる要素しかないです。
ただ、会社のイメージはモルフォが近いと思いますが売上が、モルフォ29億に対して、たったの4億なので、かなり小さいですが、小型故に初値が公募の軽く3倍以上になるでしょうから、モルフォの時価総額に近くなる事になり、「割高過ぎでしょ」って言う常識と、「マネゲで上がるでしょ」っていう欲望の戦いの狭間で勇気(蛮勇)が試される展開になりそうです。

[4497] : ロコガイド
【市場】東M (情報・通信業)
【事業内容】チラシ・買い物情報サービス「トクバイ」の運営
【公募株式数】総計:2,346,700株(公募:2,346,700株 / 売出:0株)売出株式比率:0.0%
【公開価格】2,000円
【吸収金額】51.8億円
【時価総額】187億円
【業績(予想)】売上18.7億(+31.5%) 営業利益5億(+47.7%) 営業利益率26% EPS38.53円 PER51倍
※PSR:10倍 40%ルール:57.5
【ロックアップ】第一位・二位株主で94%を保有し、1.5倍解除
【塩漬評】
広告クラウド化のサブスク銘柄としてフェアバリューの公募価格設定になっていると思います。
中型なので早く寄れば買いたいです。
市場シェアは高いですが、逆に言えば成長余地が少ないとも取れます。
ここはカカクコム代表取締役社長、クックパッド代表執行役、くふうカンパニー取締役会長(現職)を歴任したエンジェル投資家、そして菊川怜の旦那として有名な穐田さんが社長で、クックパッドから分割設立された会社です。
尚、コロナで4月上場撤退組で、その時の仮条件なんと2640円だったんですよ・・・コロナで主顧客の小売業界が打撃を受ける悪影響を今回の仮条件1,800円に反映させての大幅ディスカウントですかね・・・どんだけ高値で売りつけようとしてたんだよっ!

[7689] : コパ・コーポレーション
【市場】東M (卸売業)
【事業内容】実演販売を利用した卸売業
【公募株式数】総計:620,000株(公募:320,000株 / 売出:300,000株)売出株式比率:48.4%
【公開価格】2,000円
【吸収金額】14.2億円
【時価総額】58.0億円
【業績(予想)】売上56億(0%) 営業利益7億(-17.9%) 営業利益率12.5% EPS172.94円 PER33倍
【ロックアップ】全員解除条項なしの90日(一部持ち株会だけ180日)
【塩漬評】
今まで順調に成長していたが、おそらくコロナの悪影響今期予想は売上変わらず、減益予想となってますが、それは攻めれないし、その分4月上場予定時(撤退)の仮条件2,600円から1,560円と大幅ディスカウントしてくれての、公募価格2000円となっています。
レジェンド松下さんとかテレビで見た事あるような気がするし、第四位株主にも名を連ねています。
今後は店頭での実演販売が難しくなるけど、その分テレビで補えるか・・・?
中型なのでマネゲ的にはないし、投資的にもコロナ下では厳しいと思われるが、それでも上場してきた勇気に敬意を表します(*`・ω・)ゞ健闘を祈る!

■6月26日(金)

[4496] : コマースOneホールディングス
【市場】東M (情報・通信業)
【事業内容】ECプラットフォーム関連事業
【公募株式数】総計:534,000株(公募:150,000株 / 売出:384,000株)売出株式比率:71.9%
【公開価格】1,600円
【吸収金額】9.82億円
【時価総額】60.1億円
【業績(予想)】売上22.4億(+3.6%) 営業利益3.4億(-8.4%) 営業利益率15% EPS60.6円 PER26倍
【ロックアップ】全員1.5倍解除
【塩漬評】
SaaSでECを提供してると言えば聞こえがいいけど、サブスク企業としては売上成長たったの3.6%でダメダメ。ECサイトと言えばロックオン(現イルグルム)が超有名だったけど、上場後株価が長期低迷したように、ECプラットフォームって儲からないし成長性もないんですよ。だってフリーソフトで誰でも簡単にやろうと思えば出来るし、多数の中小企業も参入してて典型的なレッドオーシャンだからです。
なので、投資的にはないけど、小型なので、「コロナでECが流行る!」みたいな安易な煽りでマネゲ化はするかもですが、初値高くなりそうな上に、ロックアップがないに等しいですよ・・・
因みに、ここもコロナで4月上場撤退組で、その時の仮条件は1,690円で今回1,270円と結構ディスカウントしてくれていますが、正直、この公募価格でも割高感が勝つかな・・・

まとめると、マネゲ的にフューチャ、投資的にはロコガイドって感じかな・・・
まぁ、最近って塩漬けマンがダメだと思ったIPO程マネゲってるので、逆に、コパとコマースが来るかもですが(´・ω・`)ショボーン
てか、久しぶりのIPOだし、金余りとか言われてるし、ご祝儀で全部来るんじゃないですか?(適当)

↓コメントはツイッターからどうぞ ※忙しいと申し訳ありませんが、コメント返信出来ない事があります。
ツイッターアイコン1

↓応援クリックをして頂けたら感謝です。


↓拍手には特に意味はないのですが、ブログ内容の良し悪しパロメータとして使っています(´・ω・`)
2020-06-20 09:05 | カテゴリ:勉強や投資情報
サブスク銘柄ってPSRと40%ルールが大事じゃないですか。
↓井村さんの解説動画です。


でもPSRや40%ルールが取って来れるサービスがないので、自作しちゃいました(*ノω・*)a゙テヘヘ…

①データを取得したい銘柄のデータ準備

取得したいサブスク銘柄のコードが左の列に羅列されたCSVファイルを作る。
↓こんなイメージ
20200617CSV例

んで、実際やるとなると、塩漬けマンだと楽天のマケスピⅡの登録銘柄をエクスポートしたら、こうなるので、これを使います。
20200617CSV例2

とにかく、何でもいいから、データを取得したい銘柄コードを左に羅列しろと。

②自作ツールに上記で作ったCSVファイルを読み込ませる

20200617自作ツール

③業績情報のCSVファイルが出力される

↓自作ツールがこのようなCSVファイルを自動で作成してくれます。
20200619CSV例

④業績情報のCSVファイルをエクセルに読み込む

↓あらかじめPSRや40%ルールを計算する関数とグラスをエクセルで雛型として作っておいて、そこにコピペするだけ
20200617CSV例7

■結果■

エクセルにはあらかじめ関数とグラフを用意しておくので、CSVファイルを取り込んだら、すぐに以下のグラフが自動作成されます。
↓これが欲しかった成果物。
 X軸:PSR・・・左に行くほど割安
 Y軸:40%ルール・・・40超えが投資適格で、上に行くほど優秀
 Y軸(円の大きさ):時価総額

20200619サブスク銘柄分布図
※今期予想を開示していない企業のPSRは前期実績から計算
※今期予想を開示していない企業は40%ルールが取得出来ないので0になっています

■注意点■

・分布図は傾向を分析するための道具で、実際の売買は個別銘柄毎の特性(サブスク比率、市場規模・動向・シェア、参入障壁、直近四半期決算、今ならコロナ恩恵具合等)を調べないといけません。

・サブスク銘柄は異次元の超絶割高となっており、決算は前年比や前四半期比(QonQ)で成長しているだけではダメで、売上の成長率が鈍化したら、通常は決算暴落します。
しかし、今はWithコロナでの成長思惑が強く、そうなりません。

(例)前期比の成長率が鈍化しているパターン
↓一見前期比で売上が成長しているように見えますが・・・
HENNGE年毎は成長しているが成長率鈍化
↓成長率をちゃんと見ると、20%から19%に鈍化しているし、そもそも毎年鈍化していっています
HENNGE年毎は成長しているが成長率鈍化2
これ、HENNGEなんですけど、コロナ恩恵テレワークという事で、成長率鈍化よりも期待が勝っての暴騰となっていますし、実際HPを見る限り、WITHコロナで成長しそうなサービスをやっています。

(例)前四半期の成長率が鈍化しているパターン
↓一見前四半期比(QonQ)で成長しているように見えます。
※これ株探ですが、株探は前年同期比(YonY)しか表示しないので、サブスク銘柄はそれを見ても意味なくて、QonQを自分で計算しないといけないので注意して下さい。
すらら四半期成長率鈍化
↓成長率を計算すると、成長率鈍化しているのが分かります。
すらら四半期成長率鈍化2
因みに、これはすららです。コロナの遠隔教育期待で、成長率鈍化とか誰も気にしない大相場になっています。

■作ってみた感想■

・このツール自体は引け後にシコシコ三日ぐらい(時間にして10時間)で作れました。プログラマなら誰でも簡単に作れます。

・異常値を持っている銘柄があると、グラフにしたらそいつが突出して外にはみ出して、結果見づらくなるので、そういう銘柄は外した方がグラフ的にはいい感じになります。

・この例ではPSRと40%ルールを取得するのを目的にしているのですが、あらゆるファンダ情報、テクニカル情報を取ってこようと思ったら取って来れるので、何でも出来ますが、それは普通に証券会社のHPのスクリーニングを使えばいいだけだと思います。

・売上成長率と営業利益は年毎の成長率を見ていますが、短期的に実用的にするには四半期のQonQを見ないとですよね。例えば、通期予想だと年10%成長だったので無視されていた銘柄が、四半期決算でQonQで20%成長に化けてて、決算後暴騰している銘柄ありますが、そういうのが分からないです。ただ、そのデータまで取ってこようと思うと、データ数が最大72増えるんですよ・・・そんな膨大なCSV見たくないですよね。まぁ使っていないデータ(経常利益、最終利益、EPS等)を取ってこないようにすればいいだけですけど。

■蛇足■

久しぶりにプログラムをしたら、あら不思議、楽しくて、さくさく作れました。
どうしてプログラムが楽しかったかと言うと、今って名所史跡巡りの動画を作ってて、これが凄く苦痛だからです。
前会社の上司に言われた事を思い出しました。
「仕事が辛かったら、仕事より辛い事を作れば仕事が楽になる」
動画編集が辛すぎて、それに比べたら、プログラムはたまにやる分には、頭を使ってパズルゲームを解くような感じだから楽しいですよね。

その辛い動画編集を頑張っている、次発表しようと思っている名所史跡巡り動画は凄いですよ!
乞うご期待!!・・・ハードル上げてしまった(´・ω・`)ショボーン

↓コメントはツイッターからどうぞ ※忙しいと申し訳ありませんが、コメント返信出来ない事があります。
ツイッターアイコン1

↓応援クリックをして頂けたら感謝です。


↓拍手には特に意味はないのですが、ブログ内容の良し悪しパロメータとして使っています(´・ω・`)
2020-06-13 08:23 | カテゴリ:勉強や投資情報
バイデン大統領が誕生したらオバマ時代の副大統領だったので、オバマ時代への回帰政策となりそうです。

・移民は成長の原動力で受入→DACA復活
・銃規制
・イラン核合意復帰(イランが合意を守れば)→中東安定
・地球温暖化積極的→パリ協定復帰・再生可能エネルギー投資拡大で温室効果ガスの排出量を2050年までに実質的にゼロ
・TPP再交渉 ※労働者層に自由貿易に対する不安感があるため
・オバマケア拡充 ※極端な国民皆保険を唱えていたサンダース陣営を取り込むため
・国際協調路線→WHO復帰
・対中強硬路線は継続 ※関税はなくなるかもだが、世論が反中国のためと香港の人権保護のため
・労働者、中小零細企業を保護 ※民主党の大きな政府方針のため
・増税路線→法人税28%、個人所得税39.6%
・ドッド・フランク法支持
・学生ローン返済負担の軽減・免除

なんとなく、バイデン政策によって株価が下がるというより、トランプ政策によって必要以上に株価が上がっていた部分があったら、その分だけ株価は下がるイメージですね。
多分一番株価に悪影響を与えるのはオバマケア拡充予算のための増税。
懸念点はそこぐらいかなって思います。

結論として、トランプ、バイデン、どっちが当選してもいいような気がするんですけど・・・バイデンが勝ったら、とりあえずバイデンショックは起きるでしょうね。

↓コメントはツイッターからどうぞ ※忙しいと申し訳ありませんが、コメント返信出来ない事があります。
ツイッターアイコン1

↓応援クリックをして頂けたら感謝です。


↓拍手には特に意味はないのですが、ブログ内容の良し悪しパロメータとして使っています(´・ω・`)