20231116 6:55
信用リスクモデル
住宅ローンの信用リスクを評価するためには、借り手がデフォルトする可能性を予測するモデルなどが用いられます。以下に、住宅ローンの信用リスクモデリングに使用される主なモデルをいくつか紹介します。
-
ロジスティック回帰モデル:
ロジスティック回帰は貸し出しの結果をデフォルトする/しないの2値として扱います。各ローンの特性や借り手の属性を説明変数として使用し、デフォルトの確率を推定します。 -
プロビットモデル:
プロビットモデルも貸し出しの結果を二値として扱いますが、誤差項が正規分布に従うという仮定に基づいています。ロジスティック回帰と同様に、デフォルトの確率を推定します。 -
トービットモデル:
連続変数の一部が観測されない(例えば、返済額が特定の閾値以下の場合にゼロとして記録される)場合に適用されます。デフォルトの確率だけでなく、損失の大きさについても同時に推定することができます。 -
マートンモデル:
企業のデフォルトリスクをモデル化するために開発されましたが、住宅ローンにも適用できます。このモデルでは、企業の資産の価値が負債を下回る確率を推定することにより、デフォルト確率を計算します。 -
生存分析モデル:
生存分析は、デフォルト・早期返済が発生するまでの時間を分析します。コックス比例ハザードモデルは、生存分析においてよく用いられる手法の一つです。 -
判別分析:
財務指標などの変数を用いて、デフォルトする企業としない企業のグループ間での差異を識別します。 -
人工知能と機械学習モデル:
近年では、ランダムフォレスト、サポートベクターマシン、ニューラルネットワークなどの高度な機械学習技術が信用リスクの評価に使用されています。これらのモデルは非線形関係や複雑な相互作用を捉えることができ、精度の高い予測を提供する可能性があります。
これらのモデルは、単独で使用されることもあれば、より包括的なリスク評価のために組み合わせて使用されることもあります。モデルの選択は、分析の目的、データの可用性、計算能力、規制の要件などによって異なります。
また、次のようなモデルも使われます。
-
信用スコアモデル:
個人のクレジットヒストリー、財務情報、その他の要因から信用スコアを計算し、ローンの承認や利率決定に使用します。FICOスコアなどの信用スコアは、住宅ローンの審査において広く採用されており、借り手の信用リスクを迅速に評価するための標準的な手段です。 -
CreditMetrics:
ポートフォリオの価値の変動を測定し、信用リスクの影響を評価します。 -
CreditRisk+:
ポアソン分布または負の二項分布を使用して信用リスクイベントをモデル化します。 -
ガウス共分散モデル:
ポートフォリオレベルでの信用リスクの相関関係をモデル化するために使用されます。
また、複合ポアソンモデルは、上記リストの中で直接的に名前が挙げられているわけではありませんが、CreditRisk+ モデルに類似していると考えることができます。複合ポアソン過程は、イベントの発生回数をポアソン分布でモデル化し、各イベントに関連する量(例えば損失の大きさ)を別の確率分布でモデル化する手法です。
具体的には、複合ポアソンモデルは、以下の2つの主要な要素から成ります:
-
ポアソン過程:
デフォルトのような信用リスクイベントの発生回数をモデル化するためにポアソン分布を使用します。これは、通常、イベントが独立しており、一定期間内にランダムに発生する場合に適しています。 -
損失分布:
各イベント(この文脈では各デフォルトイベント)に関連する損失の大きさをモデル化するために、正規分布、対数正規分布、ガンマ分布などの別の確率分布を使用します。
この複合モデルは、金融機関が保有するローンポートフォリオの予想損失や予想外の損失(Unexpected Loss, UL)を計算するために用いられることがあります。特に、ローンポートフォリオ全体の信用リスクの分析や、リスク資本の計算に使用されることがあります。
複合ポアソンモデルは、デフォルトイベントの頻度とそれに関連する金融損失の両方を捉えるため、住宅ローンのポートフォリオリスクを評価する上で有用なツールとなり得ます。
FICOスコアとは?
FICOスコアは、アメリカのFair Isaac Corporationによって開発されたクレジットスコアリングシステムで、個人の信用リスクを評価するために広く使用されています。FICOスコアは、個人が将来的に貸付金を期日までに返済する確率を表す数値で、300から850までの範囲でスコアリングされます。高いスコアはより低いリスクを示し、通常、より良い信用条件を得ることができます。
FICOスコアの計算には以下の5つの主要な要素が含まれます:
-
支払い履歴 (Payment History) - 35%:
-
負債の量 (Amounts Owed) - 30%:
-
クレジットヒストリーの長さ (Length of Credit History) - 15%:
-
新規クレジット (New Credit) - 10%:
-
クレジットの種類 (Types of Credit in Use) - 10%:
FICOスコアは、住宅ローン、自動車ローン、クレジットカードなどのクレジット製品の審査において、貸し手がリスクを評価するための重要な基準となっています。スコアは定期的に更新され、個人のクレジットレポートに記録されている情報に基づいて算出されます。
個人は自身のFICOスコアを改善するために、時間通りに請求書を支払う、クレジットカードの残高を低く保つ、不必要なクレジットクエリを避けるなどの行動を取ることができます。また、定期的に自分のクレジットレポートを確認し、誤った情報が報告されていないか監視することも重要です。
多面的なリスクを扱うフレームワーク
住宅ローンのリスク管理においては、いくつかの包括的なフレームワークや手法があり、それらは多面的なリスク要因を組み込んでいます。これらのフレームワークは、リスクの測定、モデリング、モニタリング、および緩和のための一連のガイドラインやベストプラクティスを提供します。代表的なものには以下のようなものがあります。
-
バーゼル規制:
バーゼルIII規制は、銀行がデフォルトリスク、市場リスク、および運用リスクに対して保有すべき最低限の資本を規定しています。これらの規制は、リスクの測定と管理のための国際的なフレームワークを提供します。 -
クレジットリスクモデリング:
スコアカードシステムやロジスティック回帰、プロビットモデルなどの評価モデルは、個々のローンのデフォルト確率を推定するために使用されます。こうしたモデルは、バーゼル規制のリスクウェイトの計算にも使われます。 -
経済資本モデル:
金融機関は、ストレステストやリスクベースの資本配分を通じて、自己資本をどのように割り当てるべきかを決定するために経済資本モデルを使用します。これには、バーリューアットリスク(VaR)や条件付きバーリューアットリスク(CVaR)などの手法が含まれます。 -
マクロプルーデンシャル政策:
中央銀行や規制当局は、リスクが経済全体に波及するのを防ぐために、マクロプルーデンシャル政策を実施します。これには、カウンターサイクリカル資本バッファやローン・トゥ・バーリュー(LTV)比率の制限などが含まれます。 -
ポートフォリオ管理手法:
住宅ローンポートフォリオ全体のリスクを評価するために、クレジットリスクの相関や集中度を管理するための手法が使用されます。これには、ローンの多様化やセクター別リスクの管理が含まれます。 -
ストレステストとシナリオ分析:
経済や市場が異なるシナリオ下でどのように振る舞うかを評価するために、ストレステストが実施されます。これにより、極端ながらも現実的な状況下でのポートフォリオの弱点が明らかになります。
これらのフレームワークは、通常、高度な統計的手法、リスクモデリング、および金融工学の概念を含んでおり、リスク管理プロセス全体にわたる統合的なアプローチを提供します。また、これらの手法は定期的に見直され、新しいリスク要因や市場状況に適応するように更新される必要があります。住宅ローンのリスクを総合的に評価し管理するためには、これらのフレームワークを適切に適用し、金融機関の内部政策やプロセスに組み込むことが重要です。
これらのモデルを役割ごとに分類すると、以下のようになります:
デフォルト確率(PD)の推定
- ロジスティック回帰モデル: 個々のローンのデフォルトの有無を予測します。
- プロビットモデル: デフォルトの有無を予測しますが、エラー項が正規分布に従うと仮定します。
- トービットモデル: デフォルトの有無だけでなく、デフォルト時の損失の大きさも同時に推定します。
信用リスクの量的評価
- CreditMetrics: ポートフォリオの信用リスクによる価値の変動を評価します。
- CreditRisk+: クレジットイベント(特にデフォルト)を量的に評価します。
- 複合ポアソン過程: デフォルトイベントの頻度と関連する損失を同時に評価します。
信用リスクの時間的側面の評価
- 生存分析: デフォルトまでの時間や他のイベントの発生までの時間を評価します。
- マートンモデル: 企業の資産の価値が負債を下回る確率を時系列で推定します。
信用スコアリング
- 信用スコアモデル: 個人の信用スコアを計算し、ローンの承認や利率決定に使用します。
複雑な関係性やデータパターンの評価
- 人工知能と機械学習モデル: 非線形関係や複雑なデータパターンを捉えるために使用します。
- 判別分析: デフォルトする企業としない企業の区別を行います。
ポートフォリオリスク管理
- ポートフォリオモデル: ポートフォリオ全体のリスク評価。
- CreditMetrics: ポートフォリオ価値の変動の測定。
- CreditRisk+: ポアソン分布または負の二項分布を使用した信用リスクイベントのモデル化。
- ガウス共分散モデル: ポートフォリオレベルでの信用リスクの相関関係のモデル化。
経済状況の変化に対するリスクの評価
- ストレステストとシナリオ分析: 経済的状況や市場環境の変化がローンポートフォリオに与える影響を評価します。
経済資本と規制準拠
- 経済資本モデル: 予期せぬ損失に対して必要な資本の推定。
- バーゼル規制: 銀行が準備すべき最低資本要件の設定。
- マクロプルーデンシャル政策: 金融システム全体の安定性の確保。
AIと機械学習について
これらのモデルはそれぞれ特定の状況やデータセットに最適化されており、単一のモデルではなく、組み合わせて使用されることが多いです。特に機械学習モデルは、他の統計モデルでは捉えられないパターンを見つけるために有効ですが、解釈が難しいことがあります。そのため、解釈可能性が重要な場合には、より伝統的な統計モデルが選ばれることもあります。
人工知能(AI)と機械学習(ML)モデルを使用して予測できるものは多岐にわたりますが、以下のような予測が一般的です:
-
デフォルトの確率: 借り手がローンを返済できなくなるリスク、つまりデフォルトする確率を予測します。
-
損失額の推定: デフォルトが発生した場合の予想される損失額(Loss Given Default, LGD)を予測します。
-
回収率の予測: デフォルト後に回収できる資産の割合を予測します。
-
早期返済のリスク: 借り手がローンを期限前に全額返済する可能性を予測します。
-
利用額の予測: クレジットラインのうち、どの程度が利用されるかを予測します。
-
市場価値の変動: 不動産の市場価値の変動を予測します。
-
利用者の行動予測: 借り手の支払い行動やローンに関連する選択(例:固定金利と変動金利の選択)を予測します。
AIとMLモデルは、特に以下のような技術を使用してこれらの予測を行います:
-
ランダムフォレスト: 複数の決定木を組み合わせて、より安定した予測を行うアンサンブル学習手法。
-
サポートベクターマシン (SVM): カーネルトリックを使用してデータを高次元空間にマッピングし、最適な境界線を見つけることで分類や回帰を行う。
-
ニューラルネットワーク: 多層のネットワーク構造を通じて複雑な非線形関係をモデル化します。
-
勾配ブースティングマシン: 弱い学習器を順番に改善することで強力な予測モデルを構築するアンサンブル手法。
-
ディープラーニング: 多層ニューラルネットワークを使い、特に大規模なデータセットで複雑なパターンを学習します。
これらのモデルは、非線形の関係や複雑な相互作用を捉える能力があり、従来の統計モデルよりも精度の高い予測を提供する可能性があります。また、大量のデータを処理でき、新しい種類のデータ(例えば、テキストデータや画像データ)を使用して予測を行うこともできます。
データについて
オッズ比
前向き研究(Prospective Study)
まず、(A1, A2) = (収入大, 収入小) と (B1, B2) = (ディフォルトあり, ディフォルトなし) の場合、前向き研究(prospective study)では、ある特定の条件(この場合は収入)を持つ集団を追跡し、特定のアウトカム(ディフォルト)が発生する頻度を観察します。
- $ \theta_1 = P(B1|A_i) $ は、収入が大きい(あるいは小さい)グループにおけるディフォルトの発生確率です。
- $ \theta_2 = P(B2|A_i) $ は、収入が大きい(あるいは小さい)グループにおけるディフォルトが発生しない確率です。
後ろ向き研究(Retrospective Study)
後ろ向き研究(retrospective study)では、アウトカムが既に発生した後で、そのアウトカムと関連があるかもしれない条件(この場合は過去の収入)を振り返って調査します。
- $ \eta_1 = P(A1|B_i) $ は、ディフォルトした(あるいはしなかった)グループの中で、過去に収入が大きかった人の割合です。
- $ \eta_2 = P(A2|B_i) $ は、ディフォルトした(あるいはしなかった)グループの中で、過去に収入が小さかった人の割合です。
確率の意味の違いとその影響
前向き研究では、収入とディフォルトの間の直接的な関連性(因果関係)を探ることが可能です。後ろ向き研究では、ディフォルトした人々の過去の収入分布を調べることになりますが、これは必ずしも因果関係を意味するものではありません。
確率の意味が異なるため、結果の解釈も異なります。前向き研究の確率 $ \theta $ は、ある収入レベルがディフォルトに与える影響を示しますが、後ろ向き研究の確率 $ \eta $ は、ディフォルトした人々の中で収入レベルがどのように分布しているかを示すに過ぎません。したがって、後ろ向き研究からは収入とディフォルトの間に存在するかもしれない関連性のヒントを得ることはできますが、それだけで直接的な因果関係を結論づけることはできません。
実際の研究においては、これらの違いを理解し、適切な統計的手法と厳密な研究デザインを用いて、データの解釈に細心の注意を払う必要があります。また、可能であれば前向き研究を行い、因果関係をより正確に推定することが望ましいです。
はい、オッズ比を使用する場合、前向き研究(prospective study)と後ろ向き研究(retrospective study)の結果は一致することがあります。これは、オッズ比が交絡の影響を受けにくいという性質を持っているためです。前向き研究と後ろ向き研究ではデータを収集する方法が異なるにもかかわらず、オッズ比は両方の研究デザインで同じ数値を与えることが多いです。これはオッズ比が比較的ロバストな統計量であることを意味します。
オッズ比の計算は次のように行います:
$$
\text{オッズ比} = \frac{P(B1|A1) / P(B2|A1)}{P(B1|A2) / P(B2|A2)}
$$
ここで、$ P(B1|A1) $ は収入が大きいグループにおけるディフォルトの発生確率、$ P(B2|A1) $ は収入が大きいグループにおけるディフォルトが発生しない確率です。$ P(B1|A2) $ と $ P(B2|A2) $ はそれぞれ収入が小さいグループにおける同様の確率です。
分析に与える影響:
-
因果関係の推定:
前向き研究と後ろ向き研究で同じオッズ比が得られると、因果関係の推定に自信を持つことができます。これは、異なる研究デザインで同じ結果が得られると、その結果が堅牢であるという証拠になるからです。 -
交絡因子の影響の低減:
オッズ比は交絡因子の影響を受けにくいとされていますが、完全に影響を排除できるわけではありません。交絡因子が存在する場合は、統計的な調整が必要です。 -
データ収集の容易さ:
後ろ向き研究は前向き研究に比べてデータ収集が容易な場合が多く、オッズ比を用いることで、限られたリソースでも信頼性のある結果を得ることが可能になります。 -
選択バイアスの問題:
どちらの研究デザインも選択バイアスの影響を受けやすいため、サンプルの選択方法には注意が必要です。オッズ比が同じでも、バイアスが存在すると誤った結論に導かれる可能性があります。 -
結果の一般化:
オッズ比が異なる研究デザインで同じ結果を示す場合、結果を一般化する根拠が強まります。しかし、研究サンプルが母集団を適切に代表しているかどうかが重要です。
オッズ比を使用する際には、これらの点を考慮し、適切な解釈を行うことが重要です。また、可能な限り他の統計的手法やデータ補正を行い、結果の信頼性を高める努力が必要です。
観測データと倒産確率
観測データと実験データ(特にランダム化比較試験)を使う際の因果関係の推定に関する議論は、非常に重要です。ここでのポイントは、ランダム化比較試験が因果関係を明確にするのに最も効果的であるという点です。一方、観測データを用いる場合、因果関係の推定はより複雑であり、注意が必要です。
実験データ(ランダム化比較試験)
- ランダム化: 対象者をランダムに実験群と対照群に割り当てることで、未観測の共変量によるバイアスを最小限に抑える。
- 因果関係の推定: 治療効果や介入の効果を直接的に推定でき、因果関係の強い根拠を提供する。
観測データ
- 非ランダム化: 対象者の割り当てがランダムではなく、未観測の共変量や選択バイアスの影響を受ける可能性がある。
- オッズ比: オッズ比は2値問題(例えば倒産する/しない)における関連性を示すが、必ずしも因果関係を意味するものではない。
住宅ローンの倒産確率と観測データ
- 観測データ: 住宅ローンの倒産確率を観測データから推定する際、多くの潜在的な共変量や外的要因が存在する可能性がある。
- 因果推定の限界: オッズ比を用いることで関連性は示せるが、他の要因(例えば経済状況、個人の信用履歴など)が倒産確率に影響を与える可能性があるため、純粋な因果関係を断定するのは困難。
- 統計的手法の応用: 因果関係をよりよく理解するために、統計的手法(例えば傾向スコアマッチング、多変量回帰分析など)を用いて共変量を調整することが有効。
結論
- 観測データを用いても、因果関係の推定には限界があります。オッズ比は関連性を示すが、他の要因の影響を完全に除外することはできません。
- 実験データ(特にランダム化比較試験)は、より強力な因果関係の証拠を提供します。
- 因果関係を明確にするためには、統計的手法を適切に適用し、可能な限り多くの共変量を考慮に入れることが重要です。
信用リスクの分析で使用される分布
信用リスク分析においては、異なる確率分布が特定の種類のデータや状況に応じて使用されます。以下に、最も一般的に使用される確率分布をいくつか挙げます:
-
正規分布 (Gaussian distribution):
- クレジットスコアや信用スプレッドの分布。
- 多くのポートフォリオ理論やリスクモデルで仮定される。
- リスク指標(VaRなど)の計算に使用される。
-
対数正規分布 (Log-normal distribution):
- 金融資産のリターンや金利の変動が対数正規分布に従うとされる。
- リスクモデリングにおいて、変数が負になることがない場合に適用される。
-
ポアソン分布 (Poisson distribution):
- クレジットイベント(例えばデフォルト)の発生回数のモデリング。
- 低頻度で独立したイベントの発生をモデル化するのに適している。
-
負の二項分布 (Negative binomial distribution):
- ポアソン分布よりも分散が大きいカウントデータをモデル化する際に使用される。
-
ベータ分布 (Beta distribution):
- 0と1の間の値を取る比率や確率をモデル化するのに使用される。
- 例えば、回収率の分布のモデリングに使われる。
-
エクスポネンシャル分布 (Exponential distribution):
- 生存分析やハザードモデリングにおいて、時間間隔の分布をモデル化するのに使われる。
-
ガンマ分布 (Gamma distribution):
- 待ち時間や金融損失の大きさなど、連続的な非負の変数をモデル化するのに適している。
-
ウェイブル分布 (Weibull distribution):
- 生存時間のデータや信頼性分析によく使用される。
-
t分布 (t-distribution):
- 小樣本データや金融リターンのモデリングに使われることがある。
これらの分布は、信用リスクを含む金融リスクのさまざまな側面をモデル化するために使用されます。データの特性と分析の目的に応じて適切な分布を選択し、場合によってはこれらの分布を組み合わせて複雑なリスクモデルを構築します。信用リスクモデリングにおいては、単一の分布よりもリスク要因の相互作用を捉えるために、多次元の分布や複数の分布を組み合わせたモデルがしばしば使用されます。
住宅ローンの信用リスクをロジスティック回帰で分析する簡単なコード
住宅ローンに関連する倒産確率を予測するためのロジスティック回帰モデルを構築するためには、まず関連するデータセットが必要です。ここでは、架空の例として、住宅ローンに関連するいくつかの特徴(たとえば、年収、ローン残高、年齢、雇用期間など)と、倒産したかどうか(1: 倒産、0: 倒産していない)というターゲット変数を想定します。
上記のコードでは、まず架空のデータを生成して、そのデータを使用してロジスティック回帰モデルを構築しています。このモデルでは、倒産(Default
)が目的変数となり、年収(Income
)、ローン残高(LoanBalance
)、年齢(Age
)、雇用期間(EmploymentDuration
)が説明変数となります。
import pandas as pd
import numpy as np
import statsmodels.api as sm
# 架空のデータを生成
np.random.seed(0)
n_samples = 1000
data = {
'Income': np.random.normal(50000, 15000, n_samples), # 年収
'LoanBalance': np.random.normal(200000, 50000, n_samples), # ローン残高
'Age': np.random.normal(45, 10, n_samples), # 年齢
'EmploymentDuration': np.random.normal(10, 5, n_samples), # 雇用期間
'Default': np.random.binomial(1, 0.2, n_samples) # 倒産(0: 倒産していない, 1: 倒産)
}
df = pd.DataFrame(data)
# 目的変数(Default)と説明変数を分ける
X = df[['Income', 'LoanBalance', 'Age', 'EmploymentDuration']]
y = df['Default']
# ロジスティック回帰モデルの構築
X = sm.add_constant(X) # 定数項の追加
model = sm.Logit(y, X)
result = model.fit()
# 結果の表示
print(result.summary())
scikit-learn
のロジスティック回帰モデルとstatsmodels
のロジスティック回帰モデル(またはロジット回帰モデル)は、基本的には同じ統計的手法を使用していますが、いくつかの点で異なります。以下に主な違いを挙げます。
scikit-learn
のロジスティック回帰
-
目的:
scikit-learn
は機械学習に重点を置いており、主に予測性能の最適化に注力しています。 - 正則化: デフォルトではL2正則化(リッジ回帰)が適用されます。これはモデルの過学習を防ぐために使用されます。
-
インターフェース: 主にPythonの
fit
,predict
,score
などのメソッドを使用し、機械学習の一般的なワークフローに沿った設計になっています。 -
詳細な統計出力:
scikit-learn
は予測精度に重点を置いているため、統計的な詳細(p値、信頼区間など)は提供されません。
statsmodels
のロジスティック(ロジット)回帰
-
目的:
statsmodels
は統計分析に重点を置いており、詳細な統計的出力とモデルの解釈に焦点を当てています。 - 正則化: デフォルトでは正則化は適用されません。モデルの統計的推定により重点を置いています。
-
インターフェース:
statsmodels
は統計的な分析を重視しており、より詳細な統計的出力(係数の推定値、標準誤差、p値、信頼区間など)を提供します。 - 詳細な統計出力: 係数の推定値、標準誤差、p値、信頼区間など、統計的な解釈に役立つ多くの情報が出力されます。
結論
- 予測性能に重点を置く場合、またはデータに適用される正則化が必要な場合は
scikit-learn
が適しています。 - 統計的な解釈や詳細な統計的分析が必要な場合は
statsmodels
が適しています。 - 両者の回帰係数の値は、正則化の有無やその他の設定によって異なる場合があります。
コックス比例ハザードモデルの住宅ローンへの応用
コックス比例ハザードモデルを用いてデフォルト(倒産)確率をモデリングするには、各企業の追跡期間と、その期間内でのデフォルト発生の有無(イベント発生)を含むデータが必要です。データには、企業ごとの追跡期間(例:追跡年数)、デフォルト発生の有無(1: デフォルト発生、0: 発生せず)、およびその他の関連する変数(年収、ローン残高、年齢など)が含まれます。
このコードでは、追跡期間(Duration
)とイベント発生(Event
)をモデルの目的変数として、年収(Income
)、ローン残高(LoanBalance
)、年齢(Age
)を説明変数として使用しています。
import pandas as pd
import numpy as np
import statsmodels.api as sm
from statsmodels.duration.hazard_regression import PHReg
# 架空のデータを生成
np.random.seed(0)
n_samples = 1000
data = {
'Duration': np.random.exponential(10, n_samples), # 追跡期間(年)
'Event': np.random.binomial(1, 0.2, n_samples), # デフォルトイベント(1: 発生, 0: 発生せず)
'Income': np.random.normal(50000, 15000, n_samples), # 年収
'LoanBalance': np.random.normal(200000, 50000, n_samples), # ローン残高
'Age': np.random.normal(45, 10, n_samples) # 年齢
}
df = pd.DataFrame(data)
# 説明変数と追跡期間、イベント発生の設定
X = df[['Income', 'LoanBalance', 'Age']]
duration = df['Duration']
event = df['Event']
# コックス比例ハザードモデルの構築
model = PHReg(duration, X, status=event)
result = model.fit()
# 結果の表示
print(result.summary())
Python3ではじめるシステムトレード【第2版】環境構築と売買戦略
「画像をクリックしていただくとpanrollingのホームページから書籍を購入していただけます。