Query where condition take from the list of value
Something like this:

SELECT 
    DISTINCT (
        SELECT ForeignCurrencyBal
        FROM [InsightWarehouse].[dbo].[v_Account] AS subA
            JOIN (
                SELECT TOP (1) dt
                FROM (
                    VALUES
                        ('2019-02-01')
                    ,   ('2019-01-31')
                    --,etc..
                )d(dt)
                WHERE d.dt &lt; STMT.MIS_DATE
                ORDER BY d.dt DESC
            ) x ON x.dt = BusinessDate
        WHERE subA.AccountNum = STMT.ACCOUNT_NUMBER
    ) AS Balance,

    ACCOUNT_NUMBER,
    CASE WHEN STMT.CRF_TYPE='CREDIT' THEN STMT.AMOUNT_LCY
        ELSE NULL
    END as 'CreditAmount',
    CASE WHEN STMT.CRF_TYPE='DEBIT' THEN STMT.AMOUNT_LCY
        ELSE  NULL
    END as 'DebitAmount',
    STMT.BOOKING_DATE,
    STMT.VALUE_DATE,

    CRF_TYPE

FROM [InsightLanding].[dbo].[v_STMT_ENTRY] AS STMT 
    LEFT JOIN [InsightWarehouse].[dbo].[v_Account] AS A ON a.AccountNum = STMT.ACCOUNT_NUMBER

WHERE STMT.MIS_DATE='2019-02-01'
    AND STMT.ACCOUNT_NUMBER='14498478'


UPD: Pay attention that your subquery has to return one row so perhaps you should use TOP (1) or some aggregation function to avoid possible errors.