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