fixed OLS model
This commit is contained in:
parent
0423a7d34f
commit
7d137a1a0e
1
.vscode/extensions.json
vendored
1
.vscode/extensions.json
vendored
@ -3,7 +3,6 @@
|
|||||||
"ms-python.python",
|
"ms-python.python",
|
||||||
"ms-python.pylance",
|
"ms-python.pylance",
|
||||||
"ms-python.black-formatter",
|
"ms-python.black-formatter",
|
||||||
"ms-python.flake8",
|
|
||||||
"ms-python.mypy-type-checker",
|
"ms-python.mypy-type-checker",
|
||||||
"ms-python.isort"
|
"ms-python.isort"
|
||||||
]
|
]
|
||||||
|
|||||||
15
.vscode/pairs_trading.code-workspace
vendored
15
.vscode/pairs_trading.code-workspace
vendored
@ -1,13 +1,8 @@
|
|||||||
{
|
{
|
||||||
"folders": [
|
"folders": [
|
||||||
{
|
{
|
||||||
"path": ".."
|
"path": ".."
|
||||||
},
|
}
|
||||||
{
|
],
|
||||||
"path": "../../cvttpy_base"
|
"settings": {}
|
||||||
}
|
|
||||||
],
|
|
||||||
"settings": {
|
|
||||||
"workbench.colorTheme": "Dracula Theme"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
@ -3,20 +3,21 @@ from __future__ import annotations
|
|||||||
from functools import partial
|
from functools import partial
|
||||||
from typing import Dict, List
|
from typing import Dict, List
|
||||||
|
|
||||||
|
from cvttpy_tools.settings.cvtt_types import JsonDictT
|
||||||
|
from cvttpy_tools.tools.app import App
|
||||||
|
from cvttpy_tools.tools.base import NamedObject
|
||||||
|
from cvttpy_tools.tools.config import CvttAppConfig
|
||||||
|
from cvttpy_tools.tools.logger import Log
|
||||||
|
from pt_strategy.live.live_strategy import PtLiveStrategy
|
||||||
|
from pt_strategy.live.pricer_md_client import PtMktDataClient
|
||||||
|
from pt_strategy.live.ti_sender import TradingInstructionsSender
|
||||||
|
|
||||||
# import sys
|
# import sys
|
||||||
# print("PYTHONPATH directories:")
|
# print("PYTHONPATH directories:")
|
||||||
# for path in sys.path:
|
# for path in sys.path:
|
||||||
# print(path)
|
# print(path)
|
||||||
|
|
||||||
from cvttpy_base.tools.app import App
|
|
||||||
from cvttpy_base.tools.base import NamedObject
|
|
||||||
from cvttpy_base.tools.logger import Log
|
|
||||||
from cvttpy_base.tools.config import CvttAppConfig
|
|
||||||
from cvttpy_base.settings.cvtt_types import JsonDictT
|
|
||||||
|
|
||||||
from pt_strategy.live.live_strategy import PtLiveStrategy
|
|
||||||
from pt_strategy.live.pricer_md_client import PtMktDataClient
|
|
||||||
from pt_strategy.live.ti_sender import TradingInstructionsSender
|
|
||||||
|
|
||||||
# from cvtt_client.mkt_data import (CvttPricerWebSockClient,
|
# from cvtt_client.mkt_data import (CvttPricerWebSockClient,
|
||||||
# CvttPricesSubscription, MessageTypeT,
|
# CvttPricesSubscription, MessageTypeT,
|
||||||
|
|||||||
@ -1,21 +1,17 @@
|
|||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
|
|
||||||
import argparse
|
|
||||||
from ast import Sub
|
|
||||||
import asyncio
|
import asyncio
|
||||||
from functools import partial
|
|
||||||
import json
|
import json
|
||||||
import logging
|
|
||||||
import uuid
|
import uuid
|
||||||
from dataclasses import dataclass
|
from dataclasses import dataclass
|
||||||
from typing import Callable, Coroutine, Dict, List, Optional
|
from functools import partial
|
||||||
|
from typing import Callable, Coroutine, Dict, Optional
|
||||||
|
|
||||||
import websockets
|
import websockets
|
||||||
|
from cvttpy_tools.settings.cvtt_types import JsonDictT
|
||||||
|
from cvttpy_tools.tools.logger import Log
|
||||||
from websockets.asyncio.client import ClientConnection
|
from websockets.asyncio.client import ClientConnection
|
||||||
|
|
||||||
from cvttpy_base.settings.cvtt_types import JsonDictT
|
|
||||||
from cvttpy_base.tools.logger import Log
|
|
||||||
|
|
||||||
MessageTypeT = str
|
MessageTypeT = str
|
||||||
SubscriptionIdT = str
|
SubscriptionIdT = str
|
||||||
MessageT = Dict
|
MessageT = Dict
|
||||||
|
|||||||
@ -1,14 +1,12 @@
|
|||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
from dataclasses import dataclass
|
from dataclasses import dataclass
|
||||||
from functools import partial
|
|
||||||
from typing import Any, Dict, List, Optional
|
from typing import Any, Dict, List, Optional
|
||||||
|
|
||||||
import pandas as pd
|
import pandas as pd
|
||||||
from cvttpy_base.settings.cvtt_types import JsonDictT
|
from cvttpy_tools.settings.cvtt_types import JsonDictT
|
||||||
from cvttpy_base.tools.base import NamedObject
|
from cvttpy_tools.tools.base import NamedObject
|
||||||
from cvttpy_base.tools.logger import Log
|
from cvttpy_tools.tools.logger import Log
|
||||||
|
|
||||||
from pt_strategy.live.ti_sender import TradingInstructionsSender
|
from pt_strategy.live.ti_sender import TradingInstructionsSender
|
||||||
from pt_strategy.model_data_policy import ModelDataPolicy
|
from pt_strategy.model_data_policy import ModelDataPolicy
|
||||||
from pt_strategy.pt_market_data import RealTimeMarketData
|
from pt_strategy.pt_market_data import RealTimeMarketData
|
||||||
|
|||||||
@ -1,21 +1,16 @@
|
|||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
from functools import partial
|
from functools import partial
|
||||||
from typing import Any, Dict, List, Optional
|
from typing import Dict, List
|
||||||
|
|
||||||
import pandas as pd
|
from cvtt_client.mkt_data import (CvttPricerWebSockClient,
|
||||||
from cvttpy_base.tools.app import App
|
CvttPricesSubscription, MessageTypeT,
|
||||||
from cvttpy_base.tools.config import Config
|
SubscriptionIdT)
|
||||||
from cvttpy_base.settings.cvtt_types import JsonDictT
|
from cvttpy_tools.settings.cvtt_types import JsonDictT
|
||||||
from cvttpy_base.tools.base import NamedObject
|
from cvttpy_tools.tools.app import App
|
||||||
from cvttpy_base.tools.logger import Log
|
from cvttpy_tools.tools.base import NamedObject
|
||||||
|
from cvttpy_tools.tools.config import Config
|
||||||
from cvtt_client.mkt_data import (
|
from cvttpy_tools.tools.logger import Log
|
||||||
CvttPricerWebSockClient,
|
|
||||||
CvttPricesSubscription,
|
|
||||||
MessageTypeT,
|
|
||||||
SubscriptionIdT,
|
|
||||||
)
|
|
||||||
from pt_strategy.live.live_strategy import PtLiveStrategy
|
from pt_strategy.live.live_strategy import PtLiveStrategy
|
||||||
from pt_strategy.trading_pair import TradingPair
|
from pt_strategy.trading_pair import TradingPair
|
||||||
|
|
||||||
|
|||||||
@ -1,14 +1,15 @@
|
|||||||
from enum import Enum
|
|
||||||
from typing import Dict, Any, Tuple
|
|
||||||
import time
|
import time
|
||||||
|
from enum import Enum
|
||||||
|
from typing import Tuple
|
||||||
|
|
||||||
# import aiohttp
|
# import aiohttp
|
||||||
from cvttpy_base.tools.app import App
|
from cvttpy_tools.tools.app import App
|
||||||
from cvttpy_base.tools.base import NamedObject
|
from cvttpy_tools.tools.base import NamedObject
|
||||||
from cvttpy_base.tools.config import Config
|
from cvttpy_tools.tools.config import Config
|
||||||
from cvttpy_base.tools.logger import Log
|
from cvttpy_tools.tools.logger import Log
|
||||||
from cvttpy_base.tools.web.rest_client import REST_RequestProcessor
|
from cvttpy_tools.tools.timer import Timer
|
||||||
from cvttpy_base.tools.timeutils import NanoPerSec
|
from cvttpy_tools.tools.timeutils import NanoPerSec
|
||||||
from cvttpy_base.tools.timer import Timer
|
from cvttpy_tools.tools.web.rest_client import REST_RequestProcessor
|
||||||
|
|
||||||
|
|
||||||
class TradingInstructionsSender(NamedObject):
|
class TradingInstructionsSender(NamedObject):
|
||||||
|
|||||||
@ -11,7 +11,7 @@ from pt_strategy.trading_pair import TradingPair
|
|||||||
|
|
||||||
|
|
||||||
class OLSModel(PairsTradingModel):
|
class OLSModel(PairsTradingModel):
|
||||||
zscore_model_: Optional[sm.regression.linear_model.RegressionResultsWrapper]
|
model_: Optional[sm.regression.linear_model.RegressionResultsWrapper]
|
||||||
pair_predict_result_: Optional[pd.DataFrame]
|
pair_predict_result_: Optional[pd.DataFrame]
|
||||||
zscore_df_: Optional[pd.DataFrame]
|
zscore_df_: Optional[pd.DataFrame]
|
||||||
|
|
||||||
@ -42,11 +42,13 @@ class OLSModel(PairsTradingModel):
|
|||||||
)
|
)
|
||||||
|
|
||||||
X = sm.add_constant(symbol_b_px_series)
|
X = sm.add_constant(symbol_b_px_series)
|
||||||
self.zscore_model_ = sm.OLS(symbol_a_px_series, X).fit()
|
self.model_ = sm.OLS(symbol_a_px_series, X).fit()
|
||||||
assert self.zscore_model_ is not None
|
assert self.model_ is not None
|
||||||
hedge_ratio = self.zscore_model_.params.iloc[1]
|
|
||||||
|
|
||||||
spread = symbol_a_px_series - hedge_ratio * symbol_b_px_series
|
# alternate way would be to use models residuals (will give identical results)
|
||||||
|
# alpha, beta = self.model_.params
|
||||||
|
# spread = symbol_a_px_series - (alpha + beta * symbol_b_px_series)
|
||||||
|
spread = self.model_.resid
|
||||||
return pd.DataFrame((spread - spread.mean()) / spread.std())
|
return pd.DataFrame((spread - spread.mean()) / spread.std())
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -1,12 +1,11 @@
|
|||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
from typing import Any, Dict, List, Optional
|
from typing import Any, Dict, List, Optional
|
||||||
|
|
||||||
import pandas as pd
|
import pandas as pd
|
||||||
|
from cvttpy_tools.settings.cvtt_types import JsonDictT
|
||||||
from cvttpy_base.settings.cvtt_types import JsonDictT
|
|
||||||
|
|
||||||
from tools.data_loader import load_market_data
|
from tools.data_loader import load_market_data
|
||||||
from pt_strategy.trading_pair import TradingPair
|
|
||||||
|
|
||||||
class PtMarketData():
|
class PtMarketData():
|
||||||
config_: Dict[str, Any]
|
config_: Dict[str, Any]
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user