mirror of
https://github.com/microsoft/qlib.git
synced 2026-07-12 23:36:54 +08:00
Fix the Errors/Warnings when building Qlib's documentation (#1381)
* Fix the Errors/Warnings when building Qlib's documentation * Fix * Fix * Empty * Test CI * Add doc compiling checking to CI * Fix * Tries to be consistent with Makefile Co-authored-by: you-n-g <you-n-g@users.noreply.github.com>
This commit is contained in:
@@ -96,9 +96,11 @@ def indicator_analysis(df, method="mean"):
|
||||
index: Index(datetime)
|
||||
method : str, optional
|
||||
statistics method of pa/ffr, by default "mean"
|
||||
|
||||
- if method is 'mean', count the mean statistical value of each trade indicator
|
||||
- if method is 'amount_weighted', count the deal_amount weighted mean statistical value of each trade indicator
|
||||
- if method is 'value_weighted', count the value weighted mean statistical value of each trade indicator
|
||||
|
||||
Note: statistics method of pos is always "mean"
|
||||
|
||||
Returns
|
||||
@@ -154,6 +156,7 @@ def backtest_daily(
|
||||
E.g.
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
# dict
|
||||
strategy = {
|
||||
"class": "TopkDropoutStrategy",
|
||||
@@ -180,7 +183,6 @@ def backtest_daily(
|
||||
# 3) specify module path with class name
|
||||
# - "a.b.c.ClassName" getattr(<a.b.c.module>, "ClassName")() will be used.
|
||||
|
||||
|
||||
executor : Union[str, dict, BaseExecutor]
|
||||
for initializing the outermost executor.
|
||||
benchmark: str
|
||||
|
||||
@@ -276,8 +276,8 @@ def model_performance_graph(
|
||||
) -> [list, tuple]:
|
||||
"""Model performance
|
||||
|
||||
:param pred_label: index is **pd.MultiIndex**, index name is **[instrument, datetime]**; columns names is **[score,
|
||||
label]**. It is usually same as the label of model training(e.g. "Ref($close, -2)/Ref($close, -1) - 1").
|
||||
:param pred_label: index is **pd.MultiIndex**, index name is **[instrument, datetime]**; columns names is **[score, label]**.
|
||||
It is usually same as the label of model training(e.g. "Ref($close, -2)/Ref($close, -1) - 1").
|
||||
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
@@ -218,6 +218,7 @@ def cumulative_return_graph(
|
||||
|
||||
|
||||
Graph desc:
|
||||
|
||||
- Axis X: Trading day.
|
||||
- Axis Y:
|
||||
- Above axis Y: `(((Ref($close, -1)/$close - 1) * weight).sum() / weight.sum()).cumsum()`.
|
||||
@@ -242,7 +243,8 @@ def cumulative_return_graph(
|
||||
|
||||
|
||||
:param label_data: `D.features` result; index is `pd.MultiIndex`, index name is [`instrument`, `datetime`]; columns names is [`label`].
|
||||
**The label T is the change from T to T+1**, it is recommended to use ``close``, example: `D.features(D.instruments('csi500'), ['Ref($close, -1)/$close-1'])`
|
||||
|
||||
**The label T is the change from T to T+1**, it is recommended to use ``close``, example: `D.features(D.instruments('csi500'), ['Ref($close, -1)/$close-1'])`
|
||||
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
@@ -99,7 +99,8 @@ def rank_label_graph(
|
||||
|
||||
:param position: position data; **qlib.backtest.backtest** result.
|
||||
:param label_data: **D.features** result; index is **pd.MultiIndex**, index name is **[instrument, datetime]**; columns names is **[label]**.
|
||||
**The label T is the change from T to T+1**, it is recommended to use ``close``, example: `D.features(D.instruments('csi500'), ['Ref($close, -1)/$close-1'])`.
|
||||
|
||||
**The label T is the change from T to T+1**, it is recommended to use ``close``, example: `D.features(D.instruments('csi500'), ['Ref($close, -1)/$close-1'])`.
|
||||
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
@@ -25,12 +25,14 @@ class SoftTopkStrategy(WeightStrategyBase):
|
||||
common_infra=None,
|
||||
**kwargs,
|
||||
):
|
||||
"""Parameter
|
||||
"""
|
||||
Parameters
|
||||
----------
|
||||
topk : int
|
||||
top-N stocks to buy
|
||||
risk_degree : float
|
||||
position percentage of total value
|
||||
buy_method :
|
||||
position percentage of total value buy_method:
|
||||
|
||||
rank_fill: assign the weight stocks that rank high first(1/topk max)
|
||||
average_fill: assign the weight to the stocks rank high averagely.
|
||||
"""
|
||||
@@ -51,12 +53,19 @@ class SoftTopkStrategy(WeightStrategyBase):
|
||||
return self.risk_degree
|
||||
|
||||
def generate_target_weight_position(self, score, current, trade_start_time, trade_end_time):
|
||||
"""Parameter:
|
||||
score : pred score for this trade date, pd.Series, index is stock_id, contain 'score' column
|
||||
current : current position, use Position() class
|
||||
trade_date : trade date
|
||||
generate target position from score for this date and the current position
|
||||
The cache is not considered in the position
|
||||
"""
|
||||
Parameters
|
||||
----------
|
||||
score:
|
||||
pred score for this trade date, pd.Series, index is stock_id, contain 'score' column
|
||||
current:
|
||||
current position, use Position() class
|
||||
trade_date:
|
||||
trade date
|
||||
|
||||
generate target position from score for this date and the current position
|
||||
|
||||
The cache is not considered in the position
|
||||
"""
|
||||
# TODO:
|
||||
# If the current stock list is more than topk(eg. The weights are modified
|
||||
|
||||
@@ -103,9 +103,13 @@ class TopkDropoutStrategy(BaseSignalStrategy):
|
||||
before sell stock , will check current.get_stock_count(order.stock_id) >= self.hold_thresh.
|
||||
only_tradable : bool
|
||||
will the strategy only consider the tradable stock when buying and selling.
|
||||
|
||||
if only_tradable:
|
||||
|
||||
strategy will make decision with the tradable state of the stock info and avoid buy and sell them.
|
||||
|
||||
else:
|
||||
|
||||
strategy will make buy sell decision without checking the tradable state of the stock.
|
||||
"""
|
||||
super().__init__(**kwargs)
|
||||
@@ -287,9 +291,11 @@ class WeightStrategyBase(BaseSignalStrategy):
|
||||
the decision of the strategy will base on the given signal
|
||||
trade_exchange : Exchange
|
||||
exchange that provides market info, used to deal order and generate report
|
||||
|
||||
- If `trade_exchange` is None, self.trade_exchange will be set with common_infra
|
||||
- It allowes different trade_exchanges is used in different executions.
|
||||
- For example:
|
||||
|
||||
- In daily execution, both daily exchange and minutely are usable, but the daily exchange is recommended because it run faster.
|
||||
- In minutely execution, the daily exchange is not usable, only the minutely exchange is recommended.
|
||||
"""
|
||||
@@ -303,6 +309,7 @@ class WeightStrategyBase(BaseSignalStrategy):
|
||||
def generate_target_weight_position(self, score, current, trade_start_time, trade_end_time):
|
||||
"""
|
||||
Generate target position from score for this date and the current position.The cash is not considered in the position
|
||||
|
||||
Parameters
|
||||
-----------
|
||||
score : pd.Series
|
||||
@@ -355,12 +362,14 @@ class EnhancedIndexingStrategy(WeightStrategyBase):
|
||||
|
||||
Users need to prepare their risk model data like below:
|
||||
|
||||
├── /path/to/riskmodel
|
||||
├──── 20210101
|
||||
├────── factor_exp.{csv|pkl|h5}
|
||||
├────── factor_cov.{csv|pkl|h5}
|
||||
├────── specific_risk.{csv|pkl|h5}
|
||||
├────── blacklist.{csv|pkl|h5} # optional
|
||||
.. code-block:: text
|
||||
|
||||
├── /path/to/riskmodel
|
||||
├──── 20210101
|
||||
├────── factor_exp.{csv|pkl|h5}
|
||||
├────── factor_cov.{csv|pkl|h5}
|
||||
├────── specific_risk.{csv|pkl|h5}
|
||||
├────── blacklist.{csv|pkl|h5} # optional
|
||||
|
||||
The risk model data can be obtained from risk data provider. You can also use
|
||||
`qlib.model.riskmodel.structured.StructuredCovEstimator` to prepare these data.
|
||||
|
||||
Reference in New Issue
Block a user