Compare commits
4 Commits
v0.0.8
..
8ccebf81f5
| Author | SHA1 | Date | |
|---|---|---|---|
| 8ccebf81f5 | |||
| dc38176529 | |||
| 3f29717b64 | |||
| ecc1c1de5d |
@@ -0,0 +1,2 @@
|
|||||||
|
## 2026-02-09 (v0.0.9)
|
||||||
|
- related to the changes made in *cvttpy_tools 1.4.7*
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
0.0.9
|
||||||
@@ -13,19 +13,19 @@ from statsmodels.tsa.stattools import adfuller, coint # type: ignore
|
|||||||
from statsmodels.tsa.vector_ar.vecm import coint_johansen # type: ignore
|
from statsmodels.tsa.vector_ar.vecm import coint_johansen # type: ignore
|
||||||
|
|
||||||
|
|
||||||
from cvttpy_tools.app import App
|
from cvttpy_tools.base.app import App
|
||||||
from cvttpy_tools.base import NamedObject
|
from cvttpy_tools.base.base import NamedObject
|
||||||
from cvttpy_tools.config import Config, CvttAppConfig
|
from cvttpy_tools.base.config import Config, CvttAppConfig
|
||||||
from cvttpy_tools.logger import Log
|
from cvttpy_tools.base.logger import Log
|
||||||
from cvttpy_tools.timeutils import NanoPerSec, SecPerHour, current_nanoseconds
|
from cvttpy_tools.base.timeutils import NanoPerSec, SecPerHour, current_nanoseconds
|
||||||
from cvttpy_tools.web.rest_client import RESTSender
|
from cvttpy_tools.comm.web.rest_service import RestService
|
||||||
from cvttpy_tools.web.rest_service import RestService
|
|
||||||
|
|
||||||
from cvttpy_trading.trading.exchange_config import ExchangeAccounts
|
from cvttpy_trading.trading.exchange_config import ExchangeAccounts
|
||||||
from cvttpy_trading.trading.instrument import ExchangeInstrument
|
from cvttpy_trading.trading.instrument import ExchangeInstrument
|
||||||
from cvttpy_trading.trading.mkt_data.md_summary import MdTradesAggregate, MdSummary
|
from cvttpy_trading.trading.mkt_data.md_summary import MdTradesAggregate, MdSummary
|
||||||
|
|
||||||
from pairs_trading.apps.pair_selector.renderer import HtmlRenderer
|
from pairs_trading.apps.pair_selector.renderer import HtmlRenderer
|
||||||
|
from pairs_trading.lib.live.rest import RESTSender
|
||||||
|
|
||||||
|
|
||||||
@dataclass
|
@dataclass
|
||||||
@@ -3,9 +3,9 @@ from __future__ import annotations
|
|||||||
from typing import Any, Dict, List
|
from typing import Any, Dict, List
|
||||||
|
|
||||||
|
|
||||||
from cvttpy_tools.app import App
|
from cvttpy_tools.base.app import App
|
||||||
from cvttpy_tools.base import NamedObject
|
from cvttpy_tools.base.base import NamedObject
|
||||||
from cvttpy_tools.config import CvttAppConfig
|
from cvttpy_tools.base.config import CvttAppConfig
|
||||||
|
|
||||||
|
|
||||||
class HtmlRenderer(NamedObject):
|
class HtmlRenderer(NamedObject):
|
||||||
@@ -4,13 +4,13 @@ import asyncio
|
|||||||
from typing import Callable, Coroutine, Dict, List
|
from typing import Callable, Coroutine, Dict, List
|
||||||
import aiohttp.web as web
|
import aiohttp.web as web
|
||||||
|
|
||||||
from cvttpy_tools.app import App
|
from cvttpy_tools.base.app import App
|
||||||
from cvttpy_tools.config import Config
|
from cvttpy_tools.base.config import Config
|
||||||
from cvttpy_tools.base import NamedObject
|
from cvttpy_tools.base.base import NamedObject
|
||||||
from cvttpy_tools.config import CvttAppConfig
|
from cvttpy_tools.base.config import CvttAppConfig
|
||||||
from cvttpy_tools.logger import Log
|
from cvttpy_tools.base.logger import Log
|
||||||
from cvttpy_tools.settings.cvtt_types import BookIdT
|
from cvttpy_tools.settings.cvtt_types import BookIdT
|
||||||
from cvttpy_tools.web.rest_service import RestService
|
from cvttpy_tools.comm.web.rest_service import RestService
|
||||||
|
|
||||||
# ---
|
# ---
|
||||||
from cvttpy_trading.trading.instrument import ExchangeInstrument
|
from cvttpy_trading.trading.instrument import ExchangeInstrument
|
||||||
@@ -5,19 +5,19 @@ from typing import Dict, Any, List, Optional, Set
|
|||||||
|
|
||||||
import requests
|
import requests
|
||||||
|
|
||||||
from cvttpy_tools.base import NamedObject
|
from cvttpy_tools.base.base import NamedObject
|
||||||
from cvttpy_tools.logger import Log
|
from cvttpy_tools.base.logger import Log
|
||||||
from cvttpy_tools.config import Config
|
from cvttpy_tools.base.config import Config
|
||||||
from cvttpy_tools.timer import Timer
|
from cvttpy_tools.base.timer import Timer
|
||||||
from cvttpy_tools.timeutils import NanosT, current_seconds
|
from cvttpy_tools.base.timeutils import NanosT, current_seconds
|
||||||
from cvttpy_tools.settings.cvtt_types import InstrumentIdT, IntervalSecT
|
from cvttpy_tools.settings.cvtt_types import InstrumentIdT, IntervalSecT
|
||||||
from cvttpy_tools.web.rest_client import RESTSender
|
|
||||||
# ---
|
# ---
|
||||||
from cvttpy_trading.trading.instrument import ExchangeInstrument
|
from cvttpy_trading.trading.instrument import ExchangeInstrument
|
||||||
from cvttpy_trading.trading.accounting.exch_account import ExchangeAccountNameT
|
from cvttpy_trading.trading.accounting.exch_account import ExchangeAccountNameT
|
||||||
from cvttpy_trading.trading.mkt_data.md_summary import MdTradesAggregate, MdSummary, MdSummaryCallbackT
|
from cvttpy_trading.trading.mkt_data.md_summary import MdTradesAggregate, MdSummary, MdSummaryCallbackT
|
||||||
from cvttpy_trading.trading.exchange_config import ExchangeAccounts
|
from cvttpy_trading.trading.exchange_config import ExchangeAccounts
|
||||||
# ---
|
# ---
|
||||||
|
from pairs_trading.lib.live.rest import RESTSender
|
||||||
|
|
||||||
|
|
||||||
# class MdSummary(HistMdBar):
|
# class MdSummary(HistMdBar):
|
||||||
@@ -1,14 +1,14 @@
|
|||||||
```python
|
|
||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
from typing import Dict
|
from typing import Dict, Optional
|
||||||
import time
|
import time
|
||||||
|
|
||||||
import requests
|
import requests
|
||||||
|
|
||||||
from cvttpy_tools.base import NamedObject
|
from cvttpy_tools.base.base import NamedObject
|
||||||
|
|
||||||
class RESTSender(NamedObject):
|
class RESTSender(NamedObject):
|
||||||
|
# Synchronous request sernder
|
||||||
session_: requests.Session
|
session_: requests.Session
|
||||||
base_url_: str
|
base_url_: str
|
||||||
|
|
||||||
@@ -26,35 +26,35 @@ class RESTSender(NamedObject):
|
|||||||
except requests.exceptions.RequestException:
|
except requests.exceptions.RequestException:
|
||||||
return False
|
return False
|
||||||
|
|
||||||
def send_post(self, endpoint: str, post_body: Dict) -> requests.Response:
|
def send_post(
|
||||||
|
self, endpoint: str, post_body: Dict, headers: Optional[Dict[str, str]] = None
|
||||||
while not self.is_ready():
|
) -> requests.Response:
|
||||||
print("Waiting for FrontGateway to start...")
|
|
||||||
time.sleep(5)
|
|
||||||
|
|
||||||
|
if not headers:
|
||||||
|
headers = {"Content-Type": "application/json"}
|
||||||
url = f"{self.base_url_}/{endpoint}"
|
url = f"{self.base_url_}/{endpoint}"
|
||||||
try:
|
try:
|
||||||
return self.session_.request(
|
return self.session_.request(
|
||||||
method="POST",
|
method="POST",
|
||||||
url=url,
|
url=url,
|
||||||
json=post_body,
|
json=post_body,
|
||||||
headers={"Content-Type": "application/json"},
|
headers=headers,
|
||||||
)
|
)
|
||||||
except requests.exceptions.RequestException as excpt:
|
except requests.exceptions.RequestException as excpt:
|
||||||
raise ConnectionError(
|
raise ConnectionError(
|
||||||
f"Failed to send status={excpt.response.status_code} {excpt.response.text}" # type: ignore
|
f"Failed to send status={excpt.response.status_code} {excpt.response.text}" # type: ignore
|
||||||
) from excpt
|
) from excpt
|
||||||
|
|
||||||
def send_get(self, endpoint: str) -> requests.Response:
|
def send_get(
|
||||||
while not self.is_ready():
|
self, endpoint: str, headers: Optional[Dict[str, str]] = None
|
||||||
print("Waiting for FrontGateway to start...")
|
) -> requests.Response:
|
||||||
time.sleep(5)
|
if not headers:
|
||||||
|
headers = {}
|
||||||
url = f"{self.base_url_}/{endpoint}"
|
url = f"{self.base_url_}/{endpoint}"
|
||||||
try:
|
try:
|
||||||
return self.session_.request(method="GET", url=url)
|
return self.session_.request(method="GET", url=url, headers=headers)
|
||||||
except requests.exceptions.RequestException as excpt:
|
except requests.exceptions.RequestException as excpt:
|
||||||
raise ConnectionError(
|
raise ConnectionError(
|
||||||
f"Failed to send status={excpt.response.status_code} {excpt.response.text}" # type: ignore
|
f"Failed to send status={excpt.response.status_code} {excpt.response.text}" # type: ignore
|
||||||
) from excpt
|
) from excpt
|
||||||
```
|
|
||||||
@@ -3,14 +3,14 @@ from enum import Enum
|
|||||||
import requests
|
import requests
|
||||||
|
|
||||||
# import aiohttp
|
# import aiohttp
|
||||||
from cvttpy_tools.base import NamedObject
|
from cvttpy_tools.base.base import NamedObject
|
||||||
from cvttpy_tools.config import Config
|
from cvttpy_tools.base.config import Config
|
||||||
from cvttpy_tools.logger import Log
|
from cvttpy_tools.base.logger import Log
|
||||||
from cvttpy_tools.web.rest_client import RESTSender
|
|
||||||
# ---
|
# ---
|
||||||
from cvttpy_trading.trading.trading_instructions import TradingInstructions
|
from cvttpy_trading.trading.trading_instructions import TradingInstructions
|
||||||
# ---
|
# ---
|
||||||
from pairs_trading.apps.pair_trader import PairTrader
|
from pairs_trading.apps.pair_trader import PairTrader
|
||||||
|
from pairs_trading.lib.live.rest import RESTSender
|
||||||
|
|
||||||
|
|
||||||
class TradingInstructionsSender(NamedObject):
|
class TradingInstructionsSender(NamedObject):
|
||||||
+5
-5
@@ -5,12 +5,12 @@ from typing import Any, Dict, List, Optional
|
|||||||
import pandas as pd
|
import pandas as pd
|
||||||
|
|
||||||
# ---
|
# ---
|
||||||
from cvttpy_tools.base import NamedObject
|
from cvttpy_tools.base.base import NamedObject
|
||||||
from cvttpy_tools.app import App
|
from cvttpy_tools.base.app import App
|
||||||
from cvttpy_tools.config import Config
|
from cvttpy_tools.base.config import Config
|
||||||
from cvttpy_tools.settings.cvtt_types import IntervalSecT
|
from cvttpy_tools.settings.cvtt_types import IntervalSecT
|
||||||
from cvttpy_tools.timeutils import NanosT, SecPerHour, current_nanoseconds, NanoPerSec, format_nanos_utc
|
from cvttpy_tools.base.timeutils import NanosT, SecPerHour, current_nanoseconds, NanoPerSec, format_nanos_utc
|
||||||
from cvttpy_tools.logger import Log
|
from cvttpy_tools.base.logger import Log
|
||||||
|
|
||||||
# ---
|
# ---
|
||||||
from cvttpy_trading.trading.instrument import ExchangeInstrument
|
from cvttpy_trading.trading.instrument import ExchangeInstrument
|
||||||
@@ -8,7 +8,7 @@ from typing import Any, Dict, Optional, cast
|
|||||||
import numpy as np
|
import numpy as np
|
||||||
import pandas as pd
|
import pandas as pd
|
||||||
|
|
||||||
from cvttpy_tools.config import Config
|
from cvttpy_tools.base.config import Config
|
||||||
|
|
||||||
@dataclass
|
@dataclass
|
||||||
class DataWindowParams:
|
class DataWindowParams:
|
||||||
@@ -6,8 +6,8 @@ from typing import Any, Dict, List, Optional
|
|||||||
import pandas as pd
|
import pandas as pd
|
||||||
|
|
||||||
# ---
|
# ---
|
||||||
from cvttpy_tools.base import NamedObject
|
from cvttpy_tools.base.base import NamedObject
|
||||||
from cvttpy_tools.config import Config
|
from cvttpy_tools.base.config import Config
|
||||||
from cvttpy_tools.settings.cvtt_types import JsonDictT
|
from cvttpy_tools.settings.cvtt_types import JsonDictT
|
||||||
|
|
||||||
# ---
|
# ---
|
||||||
@@ -4,7 +4,7 @@ from abc import ABC, abstractmethod
|
|||||||
from typing import Any, Dict, cast
|
from typing import Any, Dict, cast
|
||||||
|
|
||||||
# ---
|
# ---
|
||||||
from cvttpy_tools.config import Config
|
from cvttpy_tools.base.config import Config
|
||||||
# ---
|
# ---
|
||||||
from pairs_trading.lib.pt_strategy.prediction import Prediction
|
from pairs_trading.lib.pt_strategy.prediction import Prediction
|
||||||
from pairs_trading.lib.pt_strategy.trading_pair import TradingPair
|
from pairs_trading.lib.pt_strategy.trading_pair import TradingPair
|
||||||
@@ -4,7 +4,7 @@ from typing import Any, Dict, List, Optional, Tuple
|
|||||||
|
|
||||||
import pandas as pd
|
import pandas as pd
|
||||||
# ---
|
# ---
|
||||||
from cvttpy_tools.config import Config
|
from cvttpy_tools.base.config import Config
|
||||||
# ---
|
# ---
|
||||||
from cvttpy_trading.trading.instrument import ExchangeInstrument
|
from cvttpy_trading.trading.instrument import ExchangeInstrument
|
||||||
# ---
|
# ---
|
||||||
@@ -5,7 +5,7 @@ from typing import Any, Dict, List, Optional, Tuple
|
|||||||
|
|
||||||
import pandas as pd
|
import pandas as pd
|
||||||
# ---
|
# ---
|
||||||
from cvttpy_tools.config import Config
|
from cvttpy_tools.base.config import Config
|
||||||
# ---
|
# ---
|
||||||
from cvttpy_trading.trading.instrument import ExchangeInstrument
|
from cvttpy_trading.trading.instrument import ExchangeInstrument
|
||||||
# ---
|
# ---
|
||||||
@@ -8,8 +8,8 @@ from typing import Any, Dict, List
|
|||||||
import pandas as pd
|
import pandas as pd
|
||||||
|
|
||||||
# ---
|
# ---
|
||||||
from cvttpy_tools.base import NamedObject
|
from cvttpy_tools.base.base import NamedObject
|
||||||
from cvttpy_tools.config import Config
|
from cvttpy_tools.base.config import Config
|
||||||
# ---
|
# ---
|
||||||
from cvttpy_trading.trading.instrument import ExchangeInstrument
|
from cvttpy_trading.trading.instrument import ExchangeInstrument
|
||||||
# ---
|
# ---
|
||||||
@@ -2,7 +2,7 @@ import hjson
|
|||||||
from typing import Dict
|
from typing import Dict
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
# ---
|
# ---
|
||||||
from cvttpy_tools.config import Config
|
from cvttpy_tools.base.config import Config
|
||||||
|
|
||||||
|
|
||||||
def load_config(config_path: str) -> Config:
|
def load_config(config_path: str) -> Config:
|
||||||
@@ -2,7 +2,7 @@ import os
|
|||||||
import glob
|
import glob
|
||||||
from typing import Dict, List, Tuple
|
from typing import Dict, List, Tuple
|
||||||
# ---
|
# ---
|
||||||
from cvttpy_tools.config import Config
|
from cvttpy_tools.base.config import Config
|
||||||
# ---
|
# ---
|
||||||
from cvttpy_trading.trading.instrument import ExchangeInstrument
|
from cvttpy_trading.trading.instrument import ExchangeInstrument
|
||||||
|
|
||||||
@@ -4,9 +4,9 @@ import os
|
|||||||
from typing import Any, Dict, List, Tuple
|
from typing import Any, Dict, List, Tuple
|
||||||
|
|
||||||
# ---
|
# ---
|
||||||
from cvttpy_tools.app import App
|
from cvttpy_tools.base.app import App
|
||||||
from cvttpy_tools.base import NamedObject
|
from cvttpy_tools.base.base import NamedObject
|
||||||
from cvttpy_tools.config import CvttAppConfig
|
from cvttpy_tools.base.config import CvttAppConfig
|
||||||
|
|
||||||
# ---
|
# ---
|
||||||
from cvttpy_trading.trading.instrument import ExchangeInstrument
|
from cvttpy_trading.trading.instrument import ExchangeInstrument
|
||||||
+1
-1
@@ -182,7 +182,7 @@
|
|||||||
"import os\n",
|
"import os\n",
|
||||||
"import importlib\n",
|
"import importlib\n",
|
||||||
"\n",
|
"\n",
|
||||||
"from cvttpy_tools.config import Config\n",
|
"from cvttpy_tools.base.config import Config\n",
|
||||||
"\n",
|
"\n",
|
||||||
"def load_config_from_file() -> Optional[Dict]:\n",
|
"def load_config_from_file() -> Optional[Dict]:\n",
|
||||||
" global DB_TABLE_NAME\n",
|
" global DB_TABLE_NAME\n",
|
||||||
@@ -1,43 +0,0 @@
|
|||||||
{
|
|
||||||
"market_data_loading": {
|
|
||||||
"CRYPTO": {
|
|
||||||
"data_directory": "./data/crypto",
|
|
||||||
"db_table_name": "md_1min_bars",
|
|
||||||
"instrument_id_pfx": "PAIR-",
|
|
||||||
},
|
|
||||||
"EQUITY": {
|
|
||||||
"data_directory": "./data/equity",
|
|
||||||
"db_table_name": "md_1min_bars",
|
|
||||||
"instrument_id_pfx": "STOCK-",
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
# ====== Funding ======
|
|
||||||
"funding_per_pair": 2000.0,
|
|
||||||
# ====== Trading Parameters ======
|
|
||||||
"stat_model_price": "close",
|
|
||||||
"execution_price": {
|
|
||||||
"column": "vwap",
|
|
||||||
"shift": 1,
|
|
||||||
},
|
|
||||||
"dis-equilibrium_open_trshld": 2.0,
|
|
||||||
"dis-equilibrium_close_trshld": 0.5,
|
|
||||||
"training_size": 120,
|
|
||||||
"model_class": "pairs_trading.lib.pt_strategy.models.OLSModel",
|
|
||||||
"model_data_policy_class": "pairs_trading.lib.pt_strategy.model_data_policy.ExpandingWindowDataPolicy",
|
|
||||||
|
|
||||||
# ====== Stop Conditions ======
|
|
||||||
"stop_close_conditions": {
|
|
||||||
"profit": 2.0,
|
|
||||||
"loss": -0.5
|
|
||||||
}
|
|
||||||
|
|
||||||
# ====== End of Session Closeout ======
|
|
||||||
"close_outstanding_positions": true,
|
|
||||||
# "close_outstanding_positions": false,
|
|
||||||
"trading_hours": {
|
|
||||||
"timezone": "America/New_York",
|
|
||||||
"begin_session": "7:30:00",
|
|
||||||
"end_session": "18:30:00",
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,47 +0,0 @@
|
|||||||
{
|
|
||||||
"market_data_loading": {
|
|
||||||
"CRYPTO": {
|
|
||||||
"data_directory": "./data/crypto",
|
|
||||||
"db_table_name": "md_1min_bars",
|
|
||||||
"instrument_id_pfx": "PAIR-",
|
|
||||||
},
|
|
||||||
"EQUITY": {
|
|
||||||
"data_directory": "./data/equity",
|
|
||||||
"db_table_name": "md_1min_bars",
|
|
||||||
"instrument_id_pfx": "STOCK-",
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
# ====== Funding ======
|
|
||||||
"funding_per_pair": 2000.0,
|
|
||||||
# ====== Trading Parameters ======
|
|
||||||
"stat_model_price": "close",
|
|
||||||
"execution_price": {
|
|
||||||
"column": "vwap",
|
|
||||||
"shift": 1,
|
|
||||||
},
|
|
||||||
"dis-equilibrium_open_trshld": 1.75,
|
|
||||||
"dis-equilibrium_close_trshld": 0.9,
|
|
||||||
"model_class": "pairs_trading.lib.pt_strategy.models.OLSModel",
|
|
||||||
|
|
||||||
# "model_data_policy_class": "pairs_trading.lib.pt_strategy.model_data_policy.EGOptimizedWndDataPolicy",
|
|
||||||
# "model_data_policy_class": "pairs_trading.lib.pt_strategy.model_data_policy.ADFOptimizedWndDataPolicy",
|
|
||||||
"model_data_policy_class": "pairs_trading.lib.pt_strategy.model_data_policy.JohansenOptdWndDataPolicy",
|
|
||||||
"min_training_size": 60,
|
|
||||||
"max_training_size": 150,
|
|
||||||
|
|
||||||
# ====== Stop Conditions ======
|
|
||||||
"stop_close_conditions": {
|
|
||||||
"profit": 2.0,
|
|
||||||
"loss": -0.5
|
|
||||||
}
|
|
||||||
|
|
||||||
# ====== End of Session Closeout ======
|
|
||||||
"close_outstanding_positions": true,
|
|
||||||
# "close_outstanding_positions": false,
|
|
||||||
"trading_hours": {
|
|
||||||
"timezone": "America/New_York",
|
|
||||||
"begin_session": "7:30:00",
|
|
||||||
"end_session": "18:30:00",
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,47 +0,0 @@
|
|||||||
{
|
|
||||||
"market_data_loading": {
|
|
||||||
"CRYPTO": {
|
|
||||||
"data_directory": "./data/crypto",
|
|
||||||
"db_table_name": "md_1min_bars",
|
|
||||||
"instrument_id_pfx": "PAIR-",
|
|
||||||
},
|
|
||||||
"EQUITY": {
|
|
||||||
"data_directory": "./data/equity",
|
|
||||||
"db_table_name": "md_1min_bars",
|
|
||||||
"instrument_id_pfx": "STOCK-",
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
# ====== Funding ======
|
|
||||||
"funding_per_pair": 2000.0,
|
|
||||||
# ====== Trading Parameters ======
|
|
||||||
"stat_model_price": "close",
|
|
||||||
"execution_price": {
|
|
||||||
"column": "vwap",
|
|
||||||
"shift": 1,
|
|
||||||
},
|
|
||||||
"dis-equilibrium_open_trshld": 1.75,
|
|
||||||
"dis-equilibrium_close_trshld": 0.9,
|
|
||||||
"model_class": "pairs_trading.lib.pt_strategy.models.OLSModel",
|
|
||||||
|
|
||||||
"training_size": 120,
|
|
||||||
"model_data_policy_class": "pairs_trading.lib.pt_strategy.model_data_policy.RollingWindowDataPolicy",
|
|
||||||
# "model_data_policy_class": "pairs_trading.lib.pt_strategy.model_data_policy.OptimizedWindowDataPolicy",
|
|
||||||
# "min_training_size": 60,
|
|
||||||
# "max_training_size": 150,
|
|
||||||
|
|
||||||
# ====== Stop Conditions ======
|
|
||||||
"stop_close_conditions": {
|
|
||||||
"profit": 2.0,
|
|
||||||
"loss": -0.5
|
|
||||||
}
|
|
||||||
|
|
||||||
# ====== End of Session Closeout ======
|
|
||||||
"close_outstanding_positions": true,
|
|
||||||
# "close_outstanding_positions": false,
|
|
||||||
"trading_hours": {
|
|
||||||
"timezone": "America/New_York",
|
|
||||||
"begin_session": "7:30:00",
|
|
||||||
"end_session": "18:30:00",
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,48 +0,0 @@
|
|||||||
{
|
|
||||||
"market_data_loading": {
|
|
||||||
"CRYPTO": {
|
|
||||||
"data_directory": "./data/crypto",
|
|
||||||
"db_table_name": "md_1min_bars",
|
|
||||||
"instrument_id_pfx": "PAIR-",
|
|
||||||
},
|
|
||||||
"EQUITY": {
|
|
||||||
"data_directory": "./data/equity",
|
|
||||||
"db_table_name": "md_1min_bars",
|
|
||||||
"instrument_id_pfx": "STOCK-",
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
# ====== Funding ======
|
|
||||||
"funding_per_pair": 2000.0,
|
|
||||||
|
|
||||||
# ====== Trading Parameters ======
|
|
||||||
"stat_model_price": "close", # "vwap"
|
|
||||||
"execution_price": {
|
|
||||||
"column": "vwap",
|
|
||||||
"shift": 1,
|
|
||||||
},
|
|
||||||
"dis-equilibrium_open_trshld": 1.75,
|
|
||||||
"dis-equilibrium_close_trshld": 1.0,
|
|
||||||
"model_class": "pairs_trading.lib.pt_strategy.models.VECMModel",
|
|
||||||
|
|
||||||
"training_size": 120,
|
|
||||||
"model_data_policy_class": "pairs_trading.lib.pt_strategy.model_data_policy.RollingWindowDataPolicy",
|
|
||||||
# "model_data_policy_class": "pairs_trading.lib.pt_strategy.model_data_policy.OptimizedWindowDataPolicy",
|
|
||||||
# "min_training_size": 60,
|
|
||||||
# "max_training_size": 150,
|
|
||||||
|
|
||||||
# ====== Stop Conditions ======
|
|
||||||
"stop_close_conditions": {
|
|
||||||
"profit": 2.0,
|
|
||||||
"loss": -0.5
|
|
||||||
}
|
|
||||||
|
|
||||||
# ====== End of Session Closeout ======
|
|
||||||
"close_outstanding_positions": true,
|
|
||||||
# "close_outstanding_positions": false,
|
|
||||||
"trading_hours": {
|
|
||||||
"timezone": "America/New_York",
|
|
||||||
"begin_session": "7:30:00",
|
|
||||||
"end_session": "18:30:00",
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Reference in New Issue
Block a user