# モーニングスター調査レポートの取得
- Python
- Proto
- C#
- Java
- C++
- JavaScript
get_research_morningstar_report(code)
説明
指定銘柄のモーニングスター調査レポートを取得します。スター評価、公正価値、経済的優位性(モート)、不確実性、財務健全性、資本配分、強気/弱気の根拠、アナリスト見解などを含みます
パラメータ
パラメータ 型 説明 code str 銘柄コード 戻り値
パラメータ 型 説明 ret RET_CODE API 呼び出し結果 data dict ret == RET_OK の場合、モーニングスター調査レポートデータの辞書を返す str ret != RET_OK の場合、エラーの説明を返す 返される辞書には以下のフィールドが含まれます:
フィールド 型 説明 rating_type MorningstarRatingType 評価タイプ 0=Unknown、1=Quantitative(定量的評価、システムモデルによる)、2=Qualitative(定性的評価、アナリストによる手動評価)star_rating int モーニングスタースター評価 値 1~5 スターstar_update_time int スター評価更新タイムスタンプ(秒、市場タイムゾーン) star_update_time_str str スター評価更新日付 形式 YYYY-MM-DD、市場タイムゾーンfair_value float 公正価値 fair_value_content dict 公正価値分析、StringWithUpdateTime フィールド表参照 economic_moat_label str 経済的優位性評価 例: Wide、Narrow、Noneeconomic_moat_content dict 経済的優位性分析、StringWithUpdateTime フィールド表参照 uncertainty_label str 不確実性評価 例: Low、Medium、High、Very High、Extremeuncertainty_content dict 不確実性分析、StringWithUpdateTime フィールド表参照 financial_health_label str 財務健全性評価 financial_health_content dict 財務健全性分析、StringWithUpdateTime フィールド表参照 analyst_report_by_line list アナリスト署名リスト 例: ["William Kerwin, CFA"]analyst_report_update_time int アナリストレポート更新タイムスタンプ(秒、市場タイムゾーン) analyst_report_update_time_str str アナリストレポート更新日付 形式 YYYY-MM-DD、市場タイムゾーンbull_say list 強気の根拠リスト、各項目は StringWithUpdateTime フィールド表参照 bear_say list 弱気の根拠リスト、各項目は StringWithUpdateTime フィールド表参照 capital_allocation_label str 資本配分評価 capital_allocation_content dict 資本配分分析、StringWithUpdateTime フィールド表参照 analyst_note_title dict アナリストノートのタイトル、StringWithUpdateTime フィールド表参照 analyst_note_content dict アナリストノートの内容、StringWithUpdateTime フィールド表参照 investment_thesis_content dict 投資論点、StringWithUpdateTime フィールド表参照 fundamentals_content dict ファンダメンタルズレポート、StringWithUpdateTime フィールド表参照 valuation_content dict バリュエーションレポート、StringWithUpdateTime フィールド表参照 pdf_url str PDF レポートダウンロード URL StringWithUpdateTime フィールド(ネストされたテキスト構造):
フィールド 型 説明 context str テキスト内容 update_time int 更新タイムスタンプ(秒、市場タイムゾーン) update_time_str str 更新日付 形式 YYYY-MM-DD、市場タイムゾーン
Example
import json
from futu import *
quote_ctx = OpenQuoteContext(host='127.0.0.1', port=11111)
ret, data = quote_ctx.get_research_morningstar_report("HK.00700")
if ret == RET_OK:
print(json.dumps(data, indent=2, ensure_ascii=False))
else:
print('error:', data)
quote_ctx.close()
2
3
4
5
6
7
8
9
10
- Output
{
"rating_type": 2,
"star_rating": 4,
"star_update_time": 1778257800,
"star_update_time_str": "2026-05-09",
"fair_value": 800.0,
"fair_value_content": {
"context": "Our fair value estimate for Tencent is HKD 800 per share. About 85% of our valuation comes from Tencent’s core business, while ...
"update_time": 1755138060,
"update_time_str": "2025-08-14"
},
"economic_moat_label": "Wide",
"economic_moat_content": {
"context": "Tencent's wide moat is primarily based on network effects around its massive user base. In addition, Tencent possesses ...
"update_time": 1766457150,
"update_time_str": "2025-12-23"
},
"uncertainty_label": "High",
"uncertainty_content": {
"context": "Our Morningstar Uncertainty Rating for Tencent is High due to regulatory risks and competitive intensity across...
"update_time": 1766457180,
"update_time_str": "2025-12-23"
},
//...
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# Qot_GetResearchMorningstarReport.proto
説明
モーニングスター調査レポートの取得
パラメータ
message C2S
{
required Qot_Common.Security security = 1; // 銘柄
}
message Request
{
required C2S c2s = 1;
}
2
3
4
5
6
7
8
9
- 銘柄構造については Security を参照
- 戻り値
// 更新時刻付きテキスト内容
message StringWithUpdateTime {
optional string context = 1; // テキスト内容
optional int64 updateTime = 2; // 更新タイムスタンプ(秒)
optional string updateTimeStr = 3; // 更新時刻文字列、形式 YYYY-MM-DD、市場タイムゾーン
}
message S2C
{
optional Qot_Common.MorningstarRatingType ratingType = 1; // 評価タイプ(Qot_Common.MorningstarRatingType 参照)
optional int32 starRating = 2; // モーニングスタースター評価、値 1-5 スター
optional int64 starUpdateTime = 3; // スター評価更新タイムスタンプ(秒)
optional string starUpdateTimeStr = 4; // スター評価更新時刻文字列、形式 YYYY-MM-DD、市場タイムゾーン
optional double fairValue = 5; // 公正価値
optional StringWithUpdateTime fairValueContent = 6; // 公正価値分析テキストと更新時刻
optional string economicMoatLabel = 7; // 経済的優位性評価、例: Wide、Narrow、None
optional StringWithUpdateTime economicMoatContent = 8; // 経済的優位性分析テキストと更新時刻
optional string uncertaintyLabel = 9; // 不確実性評価、例: Low、Medium、High、Very High、Extreme
optional StringWithUpdateTime uncertaintyContent = 10; // 不確実性分析テキストと更新時刻
optional string financialHealthLabel = 11; // 財務健全性評価
optional StringWithUpdateTime financialHealthContent = 12; // 財務健全性分析テキストと更新時刻
repeated string analystReportByLine = 13; // アナリスト署名リスト、例: ["William Kerwin, CFA"]
optional int64 analystReportUpdateTime = 14; // アナリストレポート更新タイムスタンプ(秒)
optional string analystReportUpdateTimeStr = 15; // アナリストレポート更新時刻文字列、形式 YYYY-MM-DD、市場タイムゾーン
repeated StringWithUpdateTime bullSay = 16; // 強気の根拠リスト
repeated StringWithUpdateTime bearSay = 17; // 弱気の根拠リスト
optional string capitalAllocationLabel = 18; // 資本配分評価
optional StringWithUpdateTime capitalAllocationContent = 19; // 資本配分分析テキストと更新時刻
optional StringWithUpdateTime analystNoteTitle = 20; // アナリストノートのタイトルと更新時刻
optional StringWithUpdateTime analystNoteContent = 21; // アナリストノートの内容テキストと更新時刻
optional StringWithUpdateTime investmentThesisContent = 22; // 投資論点テキストと更新時刻
optional StringWithUpdateTime fundamentalsContent = 23; // ファンダメンタルズレポートテキストと更新時刻
optional StringWithUpdateTime valuationContent = 24; // バリュエーションレポートテキストと更新時刻
optional string pdfUrl = 25; // PDF レポートダウンロード URL
}
message Response
{
required int32 retType = 1 [default = -400]; // 返却結果、Common.RetType 参照
optional string retMsg = 2; // 返却結果説明
optional int32 errCode = 3; // エラーコード
optional S2C s2c = 4;
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
- API 呼び出し結果については RetType を参照
- モーニングスター評価タイプについては MorningstarRatingType を参照
プロトコル ID
3231
uint GetResearchMorningstarReport(QotGetResearchMorningstarReport.Request req);
virtual void OnReply_GetResearchMorningstarReport(FTAPI_Conn client, uint nSerialNo, QotGetResearchMorningstarReport.Response rsp);
説明
モーニングスター調査レポートの取得
パラメータ
message C2S
{
required Qot_Common.Security security = 1; // 銘柄
}
message Request
{
required C2S c2s = 1;
}
2
3
4
5
6
7
8
9
- 銘柄構造については Security を参照
- 戻り値
// 更新時刻付きテキスト内容
message StringWithUpdateTime {
optional string context = 1; // テキスト内容
optional int64 updateTime = 2; // 更新タイムスタンプ(秒)
optional string updateTimeStr = 3; // 更新時刻文字列、形式 YYYY-MM-DD、市場タイムゾーン
}
message S2C
{
optional Qot_Common.MorningstarRatingType ratingType = 1; // 評価タイプ(Qot_Common.MorningstarRatingType 参照)
optional int32 starRating = 2; // モーニングスタースター評価、値 1-5 スター
optional int64 starUpdateTime = 3; // スター評価更新タイムスタンプ(秒)
optional string starUpdateTimeStr = 4; // スター評価更新時刻文字列、形式 YYYY-MM-DD、市場タイムゾーン
optional double fairValue = 5; // 公正価値
optional StringWithUpdateTime fairValueContent = 6; // 公正価値分析テキストと更新時刻
optional string economicMoatLabel = 7; // 経済的優位性評価、例: Wide、Narrow、None
optional StringWithUpdateTime economicMoatContent = 8; // 経済的優位性分析テキストと更新時刻
optional string uncertaintyLabel = 9; // 不確実性評価、例: Low、Medium、High、Very High、Extreme
optional StringWithUpdateTime uncertaintyContent = 10; // 不確実性分析テキストと更新時刻
optional string financialHealthLabel = 11; // 財務健全性評価
optional StringWithUpdateTime financialHealthContent = 12; // 財務健全性分析テキストと更新時刻
repeated string analystReportByLine = 13; // アナリスト署名リスト、例: ["William Kerwin, CFA"]
optional int64 analystReportUpdateTime = 14; // アナリストレポート更新タイムスタンプ(秒)
optional string analystReportUpdateTimeStr = 15; // アナリストレポート更新時刻文字列、形式 YYYY-MM-DD、市場タイムゾーン
repeated StringWithUpdateTime bullSay = 16; // 強気の根拠リスト
repeated StringWithUpdateTime bearSay = 17; // 弱気の根拠リスト
optional string capitalAllocationLabel = 18; // 資本配分評価
optional StringWithUpdateTime capitalAllocationContent = 19; // 資本配分分析テキストと更新時刻
optional StringWithUpdateTime analystNoteTitle = 20; // アナリストノートのタイトルと更新時刻
optional StringWithUpdateTime analystNoteContent = 21; // アナリストノートの内容テキストと更新時刻
optional StringWithUpdateTime investmentThesisContent = 22; // 投資論点テキストと更新時刻
optional StringWithUpdateTime fundamentalsContent = 23; // ファンダメンタルズレポートテキストと更新時刻
optional StringWithUpdateTime valuationContent = 24; // バリュエーションレポートテキストと更新時刻
optional string pdfUrl = 25; // PDF レポートダウンロード URL
}
message Response
{
required int32 retType = 1 [default = -400]; // 返却結果、Common.RetType 参照
optional string retMsg = 2; // 返却結果説明
optional int32 errCode = 3; // エラーコード
optional S2C s2c = 4;
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
- API 呼び出し結果については RetType を参照
- MorningstarRatingType:0=Unknown、1=Quantitative、2=Qualitative、MorningstarRatingType を参照
- Example
public class Program : FTSPI_Qot, FTSPI_Conn
{
FTAPI_Qot qot = new FTAPI_Qot();
public Program()
{
qot.SetClientInfo("csharp", 1);
qot.SetConnCallback(this);
qot.SetQotCallback(this);
}
public void Start()
{
qot.InitConnect("127.0.0.1", (ushort)11111, false);
}
public void OnInitConnect(FTAPI_Conn client, long errCode, String desc)
{
Console.Write("Qot onInitConnect: ret={0} desc={1} connID={2}\n", errCode, desc, client.GetConnectID());
if (errCode != 0)
return;
QotCommon.Security sec = QotCommon.Security.CreateBuilder()
.SetMarket((int)QotCommon.QotMarket.QotMarket_HK_Security)
.SetCode("00700")
.Build();
QotGetResearchMorningstarReport.C2S c2s = QotGetResearchMorningstarReport.C2S.CreateBuilder()
.SetSecurity(sec)
.Build();
QotGetResearchMorningstarReport.Request req = QotGetResearchMorningstarReport.Request.CreateBuilder().SetC2S(c2s).Build();
uint seqNo = qot.GetResearchMorningstarReport(req);
Console.Write("Send QotGetResearchMorningstarReport: {0}\n", seqNo);
}
public void OnDisconnect(FTAPI_Conn client, long errCode)
{
Console.Write("Qot onDisConnect: {0}\n", errCode);
}
public void OnReply_GetResearchMorningstarReport(FTAPI_Conn client, uint nSerialNo, QotGetResearchMorningstarReport.Response rsp)
{
Console.Write("Reply: QotGetResearchMorningstarReport: {0} {1}\n", nSerialNo, rsp.ToString());
}
public static void Main(String[] args)
{
FTAPI.Init();
Program qot = new Program();
qot.Start();
while (true)
Thread.Sleep(1000 * 600);
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
- Output
sent seqNo=3
retType: 0
retMsg: ""
errCode: 0
s2c {
ratingType: MorningstarRatingType_Qualitative
starRating: 4
starUpdateTime: 1778257800
starUpdateTimeStr: "2026-05-09"
fairValue: 800
fairValueContent {
context: "Our fair value estimate for Tencent is HKD 800 per share. About 85% of our valuation comes from Tencent's core business, while the remaining 20% comes from its investments. Our valuation for the core business implies a 2025 P/E of 30 times. We discount the firm\'s free cash flows using...
updateTime: 1755138060
updateTimeStr: "2025-08-14"
}
economicMoatLabel: "Wide"
economicMoatContent {
context: "Tencent\'s wide moat is primarily based on network effects around its massive user base. In addition, Tencent possesses secondary moat sources like intangible assets, cost advantage, and switching costs. Given Tencent\'s proven ability to monetize its massive network of users through g...
updateTime: 1766457150
updateTimeStr: "2025-12-23"
}
uncertaintyLabel: "High"
uncertaintyContent {
context: "Our Morningstar Uncertainty Rating for Tencent is High due to regulatory risks and competitive intensity across its core businesses. \n\nIn payments, the 2017 rule that forced third-party providers to park customer reserves in non-interest-bearing central bank accounts--and the later c...
updateTime: 1766457180
updateTimeStr: "2025-12-23"
}
//...
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
int getResearchMorningstarReport(QotGetResearchMorningstarReport.Request req);
void onReply_GetResearchMorningstarReport(FTAPI_Conn client, int nSerialNo, QotGetResearchMorningstarReport.Response rsp);
説明
モーニングスター調査レポートの取得
パラメータ
message C2S
{
required Qot_Common.Security security = 1; // 銘柄
}
message Request
{
required C2S c2s = 1;
}
2
3
4
5
6
7
8
9
- 銘柄構造については Security を参照
- 戻り値
// 更新時刻付きテキスト内容
message StringWithUpdateTime {
optional string context = 1; // テキスト内容
optional int64 updateTime = 2; // 更新タイムスタンプ(秒)
optional string updateTimeStr = 3; // 更新時刻文字列、形式 YYYY-MM-DD、市場タイムゾーン
}
message S2C
{
optional Qot_Common.MorningstarRatingType ratingType = 1; // 評価タイプ(Qot_Common.MorningstarRatingType 参照)
optional int32 starRating = 2; // モーニングスタースター評価、値 1-5 スター
optional int64 starUpdateTime = 3; // スター評価更新タイムスタンプ(秒)
optional string starUpdateTimeStr = 4; // スター評価更新時刻文字列、形式 YYYY-MM-DD、市場タイムゾーン
optional double fairValue = 5; // 公正価値
optional StringWithUpdateTime fairValueContent = 6; // 公正価値分析テキストと更新時刻
optional string economicMoatLabel = 7; // 経済的優位性評価、例: Wide、Narrow、None
optional StringWithUpdateTime economicMoatContent = 8; // 経済的優位性分析テキストと更新時刻
optional string uncertaintyLabel = 9; // 不確実性評価、例: Low、Medium、High、Very High、Extreme
optional StringWithUpdateTime uncertaintyContent = 10; // 不確実性分析テキストと更新時刻
optional string financialHealthLabel = 11; // 財務健全性評価
optional StringWithUpdateTime financialHealthContent = 12; // 財務健全性分析テキストと更新時刻
repeated string analystReportByLine = 13; // アナリスト署名リスト、例: ["William Kerwin, CFA"]
optional int64 analystReportUpdateTime = 14; // アナリストレポート更新タイムスタンプ(秒)
optional string analystReportUpdateTimeStr = 15; // アナリストレポート更新時刻文字列、形式 YYYY-MM-DD、市場タイムゾーン
repeated StringWithUpdateTime bullSay = 16; // 強気の根拠リスト
repeated StringWithUpdateTime bearSay = 17; // 弱気の根拠リスト
optional string capitalAllocationLabel = 18; // 資本配分評価
optional StringWithUpdateTime capitalAllocationContent = 19; // 資本配分分析テキストと更新時刻
optional StringWithUpdateTime analystNoteTitle = 20; // アナリストノートのタイトルと更新時刻
optional StringWithUpdateTime analystNoteContent = 21; // アナリストノートの内容テキストと更新時刻
optional StringWithUpdateTime investmentThesisContent = 22; // 投資論点テキストと更新時刻
optional StringWithUpdateTime fundamentalsContent = 23; // ファンダメンタルズレポートテキストと更新時刻
optional StringWithUpdateTime valuationContent = 24; // バリュエーションレポートテキストと更新時刻
optional string pdfUrl = 25; // PDF レポートダウンロード URL
}
message Response
{
required int32 retType = 1 [default = -400]; // 返却結果、Common.RetType 参照
optional string retMsg = 2; // 返却結果説明
optional int32 errCode = 3; // エラーコード
optional S2C s2c = 4;
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
- API 呼び出し結果については RetType を参照
- MorningstarRatingType:0=Unknown、1=Quantitative、2=Qualitative、MorningstarRatingType を参照
- Example
public class QotDemo implements FTSPI_Qot, FTSPI_Conn {
FTAPI_Conn_Qot qot = new FTAPI_Conn_Qot();
public QotDemo() {
qot.setClientInfo("javaclient", 1);
qot.setConnSpi(this);
qot.setQotSpi(this);
}
public void start() {
qot.initConnect("127.0.0.1", (short)11111, false);
}
@Override
public void onInitConnect(FTAPI_Conn client, long errCode, String desc)
{
System.out.printf("Qot onInitConnect: ret=%b desc=%s connID=%d\n", errCode, desc, client.getConnectID());
if (errCode != 0)
return;
QotCommon.Security sec = QotCommon.Security.newBuilder()
.setMarket(QotCommon.QotMarket.QotMarket_HK_Security_VALUE)
.setCode("00700")
.build();
QotGetResearchMorningstarReport.C2S c2s = QotGetResearchMorningstarReport.C2S.newBuilder()
.setSecurity(sec)
.build();
QotGetResearchMorningstarReport.Request req = QotGetResearchMorningstarReport.Request.newBuilder().setC2S(c2s).build();
int seqNo = qot.getResearchMorningstarReport(req);
System.out.printf("Send QotGetResearchMorningstarReport: %d\n", seqNo);
}
@Override
public void onDisconnect(FTAPI_Conn client, long errCode) {
System.out.printf("Qot onDisConnect: %d\n", errCode);
}
@Override
public void onReply_GetResearchMorningstarReport(FTAPI_Conn client, int nSerialNo, QotGetResearchMorningstarReport.Response rsp) {
if (rsp.getRetType() != 0) {
System.out.printf("QotGetResearchMorningstarReport failed: %s\n", rsp.getRetMsg());
}
else {
try {
String json = JsonFormat.printer().print(rsp);
System.out.printf("Receive QotGetResearchMorningstarReport: %s\n", json);
} catch (InvalidProtocolBufferException e) {
e.printStackTrace();
}
}
}
public static void main(String[] args) {
FTAPI.init();
QotDemo qot = new QotDemo();
qot.start();
while (true) {
try {
Thread.sleep(1000 * 600);
} catch (InterruptedException exc) {
}
}
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
- Output
Qot onInitConnect: ret=0 desc= connID=7459212590244939522
Send Qot_GetResearchMorningstarReport: 2
Receive Qot_GetResearchMorningstarReport: retType: 0
retMsg: ""
errCode: 0
s2c {
ratingType: MorningstarRatingType_Qualitative
starRating: 4
starUpdateTime: 1778257800
starUpdateTimeStr: "2026-05-09"
fairValue: 800.0
fairValueContent {
context: "Our fair value estimate for Tencent is HKD 800 per share. About 85% of our valuation comes from Tencent's core business, while the remaining 20% comes from its investments. Our valuation for the core business implies a 2025 P/E of 30 times. We discount the firm\'s free cash flows using...
updateTime: 1755138060
updateTimeStr: "2025-08-14"
}
economicMoatLabel: "Wide"
economicMoatContent {
context: "Tencent\'s wide moat is primarily based on network effects around its massive user base. In addition, Tencent possesses secondary moat sources like intangible assets, cost advantage, and switching costs. Given Tencent\'s proven ability to monetize its massive network of users through g...
updateTime: 1766457150
updateTimeStr: "2025-12-23"
}
uncertaintyLabel: "High"
uncertaintyContent {
context: "Our Morningstar Uncertainty Rating for Tencent is High due to regulatory risks and competitive intensity across its core businesses. \n\nIn payments, the 2017 rule that forced third-party providers to park customer reserves in non-interest-bearing central bank accounts--and the later c...
updateTime: 1766457180
updateTimeStr: "2025-12-23"
}
//...
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
Futu::u32_t GetResearchMorningstarReport(const Qot_GetResearchMorningstarReport::Request &stReq);
virtual void OnReply_GetResearchMorningstarReport(Futu::u32_t nSerialNo, const Qot_GetResearchMorningstarReport::Response &stRsp) = 0;
説明
モーニングスター調査レポートの取得
パラメータ
message C2S
{
required Qot_Common.Security security = 1; // 銘柄
}
message Request
{
required C2S c2s = 1;
}
2
3
4
5
6
7
8
9
- 銘柄構造については Security を参照
- 戻り値
// 更新時刻付きテキスト内容
message StringWithUpdateTime {
optional string context = 1; // テキスト内容
optional int64 updateTime = 2; // 更新タイムスタンプ(秒)
optional string updateTimeStr = 3; // 更新時刻文字列、形式 YYYY-MM-DD、市場タイムゾーン
}
message S2C
{
optional Qot_Common.MorningstarRatingType ratingType = 1; // 評価タイプ(Qot_Common.MorningstarRatingType 参照)
optional int32 starRating = 2; // モーニングスタースター評価、値 1-5 スター
optional int64 starUpdateTime = 3; // スター評価更新タイムスタンプ(秒)
optional string starUpdateTimeStr = 4; // スター評価更新時刻文字列、形式 YYYY-MM-DD、市場タイムゾーン
optional double fairValue = 5; // 公正価値
optional StringWithUpdateTime fairValueContent = 6; // 公正価値分析テキストと更新時刻
optional string economicMoatLabel = 7; // 経済的優位性評価、例: Wide、Narrow、None
optional StringWithUpdateTime economicMoatContent = 8; // 経済的優位性分析テキストと更新時刻
optional string uncertaintyLabel = 9; // 不確実性評価、例: Low、Medium、High、Very High、Extreme
optional StringWithUpdateTime uncertaintyContent = 10; // 不確実性分析テキストと更新時刻
optional string financialHealthLabel = 11; // 財務健全性評価
optional StringWithUpdateTime financialHealthContent = 12; // 財務健全性分析テキストと更新時刻
repeated string analystReportByLine = 13; // アナリスト署名リスト、例: ["William Kerwin, CFA"]
optional int64 analystReportUpdateTime = 14; // アナリストレポート更新タイムスタンプ(秒)
optional string analystReportUpdateTimeStr = 15; // アナリストレポート更新時刻文字列、形式 YYYY-MM-DD、市場タイムゾーン
repeated StringWithUpdateTime bullSay = 16; // 強気の根拠リスト
repeated StringWithUpdateTime bearSay = 17; // 弱気の根拠リスト
optional string capitalAllocationLabel = 18; // 資本配分評価
optional StringWithUpdateTime capitalAllocationContent = 19; // 資本配分分析テキストと更新時刻
optional StringWithUpdateTime analystNoteTitle = 20; // アナリストノートのタイトルと更新時刻
optional StringWithUpdateTime analystNoteContent = 21; // アナリストノートの内容テキストと更新時刻
optional StringWithUpdateTime investmentThesisContent = 22; // 投資論点テキストと更新時刻
optional StringWithUpdateTime fundamentalsContent = 23; // ファンダメンタルズレポートテキストと更新時刻
optional StringWithUpdateTime valuationContent = 24; // バリュエーションレポートテキストと更新時刻
optional string pdfUrl = 25; // PDF レポートダウンロード URL
}
message Response
{
required int32 retType = 1 [default = -400]; // 返却結果、Common.RetType 参照
optional string retMsg = 2; // 返却結果説明
optional int32 errCode = 3; // エラーコード
optional S2C s2c = 4;
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
- API 呼び出し結果については RetType を参照
- MorningstarRatingType:0=Unknown、1=Quantitative、2=Qualitative、MorningstarRatingType を参照
- Example
class Program : public FTSPI_Qot, public FTSPI_Trd, public FTSPI_Conn
{
public:
Program() {
m_pQotApi = FTAPI::CreateQotApi();
m_pQotApi->RegisterQotSpi(this);
m_pQotApi->RegisterConnSpi(this);
}
~Program() {
if (m_pQotApi != nullptr)
{
m_pQotApi->UnregisterQotSpi();
m_pQotApi->UnregisterConnSpi();
FTAPI::ReleaseQotApi(m_pQotApi);
m_pQotApi = nullptr;
}
}
void Start() {
m_pQotApi->InitConnect("127.0.0.1", 11111, false);
}
virtual void OnInitConnect(FTAPI_Conn* pConn, Futu::i64_t nErrCode, const char* strDesc) {
cout << "connect" << endl;
// construct request message
Qot_GetResearchMorningstarReport::Request req;
Qot_GetResearchMorningstarReport::C2S *c2s = req.mutable_c2s();
Qot_Common::Security *sec = c2s->mutable_security();
sec->set_code("00700");
sec->set_market(Qot_Common::QotMarket::QotMarket_HK_Security);
m_pQotApi->GetResearchMorningstarReport(req);
cout << "GetResearchMorningstarReport" << endl;
}
virtual void OnReply_GetResearchMorningstarReport(Futu::u32_t nSerialNo, const Qot_GetResearchMorningstarReport::Response &stRsp){
cout << "OnReply_GetResearchMorningstarReport:" << endl;
// print response
// ProtoBufToBodyData and UTF8ToLocal refer to tool.h in Samples
string resp_str;
ProtoBufToBodyData(stRsp, resp_str);
cout << UTF8ToLocal(resp_str) << endl;
}
protected:
FTAPI_Qot *m_pQotApi;
};
int32_t main(int32_t argc, char** argv)
{
FTAPI::Init();
{
Program program;
program.Start();
getchar();
}
protobuf::ShutdownProtobufLibrary();
FTAPI::UnInit();
return 0;
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
- Output
onInitConnect: ret=0 desc=Succeed!
Send Qot_GetResearchMorningstarReport seqNo=3
retType: 0
retMsg: ""
errCode: 0
s2c {
ratingType: MorningstarRatingType_Qualitative
starRating: 4
starUpdateTime: 1778257800
starUpdateTimeStr: "2026-05-09"
fairValue: 800
fairValueContent {
context: "Our fair value estimate for Tencent is HKD 800 per share. About 85% of our valuation comes from Tencent's core business, while the remaining 20% comes from its investments. Our valuation for the core business implies a 2025 P/E of 30 times. We discount the firm\'s free cash flows using...
updateTime: 1755138060
updateTimeStr: "2025-08-14"
}
economicMoatLabel: "Wide"
economicMoatContent {
context: "Tencent\'s wide moat is primarily based on network effects around its massive user base. In addition, Tencent possesses secondary moat sources like intangible assets, cost advantage, and switching costs. Given Tencent\'s proven ability to monetize its massive network of users through g...
updateTime: 1766457150
updateTimeStr: "2025-12-23"
}
uncertaintyLabel: "High"
uncertaintyContent {
context: "Our Morningstar Uncertainty Rating for Tencent is High due to regulatory risks and competitive intensity across its core businesses. \n\nIn payments, the 2017 rule that forced third-party providers to park customer reserves in non-interest-bearing central bank accounts--and the later c...
updateTime: 1766457180
updateTimeStr: "2025-12-23"
}
//...
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
GetResearchMorningstarReport(req);
説明
モーニングスター調査レポートの取得
パラメータ
message C2S
{
required Qot_Common.Security security = 1; // 銘柄
}
message Request
{
required C2S c2s = 1;
}
2
3
4
5
6
7
8
9
- 銘柄構造については Security を参照
- 戻り値
// 更新時刻付きテキスト内容
message StringWithUpdateTime {
optional string context = 1; // テキスト内容
optional int64 updateTime = 2; // 更新タイムスタンプ(秒)
optional string updateTimeStr = 3; // 更新時刻文字列、形式 YYYY-MM-DD、市場タイムゾーン
}
message S2C
{
optional Qot_Common.MorningstarRatingType ratingType = 1; // 評価タイプ(Qot_Common.MorningstarRatingType 参照)
optional int32 starRating = 2; // モーニングスタースター評価、値 1-5 スター
optional int64 starUpdateTime = 3; // スター評価更新タイムスタンプ(秒)
optional string starUpdateTimeStr = 4; // スター評価更新時刻文字列、形式 YYYY-MM-DD、市場タイムゾーン
optional double fairValue = 5; // 公正価値
optional StringWithUpdateTime fairValueContent = 6; // 公正価値分析テキストと更新時刻
optional string economicMoatLabel = 7; // 経済的優位性評価、例: Wide、Narrow、None
optional StringWithUpdateTime economicMoatContent = 8; // 経済的優位性分析テキストと更新時刻
optional string uncertaintyLabel = 9; // 不確実性評価、例: Low、Medium、High、Very High、Extreme
optional StringWithUpdateTime uncertaintyContent = 10; // 不確実性分析テキストと更新時刻
optional string financialHealthLabel = 11; // 財務健全性評価
optional StringWithUpdateTime financialHealthContent = 12; // 財務健全性分析テキストと更新時刻
repeated string analystReportByLine = 13; // アナリスト署名リスト、例: ["William Kerwin, CFA"]
optional int64 analystReportUpdateTime = 14; // アナリストレポート更新タイムスタンプ(秒)
optional string analystReportUpdateTimeStr = 15; // アナリストレポート更新時刻文字列、形式 YYYY-MM-DD、市場タイムゾーン
repeated StringWithUpdateTime bullSay = 16; // 強気の根拠リスト
repeated StringWithUpdateTime bearSay = 17; // 弱気の根拠リスト
optional string capitalAllocationLabel = 18; // 資本配分評価
optional StringWithUpdateTime capitalAllocationContent = 19; // 資本配分分析テキストと更新時刻
optional StringWithUpdateTime analystNoteTitle = 20; // アナリストノートのタイトルと更新時刻
optional StringWithUpdateTime analystNoteContent = 21; // アナリストノートの内容テキストと更新時刻
optional StringWithUpdateTime investmentThesisContent = 22; // 投資論点テキストと更新時刻
optional StringWithUpdateTime fundamentalsContent = 23; // ファンダメンタルズレポートテキストと更新時刻
optional StringWithUpdateTime valuationContent = 24; // バリュエーションレポートテキストと更新時刻
optional string pdfUrl = 25; // PDF レポートダウンロード URL
}
message Response
{
required int32 retType = 1 [default = -400]; // 返却結果、Common.RetType 参照
optional string retMsg = 2; // 返却結果説明
optional int32 errCode = 3; // エラーコード
optional S2C s2c = 4;
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
- API 呼び出し結果については RetType を参照
- MorningstarRatingType:0=Unknown、1=Quantitative、2=Qualitative、MorningstarRatingType を参照
- Example
import ftWebsocket from "futu-api";
import { Common, Qot_Common } from "futu-api/proto";
import beautify from "js-beautify";
function QotGetResearchMorningstarReport(){
const { RetType } = Common
const { QotMarket } = Qot_Common
let [addr, port, enable_ssl, key] = ["127.0.0.1", 33333, false, '7522027ccf5a06b1'];
let websocket = new ftWebsocket();
websocket.onlogin = (ret, msg)=>{
if (ret) {
const req = {
c2s: {
security: {
market: QotMarket.QotMarket_HK_Security,
code: "00700",
},
},
};
websocket.GetResearchMorningstarReport(req)
.then((res) => {
let { errCode, retMsg, retType,s2c } = res
console.log("GetResearchMorningstarReport: errCode %d, retMsg %s, retType %d", errCode, retMsg, retType);
if(retType == RetType.RetType_Succeed){
let data = beautify(JSON.stringify(s2c), {
indent_size: 2,
space_in_empty_paren: true,
});
console.log(data);
}
})
.catch((error) => {
console.log("error:", error);
});
} else {
console.log("error", msg);
}
};
websocket.start(addr, port, enable_ssl, key);
setTimeout(()=>{
websocket.stop();
console.log("stop");
}, 5000);
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
- Output
GetResearchMorningstarReport: errCode 0, retMsg , retType 0
{
"ratingType": "MorningstarRatingType_Qualitative",
"starRating": 4,
"starUpdateTime": "1778257800",
"starUpdateTimeStr": "2026-05-09",
"fairValue": 800,
"fairValueContent": {
"context": "Our fair value estimate for Tencent is HKD 800 per share. About 85% of our valuation comes from Tencent's core business, while the remaining 20% comes from its investments. Our valuation for the core business implies a 2025 P/E of 30 times. We discount the firm's free cash flows usin...
"updateTime": "1755138060",
"updateTimeStr": "2025-08-14"
},
"economicMoatLabel": "Wide",
"economicMoatContent": {
"context": "Tencent's wide moat is primarily based on network effects around its massive user base. In addition, Tencent possesses secondary moat sources like intangible assets, cost advantage, and switching costs. Given Tencent's proven ability to monetize its massive network of users through g...
"updateTime": "1766457150",
"updateTimeStr": "2025-12-23"
},
"uncertaintyLabel": "High",
"uncertaintyContent": {
"context": "Our Morningstar Uncertainty Rating for Tencent is High due to regulatory risks and competitive intensity across its core businesses. \n\nIn payments, the 2017 rule that forced third-party providers to park customer reserves in non-interest-bearing central bank accounts--and the later...
"updateTime": "1766457180",
"updateTimeStr": "2025-12-23"
},
//...
}
stop
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
制限事項
- 30 秒以内に最大 30 回リクエストできます。
- 普通株および REIT に対応しています。
- Python
- Proto
- C#
- Java
- C++
- JavaScript
get_research_morningstar_report(code)
説明
指定銘柄のモーニングスター調査レポートを取得します。スター評価、公正価値、経済的優位性(モート)、不確実性、財務健全性、資本配分、強気/弱気の根拠、アナリスト見解などを含みます
パラメータ
パラメータ 型 説明 code str 銘柄コード 戻り値
パラメータ 型 説明 ret RET_CODE API 呼び出し結果 data dict ret == RET_OK の場合、モーニングスター調査レポートデータの辞書を返す str ret != RET_OK の場合、エラーの説明を返す 返される辞書には以下のフィールドが含まれます:
フィールド 型 説明 rating_type MorningstarRatingType 評価タイプ 0=Unknown、1=Quantitative(定量的評価、システムモデルによる)、2=Qualitative(定性的評価、アナリストによる手動評価)star_rating int モーニングスタースター評価 値 1~5 スターstar_update_time int スター評価更新タイムスタンプ(秒、市場タイムゾーン) star_update_time_str str スター評価更新日付 形式 YYYY-MM-DD、市場タイムゾーンfair_value float 公正価値 fair_value_content dict 公正価値分析、StringWithUpdateTime フィールド表参照 economic_moat_label str 経済的優位性評価 例: Wide、Narrow、Noneeconomic_moat_content dict 経済的優位性分析、StringWithUpdateTime フィールド表参照 uncertainty_label str 不確実性評価 例: Low、Medium、High、Very High、Extremeuncertainty_content dict 不確実性分析、StringWithUpdateTime フィールド表参照 financial_health_label str 財務健全性評価 financial_health_content dict 財務健全性分析、StringWithUpdateTime フィールド表参照 analyst_report_by_line list アナリスト署名リスト 例: ["William Kerwin, CFA"]analyst_report_update_time int アナリストレポート更新タイムスタンプ(秒、市場タイムゾーン) analyst_report_update_time_str str アナリストレポート更新日付 形式 YYYY-MM-DD、市場タイムゾーンbull_say list 強気の根拠リスト、各項目は StringWithUpdateTime フィールド表参照 bear_say list 弱気の根拠リスト、各項目は StringWithUpdateTime フィールド表参照 capital_allocation_label str 資本配分評価 capital_allocation_content dict 資本配分分析、StringWithUpdateTime フィールド表参照 analyst_note_title dict アナリストノートのタイトル、StringWithUpdateTime フィールド表参照 analyst_note_content dict アナリストノートの内容、StringWithUpdateTime フィールド表参照 investment_thesis_content dict 投資論点、StringWithUpdateTime フィールド表参照 fundamentals_content dict ファンダメンタルズレポート、StringWithUpdateTime フィールド表参照 valuation_content dict バリュエーションレポート、StringWithUpdateTime フィールド表参照 pdf_url str PDF レポートダウンロード URL StringWithUpdateTime フィールド(ネストされたテキスト構造):
フィールド 型 説明 context str テキスト内容 update_time int 更新タイムスタンプ(秒、市場タイムゾーン) update_time_str str 更新日付 形式 YYYY-MM-DD、市場タイムゾーン
Example
import json
from moomoo import *
quote_ctx = OpenQuoteContext(host='127.0.0.1', port=11111)
ret, data = quote_ctx.get_research_morningstar_report("HK.00700")
if ret == RET_OK:
print(json.dumps(data, indent=2, ensure_ascii=False))
else:
print('error:', data)
quote_ctx.close()
2
3
4
5
6
7
8
9
- Output
{
"rating_type": 2,
"star_rating": 4,
"star_update_time": 1778257800,
"star_update_time_str": "2026-05-09",
"fair_value": 800.0,
"fair_value_content": {
"context": "Our fair value estimate for Tencent is HKD 800 per share. About 85% of our valuation comes from Tencent’s core business, while ...
"update_time": 1755138060,
"update_time_str": "2025-08-14"
},
"economic_moat_label": "Wide",
"economic_moat_content": {
"context": "Tencent's wide moat is primarily based on network effects around its massive user base. In addition, Tencent possesses ...
"update_time": 1766457150,
"update_time_str": "2025-12-23"
},
"uncertainty_label": "High",
"uncertainty_content": {
"context": "Our Morningstar Uncertainty Rating for Tencent is High due to regulatory risks and competitive intensity across...
"update_time": 1766457180,
"update_time_str": "2025-12-23"
},
//...
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# Qot_GetResearchMorningstarReport.proto
説明
モーニングスター調査レポートの取得
パラメータ
message C2S
{
required Qot_Common.Security security = 1; // 銘柄
}
message Request
{
required C2S c2s = 1;
}
2
3
4
5
6
7
8
9
- 銘柄構造については Security を参照
- MorningstarRatingType:0=Unknown、1=Quantitative、2=Qualitative
- 戻り値
// 更新時刻付きテキスト内容
message StringWithUpdateTime {
optional string context = 1; // テキスト内容
optional int64 updateTime = 2; // 更新タイムスタンプ(秒)
optional string updateTimeStr = 3; // 更新時刻文字列、形式 YYYY-MM-DD、市場タイムゾーン
}
message S2C
{
optional Qot_Common.MorningstarRatingType ratingType = 1; // 評価タイプ(Qot_Common.MorningstarRatingType 参照)
optional int32 starRating = 2; // モーニングスタースター評価、値 1-5 スター
optional int64 starUpdateTime = 3; // スター評価更新タイムスタンプ(秒)
optional string starUpdateTimeStr = 4; // スター評価更新時刻文字列、形式 YYYY-MM-DD、市場タイムゾーン
optional double fairValue = 5; // 公正価値
optional StringWithUpdateTime fairValueContent = 6; // 公正価値分析テキストと更新時刻
optional string economicMoatLabel = 7; // 経済的優位性評価、例: Wide、Narrow、None
optional StringWithUpdateTime economicMoatContent = 8; // 経済的優位性分析テキストと更新時刻
optional string uncertaintyLabel = 9; // 不確実性評価、例: Low、Medium、High、Very High、Extreme
optional StringWithUpdateTime uncertaintyContent = 10; // 不確実性分析テキストと更新時刻
optional string financialHealthLabel = 11; // 財務健全性評価
optional StringWithUpdateTime financialHealthContent = 12; // 財務健全性分析テキストと更新時刻
repeated string analystReportByLine = 13; // アナリスト署名リスト、例: ["William Kerwin, CFA"]
optional int64 analystReportUpdateTime = 14; // アナリストレポート更新タイムスタンプ(秒)
optional string analystReportUpdateTimeStr = 15; // アナリストレポート更新時刻文字列、形式 YYYY-MM-DD、市場タイムゾーン
repeated StringWithUpdateTime bullSay = 16; // 強気の根拠リスト
repeated StringWithUpdateTime bearSay = 17; // 弱気の根拠リスト
optional string capitalAllocationLabel = 18; // 資本配分評価
optional StringWithUpdateTime capitalAllocationContent = 19; // 資本配分分析テキストと更新時刻
optional StringWithUpdateTime analystNoteTitle = 20; // アナリストノートのタイトルと更新時刻
optional StringWithUpdateTime analystNoteContent = 21; // アナリストノートの内容テキストと更新時刻
optional StringWithUpdateTime investmentThesisContent = 22; // 投資論点テキストと更新時刻
optional StringWithUpdateTime fundamentalsContent = 23; // ファンダメンタルズレポートテキストと更新時刻
optional StringWithUpdateTime valuationContent = 24; // バリュエーションレポートテキストと更新時刻
optional string pdfUrl = 25; // PDF レポートダウンロード URL
}
message Response
{
required int32 retType = 1 [default = -400]; // 返却結果、Common.RetType 参照
optional string retMsg = 2; // 返却結果説明
optional int32 errCode = 3; // エラーコード
optional S2C s2c = 4;
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
- API 呼び出し結果については RetType を参照
- MorningstarRatingType:0=Unknown、1=Quantitative、2=Qualitative、MorningstarRatingType を参照
プロトコル ID
3231
uint GetResearchMorningstarReport(QotGetResearchMorningstarReport.Request req);
virtual void OnReply_GetResearchMorningstarReport(MMAPI_Conn client, uint nSerialNo, QotGetResearchMorningstarReport.Response rsp);
説明
モーニングスター調査レポートの取得
パラメータ
message C2S
{
required Qot_Common.Security security = 1; // 銘柄
}
message Request
{
required C2S c2s = 1;
}
2
3
4
5
6
7
8
9
- 銘柄構造については Security を参照
- 戻り値
// 更新時刻付きテキスト内容
message StringWithUpdateTime {
optional string context = 1; // テキスト内容
optional int64 updateTime = 2; // 更新タイムスタンプ(秒)
optional string updateTimeStr = 3; // 更新時刻文字列、形式 YYYY-MM-DD、市場タイムゾーン
}
message S2C
{
optional Qot_Common.MorningstarRatingType ratingType = 1; // 評価タイプ(Qot_Common.MorningstarRatingType 参照)
optional int32 starRating = 2; // モーニングスタースター評価、値 1-5 スター
optional int64 starUpdateTime = 3; // スター評価更新タイムスタンプ(秒)
optional string starUpdateTimeStr = 4; // スター評価更新時刻文字列、形式 YYYY-MM-DD、市場タイムゾーン
optional double fairValue = 5; // 公正価値
optional StringWithUpdateTime fairValueContent = 6; // 公正価値分析テキストと更新時刻
optional string economicMoatLabel = 7; // 経済的優位性評価、例: Wide、Narrow、None
optional StringWithUpdateTime economicMoatContent = 8; // 経済的優位性分析テキストと更新時刻
optional string uncertaintyLabel = 9; // 不確実性評価、例: Low、Medium、High、Very High、Extreme
optional StringWithUpdateTime uncertaintyContent = 10; // 不確実性分析テキストと更新時刻
optional string financialHealthLabel = 11; // 財務健全性評価
optional StringWithUpdateTime financialHealthContent = 12; // 財務健全性分析テキストと更新時刻
repeated string analystReportByLine = 13; // アナリスト署名リスト、例: ["William Kerwin, CFA"]
optional int64 analystReportUpdateTime = 14; // アナリストレポート更新タイムスタンプ(秒)
optional string analystReportUpdateTimeStr = 15; // アナリストレポート更新時刻文字列、形式 YYYY-MM-DD、市場タイムゾーン
repeated StringWithUpdateTime bullSay = 16; // 強気の根拠リスト
repeated StringWithUpdateTime bearSay = 17; // 弱気の根拠リスト
optional string capitalAllocationLabel = 18; // 資本配分評価
optional StringWithUpdateTime capitalAllocationContent = 19; // 資本配分分析テキストと更新時刻
optional StringWithUpdateTime analystNoteTitle = 20; // アナリストノートのタイトルと更新時刻
optional StringWithUpdateTime analystNoteContent = 21; // アナリストノートの内容テキストと更新時刻
optional StringWithUpdateTime investmentThesisContent = 22; // 投資論点テキストと更新時刻
optional StringWithUpdateTime fundamentalsContent = 23; // ファンダメンタルズレポートテキストと更新時刻
optional StringWithUpdateTime valuationContent = 24; // バリュエーションレポートテキストと更新時刻
optional string pdfUrl = 25; // PDF レポートダウンロード URL
}
message Response
{
required int32 retType = 1 [default = -400]; // 返却結果、Common.RetType 参照
optional string retMsg = 2; // 返却結果説明
optional int32 errCode = 3; // エラーコード
optional S2C s2c = 4;
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
- API 呼び出し結果については RetType を参照
- MorningstarRatingType:0=Unknown、1=Quantitative、2=Qualitative、MorningstarRatingType を参照
- Example
public class Program : MMSPI_Qot, MMSPI_Conn
{
MMAPI_Qot qot = new MMAPI_Qot();
public Program()
{
qot.SetClientInfo("csharp", 1);
qot.SetConnCallback(this);
qot.SetQotCallback(this);
}
public void Start()
{
qot.InitConnect("127.0.0.1", (ushort)11111, false);
}
public void OnInitConnect(MMAPI_Conn client, long errCode, String desc)
{
Console.Write("Qot onInitConnect: ret={0} desc={1} connID={2}\n", errCode, desc, client.GetConnectID());
if (errCode != 0)
return;
QotCommon.Security sec = QotCommon.Security.CreateBuilder()
.SetMarket((int)QotCommon.QotMarket.QotMarket_HK_Security)
.SetCode("00700")
.Build();
QotGetResearchMorningstarReport.C2S c2s = QotGetResearchMorningstarReport.C2S.CreateBuilder()
.SetSecurity(sec)
.Build();
QotGetResearchMorningstarReport.Request req = QotGetResearchMorningstarReport.Request.CreateBuilder().SetC2S(c2s).Build();
uint seqNo = qot.GetResearchMorningstarReport(req);
Console.Write("Send QotGetResearchMorningstarReport: {0}\n", seqNo);
}
public void OnDisconnect(MMAPI_Conn client, long errCode)
{
Console.Write("Qot onDisConnect: {0}\n", errCode);
}
public void OnReply_GetResearchMorningstarReport(MMAPI_Conn client, uint nSerialNo, QotGetResearchMorningstarReport.Response rsp)
{
Console.Write("Reply: QotGetResearchMorningstarReport: {0} {1}\n", nSerialNo, rsp.ToString());
}
public static void Main(String[] args)
{
MMAPI.Init();
Program qot = new Program();
qot.Start();
while (true)
Thread.Sleep(1000 * 600);
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
- Output
sent seqNo=3
retType: 0
retMsg: ""
errCode: 0
s2c {
ratingType: MorningstarRatingType_Qualitative
starRating: 4
starUpdateTime: 1778257800
starUpdateTimeStr: "2026-05-09"
fairValue: 800
fairValueContent {
context: "Our fair value estimate for Tencent is HKD 800 per share. About 85% of our valuation comes from Tencent's core business, while the remaining 20% comes from its investments. Our valuation for the core business implies a 2025 P/E of 30 times. We discount the firm\'s free cash flows using...
updateTime: 1755138060
updateTimeStr: "2025-08-14"
}
economicMoatLabel: "Wide"
economicMoatContent {
context: "Tencent\'s wide moat is primarily based on network effects around its massive user base. In addition, Tencent possesses secondary moat sources like intangible assets, cost advantage, and switching costs. Given Tencent\'s proven ability to monetize its massive network of users through g...
updateTime: 1766457150
updateTimeStr: "2025-12-23"
}
uncertaintyLabel: "High"
uncertaintyContent {
context: "Our Morningstar Uncertainty Rating for Tencent is High due to regulatory risks and competitive intensity across its core businesses. \n\nIn payments, the 2017 rule that forced third-party providers to park customer reserves in non-interest-bearing central bank accounts--and the later c...
updateTime: 1766457180
updateTimeStr: "2025-12-23"
}
//...
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
int getResearchMorningstarReport(QotGetResearchMorningstarReport.Request req);
void onReply_GetResearchMorningstarReport(MMAPI_Conn client, int nSerialNo, QotGetResearchMorningstarReport.Response rsp);
説明
モーニングスター調査レポートの取得
パラメータ
message C2S
{
required Qot_Common.Security security = 1; // 銘柄
}
message Request
{
required C2S c2s = 1;
}
2
3
4
5
6
7
8
9
- 銘柄構造については Security を参照
- 戻り値
// 更新時刻付きテキスト内容
message StringWithUpdateTime {
optional string context = 1; // テキスト内容
optional int64 updateTime = 2; // 更新タイムスタンプ(秒)
optional string updateTimeStr = 3; // 更新時刻文字列、形式 YYYY-MM-DD、市場タイムゾーン
}
message S2C
{
optional Qot_Common.MorningstarRatingType ratingType = 1; // 評価タイプ(Qot_Common.MorningstarRatingType 参照)
optional int32 starRating = 2; // モーニングスタースター評価、値 1-5 スター
optional int64 starUpdateTime = 3; // スター評価更新タイムスタンプ(秒)
optional string starUpdateTimeStr = 4; // スター評価更新時刻文字列、形式 YYYY-MM-DD、市場タイムゾーン
optional double fairValue = 5; // 公正価値
optional StringWithUpdateTime fairValueContent = 6; // 公正価値分析テキストと更新時刻
optional string economicMoatLabel = 7; // 経済的優位性評価、例: Wide、Narrow、None
optional StringWithUpdateTime economicMoatContent = 8; // 経済的優位性分析テキストと更新時刻
optional string uncertaintyLabel = 9; // 不確実性評価、例: Low、Medium、High、Very High、Extreme
optional StringWithUpdateTime uncertaintyContent = 10; // 不確実性分析テキストと更新時刻
optional string financialHealthLabel = 11; // 財務健全性評価
optional StringWithUpdateTime financialHealthContent = 12; // 財務健全性分析テキストと更新時刻
repeated string analystReportByLine = 13; // アナリスト署名リスト、例: ["William Kerwin, CFA"]
optional int64 analystReportUpdateTime = 14; // アナリストレポート更新タイムスタンプ(秒)
optional string analystReportUpdateTimeStr = 15; // アナリストレポート更新時刻文字列、形式 YYYY-MM-DD、市場タイムゾーン
repeated StringWithUpdateTime bullSay = 16; // 強気の根拠リスト
repeated StringWithUpdateTime bearSay = 17; // 弱気の根拠リスト
optional string capitalAllocationLabel = 18; // 資本配分評価
optional StringWithUpdateTime capitalAllocationContent = 19; // 資本配分分析テキストと更新時刻
optional StringWithUpdateTime analystNoteTitle = 20; // アナリストノートのタイトルと更新時刻
optional StringWithUpdateTime analystNoteContent = 21; // アナリストノートの内容テキストと更新時刻
optional StringWithUpdateTime investmentThesisContent = 22; // 投資論点テキストと更新時刻
optional StringWithUpdateTime fundamentalsContent = 23; // ファンダメンタルズレポートテキストと更新時刻
optional StringWithUpdateTime valuationContent = 24; // バリュエーションレポートテキストと更新時刻
optional string pdfUrl = 25; // PDF レポートダウンロード URL
}
message Response
{
required int32 retType = 1 [default = -400]; // 返却結果、Common.RetType 参照
optional string retMsg = 2; // 返却結果説明
optional int32 errCode = 3; // エラーコード
optional S2C s2c = 4;
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
- API 呼び出し結果については RetType を参照
- MorningstarRatingType:0=Unknown、1=Quantitative、2=Qualitative、MorningstarRatingType を参照
- Example
public class QotDemo implements MMSPI_Qot, MMSPI_Conn {
MMAPI_Conn_Qot qot = new MMAPI_Conn_Qot();
public QotDemo() {
qot.setClientInfo("javaclient", 1);
qot.setConnSpi(this);
qot.setQotSpi(this);
}
public void start() {
qot.initConnect("127.0.0.1", (short)11111, false);
}
@Override
public void onInitConnect(MMAPI_Conn client, long errCode, String desc)
{
System.out.printf("Qot onInitConnect: ret=%b desc=%s connID=%d\n", errCode, desc, client.getConnectID());
if (errCode != 0)
return;
QotCommon.Security sec = QotCommon.Security.newBuilder()
.setMarket(QotCommon.QotMarket.QotMarket_HK_Security_VALUE)
.setCode("00700")
.build();
QotGetResearchMorningstarReport.C2S c2s = QotGetResearchMorningstarReport.C2S.newBuilder()
.setSecurity(sec)
.build();
QotGetResearchMorningstarReport.Request req = QotGetResearchMorningstarReport.Request.newBuilder().setC2S(c2s).build();
int seqNo = qot.getResearchMorningstarReport(req);
System.out.printf("Send QotGetResearchMorningstarReport: %d\n", seqNo);
}
@Override
public void onDisconnect(MMAPI_Conn client, long errCode) {
System.out.printf("Qot onDisConnect: %d\n", errCode);
}
@Override
public void onReply_GetResearchMorningstarReport(MMAPI_Conn client, int nSerialNo, QotGetResearchMorningstarReport.Response rsp) {
if (rsp.getRetType() != 0) {
System.out.printf("QotGetResearchMorningstarReport failed: %s\n", rsp.getRetMsg());
}
else {
try {
String json = JsonFormat.printer().print(rsp);
System.out.printf("Receive QotGetResearchMorningstarReport: %s\n", json);
} catch (InvalidProtocolBufferException e) {
e.printStackTrace();
}
}
}
public static void main(String[] args) {
MMAPI.init();
QotDemo qot = new QotDemo();
qot.start();
while (true) {
try {
Thread.sleep(1000 * 600);
} catch (InterruptedException exc) {
}
}
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
- Output
Qot onInitConnect: ret=0 desc= connID=7459212590244939522
Send Qot_GetResearchMorningstarReport: 2
Receive Qot_GetResearchMorningstarReport: retType: 0
retMsg: ""
errCode: 0
s2c {
ratingType: MorningstarRatingType_Qualitative
starRating: 4
starUpdateTime: 1778257800
starUpdateTimeStr: "2026-05-09"
fairValue: 800.0
fairValueContent {
context: "Our fair value estimate for Tencent is HKD 800 per share. About 85% of our valuation comes from Tencent's core business, while the remaining 20% comes from its investments. Our valuation for the core business implies a 2025 P/E of 30 times. We discount the firm\'s free cash flows using...
updateTime: 1755138060
updateTimeStr: "2025-08-14"
}
economicMoatLabel: "Wide"
economicMoatContent {
context: "Tencent\'s wide moat is primarily based on network effects around its massive user base. In addition, Tencent possesses secondary moat sources like intangible assets, cost advantage, and switching costs. Given Tencent\'s proven ability to monetize its massive network of users through g...
updateTime: 1766457150
updateTimeStr: "2025-12-23"
}
uncertaintyLabel: "High"
uncertaintyContent {
context: "Our Morningstar Uncertainty Rating for Tencent is High due to regulatory risks and competitive intensity across its core businesses. \n\nIn payments, the 2017 rule that forced third-party providers to park customer reserves in non-interest-bearing central bank accounts--and the later c...
updateTime: 1766457180
updateTimeStr: "2025-12-23"
}
//...
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
moomoo::u32_t GetResearchMorningstarReport(const Qot_GetResearchMorningstarReport::Request &stReq);
virtual void OnReply_GetResearchMorningstarReport(moomoo::u32_t nSerialNo, const Qot_GetResearchMorningstarReport::Response &stRsp) = 0;
説明
モーニングスター調査レポートの取得
パラメータ
message C2S
{
required Qot_Common.Security security = 1; // 銘柄
}
message Request
{
required C2S c2s = 1;
}
2
3
4
5
6
7
8
9
- 銘柄構造については Security を参照
- 戻り値
// 更新時刻付きテキスト内容
message StringWithUpdateTime {
optional string context = 1; // テキスト内容
optional int64 updateTime = 2; // 更新タイムスタンプ(秒)
optional string updateTimeStr = 3; // 更新時刻文字列、形式 YYYY-MM-DD、市場タイムゾーン
}
message S2C
{
optional Qot_Common.MorningstarRatingType ratingType = 1; // 評価タイプ(Qot_Common.MorningstarRatingType 参照)
optional int32 starRating = 2; // モーニングスタースター評価、値 1-5 スター
optional int64 starUpdateTime = 3; // スター評価更新タイムスタンプ(秒)
optional string starUpdateTimeStr = 4; // スター評価更新時刻文字列、形式 YYYY-MM-DD、市場タイムゾーン
optional double fairValue = 5; // 公正価値
optional StringWithUpdateTime fairValueContent = 6; // 公正価値分析テキストと更新時刻
optional string economicMoatLabel = 7; // 経済的優位性評価、例: Wide、Narrow、None
optional StringWithUpdateTime economicMoatContent = 8; // 経済的優位性分析テキストと更新時刻
optional string uncertaintyLabel = 9; // 不確実性評価、例: Low、Medium、High、Very High、Extreme
optional StringWithUpdateTime uncertaintyContent = 10; // 不確実性分析テキストと更新時刻
optional string financialHealthLabel = 11; // 財務健全性評価
optional StringWithUpdateTime financialHealthContent = 12; // 財務健全性分析テキストと更新時刻
repeated string analystReportByLine = 13; // アナリスト署名リスト、例: ["William Kerwin, CFA"]
optional int64 analystReportUpdateTime = 14; // アナリストレポート更新タイムスタンプ(秒)
optional string analystReportUpdateTimeStr = 15; // アナリストレポート更新時刻文字列、形式 YYYY-MM-DD、市場タイムゾーン
repeated StringWithUpdateTime bullSay = 16; // 強気の根拠リスト
repeated StringWithUpdateTime bearSay = 17; // 弱気の根拠リスト
optional string capitalAllocationLabel = 18; // 資本配分評価
optional StringWithUpdateTime capitalAllocationContent = 19; // 資本配分分析テキストと更新時刻
optional StringWithUpdateTime analystNoteTitle = 20; // アナリストノートのタイトルと更新時刻
optional StringWithUpdateTime analystNoteContent = 21; // アナリストノートの内容テキストと更新時刻
optional StringWithUpdateTime investmentThesisContent = 22; // 投資論点テキストと更新時刻
optional StringWithUpdateTime fundamentalsContent = 23; // ファンダメンタルズレポートテキストと更新時刻
optional StringWithUpdateTime valuationContent = 24; // バリュエーションレポートテキストと更新時刻
optional string pdfUrl = 25; // PDF レポートダウンロード URL
}
message Response
{
required int32 retType = 1 [default = -400]; // 返却結果、Common.RetType 参照
optional string retMsg = 2; // 返却結果説明
optional int32 errCode = 3; // エラーコード
optional S2C s2c = 4;
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
- API 呼び出し結果については RetType を参照
- MorningstarRatingType:0=Unknown、1=Quantitative、2=Qualitative、MorningstarRatingType を参照
- Example
class Program : public MMSPI_Qot, public MMSPI_Trd, public MMSPI_Conn
{
public:
Program() {
m_pQotApi = MMAPI::CreateQotApi();
m_pQotApi->RegisterQotSpi(this);
m_pQotApi->RegisterConnSpi(this);
}
~Program() {
if (m_pQotApi != nullptr)
{
m_pQotApi->UnregisterQotSpi();
m_pQotApi->UnregisterConnSpi();
MMAPI::ReleaseQotApi(m_pQotApi);
m_pQotApi = nullptr;
}
}
void Start() {
m_pQotApi->InitConnect("127.0.0.1", 11111, false);
}
virtual void OnInitConnect(MMAPI_Conn* pConn, moomoo::i64_t nErrCode, const char* strDesc) {
cout << "connect" << endl;
// construct request message
Qot_GetResearchMorningstarReport::Request req;
Qot_GetResearchMorningstarReport::C2S *c2s = req.mutable_c2s();
Qot_Common::Security *sec = c2s->mutable_security();
sec->set_code("00700");
sec->set_market(Qot_Common::QotMarket::QotMarket_HK_Security);
m_pQotApi->GetResearchMorningstarReport(req);
cout << "GetResearchMorningstarReport" << endl;
}
virtual void OnReply_GetResearchMorningstarReport(moomoo::u32_t nSerialNo, const Qot_GetResearchMorningstarReport::Response &stRsp){
cout << "OnReply_GetResearchMorningstarReport:" << endl;
// print response
// ProtoBufToBodyData and UTF8ToLocal refer to tool.h in Samples
string resp_str;
ProtoBufToBodyData(stRsp, resp_str);
cout << UTF8ToLocal(resp_str) << endl;
}
protected:
MMAPI_Qot *m_pQotApi;
};
int32_t main(int32_t argc, char** argv)
{
MMAPI::Init();
{
Program program;
program.Start();
getchar();
}
protobuf::ShutdownProtobufLibrary();
MMAPI::UnInit();
return 0;
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
- Output
onInitConnect: ret=0 desc=Succeed!
Send Qot_GetResearchMorningstarReport seqNo=3
retType: 0
retMsg: ""
errCode: 0
s2c {
ratingType: MorningstarRatingType_Qualitative
starRating: 4
starUpdateTime: 1778257800
starUpdateTimeStr: "2026-05-09"
fairValue: 800
fairValueContent {
context: "Our fair value estimate for Tencent is HKD 800 per share. About 85% of our valuation comes from Tencent's core business, while the remaining 20% comes from its investments. Our valuation for the core business implies a 2025 P/E of 30 times. We discount the firm\'s free cash flows using...
updateTime: 1755138060
updateTimeStr: "2025-08-14"
}
economicMoatLabel: "Wide"
economicMoatContent {
context: "Tencent\'s wide moat is primarily based on network effects around its massive user base. In addition, Tencent possesses secondary moat sources like intangible assets, cost advantage, and switching costs. Given Tencent\'s proven ability to monetize its massive network of users through g...
updateTime: 1766457150
updateTimeStr: "2025-12-23"
}
uncertaintyLabel: "High"
uncertaintyContent {
context: "Our Morningstar Uncertainty Rating for Tencent is High due to regulatory risks and competitive intensity across its core businesses. \n\nIn payments, the 2017 rule that forced third-party providers to park customer reserves in non-interest-bearing central bank accounts--and the later c...
updateTime: 1766457180
updateTimeStr: "2025-12-23"
}
//...
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
GetResearchMorningstarReport(req);
説明
モーニングスター調査レポートの取得
パラメータ
message C2S
{
required Qot_Common.Security security = 1; // 銘柄
}
message Request
{
required C2S c2s = 1;
}
2
3
4
5
6
7
8
9
- 銘柄構造については Security を参照
- 戻り値
// 更新時刻付きテキスト内容
message StringWithUpdateTime {
optional string context = 1; // テキスト内容
optional int64 updateTime = 2; // 更新タイムスタンプ(秒)
optional string updateTimeStr = 3; // 更新時刻文字列、形式 YYYY-MM-DD、市場タイムゾーン
}
message S2C
{
optional Qot_Common.MorningstarRatingType ratingType = 1; // 評価タイプ(Qot_Common.MorningstarRatingType 参照)
optional int32 starRating = 2; // モーニングスタースター評価、値 1-5 スター
optional int64 starUpdateTime = 3; // スター評価更新タイムスタンプ(秒)
optional string starUpdateTimeStr = 4; // スター評価更新時刻文字列、形式 YYYY-MM-DD、市場タイムゾーン
optional double fairValue = 5; // 公正価値
optional StringWithUpdateTime fairValueContent = 6; // 公正価値分析テキストと更新時刻
optional string economicMoatLabel = 7; // 経済的優位性評価、例: Wide、Narrow、None
optional StringWithUpdateTime economicMoatContent = 8; // 経済的優位性分析テキストと更新時刻
optional string uncertaintyLabel = 9; // 不確実性評価、例: Low、Medium、High、Very High、Extreme
optional StringWithUpdateTime uncertaintyContent = 10; // 不確実性分析テキストと更新時刻
optional string financialHealthLabel = 11; // 財務健全性評価
optional StringWithUpdateTime financialHealthContent = 12; // 財務健全性分析テキストと更新時刻
repeated string analystReportByLine = 13; // アナリスト署名リスト、例: ["William Kerwin, CFA"]
optional int64 analystReportUpdateTime = 14; // アナリストレポート更新タイムスタンプ(秒)
optional string analystReportUpdateTimeStr = 15; // アナリストレポート更新時刻文字列、形式 YYYY-MM-DD、市場タイムゾーン
repeated StringWithUpdateTime bullSay = 16; // 強気の根拠リスト
repeated StringWithUpdateTime bearSay = 17; // 弱気の根拠リスト
optional string capitalAllocationLabel = 18; // 資本配分評価
optional StringWithUpdateTime capitalAllocationContent = 19; // 資本配分分析テキストと更新時刻
optional StringWithUpdateTime analystNoteTitle = 20; // アナリストノートのタイトルと更新時刻
optional StringWithUpdateTime analystNoteContent = 21; // アナリストノートの内容テキストと更新時刻
optional StringWithUpdateTime investmentThesisContent = 22; // 投資論点テキストと更新時刻
optional StringWithUpdateTime fundamentalsContent = 23; // ファンダメンタルズレポートテキストと更新時刻
optional StringWithUpdateTime valuationContent = 24; // バリュエーションレポートテキストと更新時刻
optional string pdfUrl = 25; // PDF レポートダウンロード URL
}
message Response
{
required int32 retType = 1 [default = -400]; // 返却結果、Common.RetType 参照
optional string retMsg = 2; // 返却結果説明
optional int32 errCode = 3; // エラーコード
optional S2C s2c = 4;
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
- API 呼び出し結果については RetType を参照
- MorningstarRatingType:0=Unknown、1=Quantitative、2=Qualitative、MorningstarRatingType を参照
- Example
import mmWebsocket from "moomoo-api";
import { Common, Qot_Common } from "moomoo-api/proto";
import beautify from "js-beautify";
function QotGetResearchMorningstarReport(){
const { RetType } = Common
const { QotMarket } = Qot_Common
let [addr, port, enable_ssl, key] = ["127.0.0.1", 33333, false, '7522027ccf5a06b1'];
let websocket = new mmWebsocket();
websocket.onlogin = (ret, msg)=>{
if (ret) {
const req = {
c2s: {
security: {
market: QotMarket.QotMarket_HK_Security,
code: "00700",
},
},
};
websocket.GetResearchMorningstarReport(req)
.then((res) => {
let { errCode, retMsg, retType,s2c } = res
console.log("GetResearchMorningstarReport: errCode %d, retMsg %s, retType %d", errCode, retMsg, retType);
if(retType == RetType.RetType_Succeed){
let data = beautify(JSON.stringify(s2c), {
indent_size: 2,
space_in_empty_paren: true,
});
console.log(data);
}
})
.catch((error) => {
console.log("error:", error);
});
} else {
console.log("error", msg);
}
};
websocket.start(addr, port, enable_ssl, key);
setTimeout(()=>{
websocket.stop();
console.log("stop");
}, 5000);
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
- Output
GetResearchMorningstarReport: errCode 0, retMsg , retType 0
{
"ratingType": "MorningstarRatingType_Qualitative",
"starRating": 4,
"starUpdateTime": "1778257800",
"starUpdateTimeStr": "2026-05-09",
"fairValue": 800,
"fairValueContent": {
"context": "Our fair value estimate for Tencent is HKD 800 per share. About 85% of our valuation comes from Tencent's core business, while the remaining 20% comes from its investments. Our valuation for the core business implies a 2025 P/E of 30 times. We discount the firm's free cash flows usin...
"updateTime": "1755138060",
"updateTimeStr": "2025-08-14"
},
"economicMoatLabel": "Wide",
"economicMoatContent": {
"context": "Tencent's wide moat is primarily based on network effects around its massive user base. In addition, Tencent possesses secondary moat sources like intangible assets, cost advantage, and switching costs. Given Tencent's proven ability to monetize its massive network of users through g...
"updateTime": "1766457150",
"updateTimeStr": "2025-12-23"
},
"uncertaintyLabel": "High",
"uncertaintyContent": {
"context": "Our Morningstar Uncertainty Rating for Tencent is High due to regulatory risks and competitive intensity across its core businesses. \n\nIn payments, the 2017 rule that forced third-party providers to park customer reserves in non-interest-bearing central bank accounts--and the later...
"updateTime": "1766457180",
"updateTimeStr": "2025-12-23"
},
//...
}
stop
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
制限事項
- 30 秒以内に最大 30 回リクエストできます。
- 普通株および REIT に対応しています。